From 5cbfece8c45c5e5da126a6a2a63005e9a90a83aa Mon Sep 17 00:00:00 2001 From: Chris Taylor Date: Fri, 24 Dec 2010 12:34:30 +0800 Subject: [PATCH] Copy some editor stuff from d1x-rebirth to d2x-rebirth, like use of the OS native cursor --- CHANGELOG.txt | 4 + d2x-rebirth.xcodeproj/project.pbxproj | 6 -- include/ui.h | 12 ++- main/editor/centers.c | 54 ++++-------- main/editor/editor.h | 2 +- main/editor/group.c | 10 +-- main/editor/medrobot.c | 2 + main/editor/medwall.c | 20 ++--- main/editor/mine.c | 4 +- main/editor/texpage.h | 6 ++ main/gamesave.c | 105 +++++++++++------------ main/gamesave.h | 3 - main/switch.c | 26 +++--- main/switch.h | 2 +- ui/button.c | 6 ++ ui/checkbox.c | 2 +- ui/func.c | 110 ------------------------ ui/harderr.c | 18 ---- ui/keytrap.c | 13 ++- ui/medfunc.c | 115 -------------------------- ui/menubar.c | 2 +- ui/mouse.c | 47 +++++++---- ui/radio.c | 9 +- ui/ui.c | 6 ++ ui/window.c | 14 +++- 25 files changed, 195 insertions(+), 403 deletions(-) delete mode 100644 ui/func.c delete mode 100644 ui/harderr.c delete mode 100644 ui/medfunc.c diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 9c390379a..6678a84d0 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,9 @@ D2X-Rebirth Changelog +20101224 +-------- +d2x-rebirth.xcodeproj/project.pbxproj, include/ui.h, main/editor/centers.c, main/editor/editor.h, main/editor/group.c, main/editor/medrobot.c, main/editor/medwall.c, main/editor/mine.c, main/editor/texpage.h, main/gamesave.c, main/gamesave.h, main/switch.c, main/switch.h, ui/button.c, ui/checkbox.c, ui/func.c, ui/harderr.c, ui/keytrap.c, ui/medfunc.c, ui/menubar.c, ui/mouse.c, ui/radio.c, ui/ui.c, ui/window.c: Copy some editor stuff from d1x-rebirth to d2x-rebirth, like use of the OS native cursor + 20101223 -------- main/net_udp.c, main/net_udp.h: Reworked object sending/receiving to work without unnecessary type casting and a bit less error prone; Also increased UDP max packet size to 2048 so we can send 7 objects per frame; Fixded joinign games - GameID was sent for full game info, not lite info diff --git a/d2x-rebirth.xcodeproj/project.pbxproj b/d2x-rebirth.xcodeproj/project.pbxproj index 7ffeceeb5..04295642c 100755 --- a/d2x-rebirth.xcodeproj/project.pbxproj +++ b/d2x-rebirth.xcodeproj/project.pbxproj @@ -815,16 +815,13 @@ EBC651900890CEAE004FCAA3 /* button.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = button.c; sourceTree = ""; }; EBC651910890CEAE004FCAA3 /* checkbox.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = checkbox.c; sourceTree = ""; }; EBC651920890CEAE004FCAA3 /* file.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = file.c; sourceTree = ""; }; - EBC651930890CEAE004FCAA3 /* func.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = func.c; sourceTree = ""; }; EBC651940890CEAE004FCAA3 /* gadget.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = gadget.c; sourceTree = ""; }; - EBC651950890CEAE004FCAA3 /* harderr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = harderr.c; sourceTree = ""; }; EBC651960890CEAE004FCAA3 /* icon.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = icon.c; sourceTree = ""; }; EBC651970890CEAE004FCAA3 /* inputbox.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = inputbox.c; sourceTree = ""; }; EBC651980890CEAE004FCAA3 /* keypad.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = keypad.c; sourceTree = ""; }; EBC651990890CEAE004FCAA3 /* keypress.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = keypress.c; sourceTree = ""; }; EBC6519A0890CEAE004FCAA3 /* keytrap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = keytrap.c; sourceTree = ""; }; EBC6519B0890CEAE004FCAA3 /* listbox.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = listbox.c; sourceTree = ""; }; - EBC6519D0890CEAE004FCAA3 /* medfunc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = medfunc.c; sourceTree = ""; }; EBC6519E0890CEAE004FCAA3 /* menu.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; EBC6519F0890CEAE004FCAA3 /* menubar.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = menubar.c; sourceTree = ""; }; EBC651A00890CEAE004FCAA3 /* message.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = message.c; sourceTree = ""; }; @@ -1494,16 +1491,13 @@ EBC651900890CEAE004FCAA3 /* button.c */, EBC651910890CEAE004FCAA3 /* checkbox.c */, EBC651920890CEAE004FCAA3 /* file.c */, - EBC651930890CEAE004FCAA3 /* func.c */, EBC651940890CEAE004FCAA3 /* gadget.c */, - EBC651950890CEAE004FCAA3 /* harderr.c */, EBC651960890CEAE004FCAA3 /* icon.c */, EBC651970890CEAE004FCAA3 /* inputbox.c */, EBC651980890CEAE004FCAA3 /* keypad.c */, EBC651990890CEAE004FCAA3 /* keypress.c */, EBC6519A0890CEAE004FCAA3 /* keytrap.c */, EBC6519B0890CEAE004FCAA3 /* listbox.c */, - EBC6519D0890CEAE004FCAA3 /* medfunc.c */, EBC6519E0890CEAE004FCAA3 /* menu.c */, EBC6519F0890CEAE004FCAA3 /* menubar.c */, EBC651A00890CEAE004FCAA3 /* message.c */, diff --git a/include/ui.h b/include/ui.h index 67371c59f..a1d3c2ea8 100644 --- a/include/ui.h +++ b/include/ui.h @@ -11,6 +11,12 @@ AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ +/* + * + * Header file for user interface + * + */ + #ifndef _UI_H #define _UI_H @@ -204,8 +210,10 @@ typedef struct { short b3_last_status; short bg_x, bg_y; short bg_saved; +#ifdef __MSDOS__ grs_bitmap * background; grs_bitmap * pointer; +#endif fix64 time_lastpressed; short moved; } UI_MOUSE; @@ -291,12 +299,12 @@ extern void ui_wprintf_at( UI_WINDOW * wnd, short x, short y, char * format, ... extern void ui_draw_radio( UI_GADGET_RADIO * radio ); extern UI_GADGET_RADIO * ui_add_gadget_radio( UI_WINDOW * wnd, short x, short y, short w, short h, short group, char * text ); extern void ui_radio_do( UI_GADGET_RADIO * radio, int keypress ); -extern void ui_radio_set_value(UI_GADGET_RADIO *radio, sbyte value); +extern void ui_radio_set_value(UI_GADGET_RADIO *radio, int value); extern void ui_draw_checkbox( UI_GADGET_CHECKBOX * checkbox ); extern UI_GADGET_CHECKBOX * ui_add_gadget_checkbox( UI_WINDOW * wnd, short x, short y, short w, short h, short group, char * text ); extern void ui_checkbox_do( UI_GADGET_CHECKBOX * checkbox, int keypress ); -extern void ui_checkbox_check(UI_GADGET_CHECKBOX * checkbox, sbyte check); +extern void ui_checkbox_check(UI_GADGET_CHECKBOX * checkbox, int check); extern UI_GADGET * ui_gadget_get_prev( UI_GADGET * gadget ); extern UI_GADGET * ui_gadget_get_next( UI_GADGET * gadget ); diff --git a/main/editor/centers.c b/main/editor/centers.c index c8fd13570..1af6aaaa3 100644 --- a/main/editor/centers.c +++ b/main/editor/centers.c @@ -53,7 +53,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. static UI_WINDOW *MainWindow = NULL; static UI_GADGET_BUTTON *QuitButton; static UI_GADGET_RADIO *CenterFlag[MAX_CENTER_TYPES]; -static UI_GADGET_CHECKBOX *RobotMatFlag[64]; // 2 ints = 64 bits +static UI_GADGET_CHECKBOX *RobotMatFlag[MAX_ROBOT_TYPES]; static int old_seg_num; @@ -94,7 +94,7 @@ int do_centers_dialog() CenterFlag[4] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "RobotCen" ); i += 24; // These are the checkboxes for each robot flag. - for (i=0; i < 64; i++) + for (i=0; ispecial < MAX_CENTER_TYPES); ui_radio_set_value(CenterFlag[Curseg2p->special], 1); // Read materialization center robot bit flags - for (i = 0; i < 2; i++) - { - robot_index = i * 32; - robot_flags = RobotCenters[Curseg2p->matcen_num].robot_flags[i]; - while (robot_flags) - { - ui_checkbox_check(RobotMatFlag[i], robot_flags & 1); - robot_flags >>= 1; - robot_index++; - } - } - + for (i = 0; i < N_robot_types; i++) + ui_checkbox_check(RobotMatFlag[i], RobotCenters[Curseg2p->matcen_num].robot_flags[i >= 32 ? 1 : 0] & (1 << (i % 32))); } //------------------------------------------------------------ @@ -168,26 +160,12 @@ void do_centers_window() } } - for (i = 0; i < 2; i++) + for (i = 0; i < N_robot_types; i++) { - robot_flags = RobotCenters[Curseg2p->matcen_num].robot_flags[i]; - - for (robot_index = 0; robot_index < 32; robot_index++) - { - if (RobotMatFlag[robot_index + i * 32]->flag == 1) - { - if (!(robot_flags & (1 << robot_index))) - { - robot_flags |= (1 << robot_index); - } - } - else if (robot_flags & 1 << robot_index) - { - robot_flags &= ~(1 << robot_index); - } - } - - RobotCenters[Curseg2p->matcen_num].robot_flags[i] = robot_flags; + if ( RobotMatFlag[i]->flag == 1 ) + RobotCenters[Curseg2p->matcen_num].robot_flags[i >= 32 ? 1 : 0] |= (1 << (i % 32)); + else + RobotCenters[Curseg2p->matcen_num].robot_flags[i >= 32 ? 1 : 0] &= ~(1 << (i % 32)); } //------------------------------------------------------------ diff --git a/main/editor/editor.h b/main/editor/editor.h index 161168a8e..aef4addf7 100644 --- a/main/editor/editor.h +++ b/main/editor/editor.h @@ -13,7 +13,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. /* * - * FIXME: put description here + * Header for editor functions, data strcutures, etc. * */ diff --git a/main/editor/group.c b/main/editor/group.c index 81222d86e..42b918293 100644 --- a/main/editor/group.c +++ b/main/editor/group.c @@ -1092,7 +1092,7 @@ int med_save_group( char *filename, short *vertex_ids, short *segment_ids, int n group_header.num_segments = num_segments; // Write the editor info - header_offset = cftell(SaveFile); + header_offset = PHYSFS_tell(SaveFile); PHYSFS_write( SaveFile, &group_header, sizeof(group_header), 1); //===================== SAVE EDITOR INFO ========================== @@ -1109,13 +1109,13 @@ int med_save_group( char *filename, short *vertex_ids, short *segment_ids, int n group_editor.Groupsegp = 0; group_editor.Groupside = Groupside[current_group]; - editor_offset = cftell(SaveFile); + editor_offset = PHYSFS_tell(SaveFile); PHYSFS_write( SaveFile, &group_editor, sizeof(group_editor), 1); //===================== SAVE VERTEX INFO ========================== - vertex_offset = cftell(SaveFile); + vertex_offset = PHYSFS_tell(SaveFile); for (i=0;i -1 ) { int behavior = Objects[Cur_object_index].ctype.ai_info.behavior; if ( !((behavior >= MIN_BEHAVIOR) && (behavior <= MAX_BEHAVIOR))) { diff --git a/main/editor/medwall.c b/main/editor/medwall.c index 22c0d0c98..173ed8024 100644 --- a/main/editor/medwall.c +++ b/main/editor/medwall.c @@ -426,14 +426,10 @@ void do_wall_window() ui_checkbox_check(DoorFlag[1], w->flags & WALL_DOOR_AUTO); ui_checkbox_check(DoorFlag[2], w->flags & WALL_ILLUSION_OFF); - if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_NONE) - ui_radio_set_value(KeyFlag[0], 1); - if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_BLUE) - ui_radio_set_value(KeyFlag[1], 1); - if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_RED) - ui_radio_set_value(KeyFlag[2], 1); - if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_GOLD) - ui_radio_set_value(KeyFlag[3], 1); + ui_radio_set_value(KeyFlag[0], w->keys & KEY_NONE); + ui_radio_set_value(KeyFlag[1], w->keys & KEY_BLUE); + ui_radio_set_value(KeyFlag[2], w->keys & KEY_RED); + ui_radio_set_value(KeyFlag[3], w->keys & KEY_GOLD); } } @@ -464,12 +460,8 @@ void do_wall_window() } else { for (i = 0; i < 2; i++) ui_checkbox_check(DoorFlag[i], 0); - for ( i=0; i < 4; i++ ) { - if ( KeyFlag[i]->flag == 1 ) { - KeyFlag[i]->flag = 0; - KeyFlag[i]->status = 1; - } - } + for ( i=0; i < 4; i++ ) + ui_radio_set_value(KeyFlag[i], 0); } if (Walls[Cursegp->sides[Curside].wall_num].type == WALL_ILLUSION) { diff --git a/main/editor/mine.c b/main/editor/mine.c index 425a99223..07ea96c65 100644 --- a/main/editor/mine.c +++ b/main/editor/mine.c @@ -43,7 +43,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define REMOVE_EXT(s) (*(strchr( (s), '.' ))='\0') int CreateDefaultNewSegment(); -int save_mine_data(CFILE * SaveFile); +int save_mine_data(PHYSFS_file * SaveFile); static char current_tmap_list[MAX_TEXTURES][13]; @@ -349,7 +349,7 @@ int med_save_mine(char * filename) // ----------------------------------------------------------------------------- // saves to an already-open file -int save_mine_data(CFILE * SaveFile) +int save_mine_data(PHYSFS_file * SaveFile) { int header_offset, editor_offset, vertex_offset, segment_offset, doors_offset, texture_offset, walls_offset, triggers_offset; //, links_offset; int newseg_verts_offset; diff --git a/main/editor/texpage.h b/main/editor/texpage.h index 36af97b1e..e63f03a79 100644 --- a/main/editor/texpage.h +++ b/main/editor/texpage.h @@ -11,6 +11,12 @@ AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ +/* + * + * Definitions for texpage.c + * + */ + #ifndef _TEXPAGE_H #define _TEXPAGE_H diff --git a/main/gamesave.c b/main/gamesave.c index 70b075a19..38e8f0705 100644 --- a/main/gamesave.c +++ b/main/gamesave.c @@ -875,15 +875,13 @@ int load_game_data(CFILE *LoadFile) //==================== READ TRIGGER INFO ========================== - -// for MACINTOSH -- assume all triggers >= verion 31 triggers. - for (i = 0; i < Num_triggers; i++) { if (game_top_fileinfo_version < 31) { v30_trigger trig; int t,type; + int flags = 0; type=0; if (game_top_fileinfo_version < 30) { @@ -915,8 +913,8 @@ int load_game_data(CFILE *LoadFile) Int3(); else if (trig.flags & TRIGGER_EXIT) type = TT_EXIT; - else if (trig.flags & TRIGGER_ONE_SHOT) - Int3(); + //else if (trig.flags & TRIGGER_ONE_SHOT) + // Int3(); else if (trig.flags & TRIGGER_MATCEN) type = TT_MATCEN; else if (trig.flags & TRIGGER_ILLUSION_OFF) @@ -935,8 +933,10 @@ int load_game_data(CFILE *LoadFile) type = TT_ILLUSORY_WALL; else Int3(); + if (trig.flags & TRIGGER_ONE_SHOT) + flags = TF_ONE_SHOT; Triggers[i].type = type; - Triggers[i].flags = 0; + Triggers[i].flags = flags; Triggers[i].num_links = trig.num_links; Triggers[i].num_links = trig.num_links; Triggers[i].value = trig.value; @@ -952,12 +952,6 @@ int load_game_data(CFILE *LoadFile) //================ READ CONTROL CENTER TRIGGER INFO =============== -#if 0 - if (game_fileinfo.control_offset > -1) - if (!cfseek(LoadFile, game_fileinfo.control_offset, SEEK_SET)) - { - Assert(game_fileinfo.control_sizeof == sizeof(control_center_triggers)); -#endif // 0 control_center_triggers_read_n(&ControlCenterTriggers, 1, LoadFile); //================ READ MATERIALOGRIFIZATIONATORS INFO =============== @@ -1069,39 +1063,40 @@ int load_game_data(CFILE *LoadFile) // MK, 10/17/95: Make walls point back at the triggers that control them. // Go through all triggers, stuffing controlling_trigger field in Walls. - { int t; + { + int t; - for (i=0; i= 31) PHYSFSX_writeU8(fp, t->type); - if (version <= 29) + if (version <= 30) switch (t->type) { case TT_OPEN_DOOR: - PHYSFS_writeSLE16(fp, TRIGGER_CONTROL_DOORS); + PHYSFS_writeSLE16(fp, TRIGGER_CONTROL_DOORS | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_EXIT: - PHYSFS_writeSLE16(fp, TRIGGER_EXIT); + PHYSFS_writeSLE16(fp, TRIGGER_EXIT | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_MATCEN: - PHYSFS_writeSLE16(fp, TRIGGER_MATCEN); + PHYSFS_writeSLE16(fp, TRIGGER_MATCEN | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_ILLUSION_OFF: - PHYSFS_writeSLE16(fp, TRIGGER_ILLUSION_OFF); + PHYSFS_writeSLE16(fp, TRIGGER_ILLUSION_OFF | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_SECRET_EXIT: - PHYSFS_writeSLE16(fp, TRIGGER_SECRET_EXIT); + PHYSFS_writeSLE16(fp, TRIGGER_SECRET_EXIT | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_ILLUSION_ON: - PHYSFS_writeSLE16(fp, TRIGGER_ILLUSION_ON); + PHYSFS_writeSLE16(fp, TRIGGER_ILLUSION_ON | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_UNLOCK_DOOR: - PHYSFS_writeSLE16(fp, TRIGGER_UNLOCK_DOORS); + PHYSFS_writeSLE16(fp, TRIGGER_UNLOCK_DOORS | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_OPEN_WALL: - PHYSFS_writeSLE16(fp, TRIGGER_OPEN_WALL); + PHYSFS_writeSLE16(fp, TRIGGER_OPEN_WALL | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_CLOSE_WALL: - PHYSFS_writeSLE16(fp, TRIGGER_CLOSE_WALL); + PHYSFS_writeSLE16(fp, TRIGGER_CLOSE_WALL | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; case TT_ILLUSORY_WALL: - PHYSFS_writeSLE16(fp, TRIGGER_ILLUSORY_WALL); + PHYSFS_writeSLE16(fp, TRIGGER_ILLUSORY_WALL | ((t->flags & TF_ONE_SHOT) ? TRIGGER_ONE_SHOT : 0)); break; default: diff --git a/main/switch.h b/main/switch.h index 8a096bb89..05d762deb 100644 --- a/main/switch.h +++ b/main/switch.h @@ -42,7 +42,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define TT_CLOSE_WALL 10 // Makes a wall closed #define TT_ILLUSORY_WALL 11 // Makes a wall illusory #define TT_LIGHT_OFF 12 // Turn a light off -#define TT_LIGHT_ON 13 // Turn s light on +#define TT_LIGHT_ON 13 // Turn a light on #define NUM_TRIGGER_TYPES 14 // Trigger flags diff --git a/ui/button.c b/ui/button.c index 6e1ae5c7d..3054669e0 100644 --- a/ui/button.c +++ b/ui/button.c @@ -11,6 +11,12 @@ AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ +/* + * + * Routines for manipulating the button gadgets. + * + */ + #include #include diff --git a/ui/checkbox.c b/ui/checkbox.c index 33016a131..81a85e041 100644 --- a/ui/checkbox.c +++ b/ui/checkbox.c @@ -126,7 +126,7 @@ void ui_checkbox_do( UI_GADGET_CHECKBOX * checkbox, int keypress ) } -void ui_checkbox_check(UI_GADGET_CHECKBOX * checkbox, sbyte check) +void ui_checkbox_check(UI_GADGET_CHECKBOX * checkbox, int check) { check = check != 0; if (checkbox->flag == check) diff --git a/ui/func.c b/ui/func.c deleted file mode 100644 index 75d7efad4..000000000 --- a/ui/func.c +++ /dev/null @@ -1,110 +0,0 @@ -/* $Id: func.c,v 1.1.1.1 2006/03/17 19:52:18 zicodxx Exp $ */ -/* -THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX -SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO -END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A -ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS -IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS -SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE -FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE -CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS -AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. -COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. -*/ - -#ifdef RCS -static char rcsid[] = "$Id: func.c,v 1.1.1.1 2006/03/17 19:52:18 zicodxx Exp $"; -#endif - -#include -#include - -#include "func.h" - -#define MAX_PARAMS 10 - -static FUNCTION * func_table = NULL; -static int func_size = 0; -static int initialized = 0; -static int func_params[MAX_PARAMS]; - -int func_howmany() -{ - return func_size; -} - -void func_init( FUNCTION * funtable, int size ) -{ - if (!initialized) - { - initialized = 1; - func_table = funtable; - func_size = size; - atexit( func_close ); - } -} - - -void func_close() -{ - if (initialized) - { - initialized = 0; - func_table = NULL; - func_size = 0; - } -} - -int (*func_get( char * name, int * numparams ))(void) -{ - int i; - - for (i=0; i #include diff --git a/ui/medfunc.c b/ui/medfunc.c deleted file mode 100644 index 62a97b5c6..000000000 --- a/ui/medfunc.c +++ /dev/null @@ -1,115 +0,0 @@ -/* $Id: medfunc.c,v 1.1.1.1 2006/03/17 19:52:17 zicodxx Exp $ */ -/* -THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX -SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO -END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A -ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS -IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS -SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE -FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE -CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS -AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. -COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. -*/ - -#ifdef RCS -static char rcsid[] = "$Id: medfunc.c,v 1.1.1.1 2006/03/17 19:52:17 zicodxx Exp $"; -#endif - -typedef struct { - char * name; - int nparams; - double (*cfunction)(void); -} FUNCTION; - -FUNCTION funtable[] = { - -// In khelp.c -{ "med-help", 0, DoHelp }, - -// In kcurve.c -{ "med-curve-init", 0, InitCurve }, -{ "med-curve-generate" 0, GenerateCurve }, -{ "med-curve-decrease-r4", 0, DecreaseR4 }, -{ "med-curve-increase-r4", 0, IncreaseR4 }, -{ "med-curve-decrease-r1", 0, DecreaseR1 }, -{ "med-curve-increase-r1", 0, IncreaseR1 }, -{ "med-curve-delete", 0, DeleteCurve }, -{ "med-curve-set", 0, SetCurve }, - -// In kmine.c -{ "med-mine-save", 0, SaveMine }, -{ "med-mine-load", 0, LoadMine }, -{ "med-mine-menu", 0, MineMenu }, -{ "med-mine-create-new", 0, CreateNewMine }, - - -// In kview.c -{ "med-view-zoom-out", 0, ZoomOut }, -{ "med-view-zoom-in", 0, ZoomIn }, -{ "med-view-move-away", 0, MoveAway }, -{ "med-view-move-closer", 0, MoveCloser }, -{ "med-view-toggle-chase", 0, ToggleChaseMode }, - -// In kbuild.c -{ "med-build-bridge", 0, CreateBridge }, -{ "med-build-joint", 0, FormJoint }, -{ "med-build-adj-joint", 0, CreateAdjacentJoint }, -{ "med-build-adj-joints-segment", 0, CreateAdjacentJointsSegment }, -{ "med-build-adj-joints-all", 0, CreateAdjacentJointsAll }, - -// In ksegmove.c -{ "med-segmove-decrease-heading", 0, DecreaseHeading }, -{ "med-segmove-increase-heading", 0, IncreaseHeading }, -{ "med-segmove-decrease-pitch", 0, DecreasePitch }, -{ "med-segmove-increase-pitch", 0, IncreasePitch }, -{ "med-segmove-decrease-bank", 0, DecreaseBank }, -{ "med-segmove-increase-bank", 0, IncreaseBank }, - -// In ksegsel.c -{ "med-segsel-next-segment", 0, SelectCurrentSegForward }, -{ "med-segsel-prev-segment", 0, SelectCurrentSegBackward }, -{ "med-segsel-next-side", 0, SelectNextSide }, -{ "med-segsel-prev-side", 0, SelectPrevSide }, -{ "med-segsel-set-marked", 0, CopySegToMarked }, -{ "med-segsel-bottom", 0, SelectBottom }, -{ "med-segsel-front", 0, SelectFront }, -{ "med-segsel-top", 0, SelectTop }, -{ "med-segsel-back", 0, SelectBack }, -{ "med-segsel-left", 0, SelectLeft }, -{ "med-segsel-right", 0, SelectRight }, - -// In ksegsize.c -{ "med-segsize-increase-length", 0, IncreaseSegLength }, -{ "med-segsize-decrease-length", 0, DecreaseSegLength }, -{ "med-segsize-decrease-width", 0, DecreaseSegWidth }, -{ "med-segsize-increase-width", 0, IncreaseSegWidth }, -{ "med-segsize-increase-height", 0, IncreaseSegHeight }, -{ "med-segsize-decrease-height", 0, DecreaseSegHeight }, - -{ "med-segsize-increase-length-big", 0, IncreaseSegLengthBig }, -{ "med-segsize-decrease-length-big", 0, DecreaseSegLengthBig }, -{ "med-segsize-decrease-width-big", 0, DecreaseSegWidthBig }, -{ "med-segsize-increase-width-big", 0, IncreaseSegWidthBig }, -{ "med-segsize-increase-height-big", 0, IncreaseSegHeightBig }, -{ "med-segsize-decrease-height-big", 0, DecreaseSegHeightBig }, - -// In ktmap.c -{ "med-tmap-assign", 0, AssignTexture }, -{ "med-tmap-propogate", 0, PropagateTextures }, -{ "med-tmap-propogate-selected", 0, PropagateTexturesSelected }, - -// In macro.c -{ "med-macro-menu", 0, MacroMenu }, -{ "med-macro-play-fast", 0, MacroPlayFast }, -{ "med-macro-play-normal", 0, MacroPlayNormal }, -{ "med-macro-record-all", 0, MacroRecordAll }, -{ "med-macro-record-keys", 0, MacroRecordKeys }, -{ "med-macro-save", 0, MacroSave }, -{ "med-macro-load", 0, MacroLoad }, - - -// The terminating marker -{ NULL, 0, NULL } }; - - diff --git a/ui/menubar.c b/ui/menubar.c index 7ac5f9ba1..ec11e0dff 100644 --- a/ui/menubar.c +++ b/ui/menubar.c @@ -111,7 +111,7 @@ void menu_show( MENU * menu ) gr_set_current_canvas(NULL); // Don't save background it if it's already drawn - if (!menu->Displayed) + if (!menu->Displayed && menu->w>0 && menu->h>0) { // Save the background gr_bm_ubitblt(menu->w, menu->h, 0, 0, menu->x, menu->y, &(grd_curscreen->sc_canvas.cv_bitmap), menu->Background); diff --git a/ui/mouse.c b/ui/mouse.c index 64215b1a4..1be9d4198 100644 --- a/ui/mouse.c +++ b/ui/mouse.c @@ -12,20 +12,21 @@ AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ -#ifdef RCS -static char rcsid[] = "$Id: mouse.c,v 1.1.1.1 2006/03/17 19:52:18 zicodxx Exp $"; -#endif +/* + * + * Mouse interface routines. + * + */ #include - +#include #include "u_mem.h" #include "fix.h" #include "pstypes.h" #include "gr.h" #include "mouse.h" -#include "timer.h" - #include "ui.h" +#include "timer.h" // 16x16 @@ -99,6 +100,9 @@ int ui_mouse_find_gadget(short n) void ui_mouse_show() { +#ifndef __MSDOS__ + SDL_ShowCursor(1); +#else if (Mouse.hidden==1 ) { Mouse.hidden = 0; // Save the background under new pointer @@ -108,10 +112,12 @@ void ui_mouse_show() // Draw the new pointer gr_bm_ubitbltm( Mouse.pointer->bm_w, Mouse.pointer->bm_h, Mouse.x, Mouse.y, 0, 0, Mouse.pointer, &(grd_curscreen->sc_canvas.cv_bitmap) ); } +#endif } void ui_mouse_hide() { +#ifdef __MSDOS__ if (Mouse.hidden==0 ) { Mouse.hidden = 1; if (Mouse.bg_saved==1) { @@ -119,20 +125,23 @@ void ui_mouse_hide() Mouse.bg_saved = 0; } } +#endif } void ui_mouse_process() -{ int buttons,w,h; - - //if (Mouse.hidden==0) - // mouse_get_pos( &Mouse.x, &Mouse.y ); - //else - // mouse_set_pos( Mouse.x, Mouse.y ); - +{ + int buttons,w,h; +#ifndef __MSDOS__ + int new_x, new_y; + buttons = SDL_GetMouseState(&new_x,&new_y); + Mouse.dx = new_x - Mouse.x; + Mouse.dy = new_y - Mouse.y; +#else Mouse.dx = Mouse.new_dx; Mouse.dy = Mouse.new_dy; buttons = Mouse.new_buttons; +#endif Mouse.x += Mouse.dx; Mouse.y += Mouse.dy; @@ -153,6 +162,7 @@ void ui_mouse_process() if ( (Mouse.bg_x!=Mouse.x) || (Mouse.bg_y!=Mouse.y) || (Mouse.bg_saved==0) ) { +#ifdef __MSDOS__ // Restore the background under old pointer if (Mouse.bg_saved==1) { gr_bm_ubitblt( Mouse.background->bm_w, Mouse.background->bm_h, Mouse.bg_x, Mouse.bg_y, 0, 0, Mouse.background, &(grd_curscreen->sc_canvas.cv_bitmap) ); @@ -170,6 +180,7 @@ void ui_mouse_process() // Draw the new pointer gr_bm_ubitbltm( Mouse.pointer->bm_w, Mouse.pointer->bm_h, Mouse.x, Mouse.y, 0, 0, Mouse.pointer, &(grd_curscreen->sc_canvas.cv_bitmap) ); } +#endif /* __MSDOS__*/ } Mouse.b1_last_status = Mouse.b1_status; @@ -235,6 +246,9 @@ void ui_mouse_init() { int i, w,h; +#ifndef __MSDOS__ + SDL_ShowCursor(1); +#endif //mouse_init(); w = grd_curscreen->sc_w; @@ -279,13 +293,16 @@ void ui_mouse_init() Mouse.b3_status = Mouse.b3_last_status = BUTTON_RELEASED; Mouse.bg_x = Mouse.bg_y = 0; Mouse.bg_saved = 0; +#ifdef __MSDOS__ Mouse.pointer = default_pointer; Mouse.background = gr_create_bitmap( Mouse.pointer->bm_w, Mouse.pointer->bm_h ); +#endif Mouse.time_lastpressed = 0; Mouse.moved = 0; } +#ifdef __MSDOS__ grs_bitmap * ui_mouse_set_pointer( grs_bitmap * new ) { grs_bitmap * temp = Mouse.pointer; @@ -303,11 +320,13 @@ grs_bitmap * ui_mouse_set_pointer( grs_bitmap * new ) } +#endif void ui_mouse_close() { +#ifdef __MSDOS__ gr_free_sub_bitmap(default_pointer); gr_free_bitmap(Mouse.background); - +#endif } diff --git a/ui/radio.c b/ui/radio.c index 606d11f89..53e009989 100644 --- a/ui/radio.c +++ b/ui/radio.c @@ -11,6 +11,12 @@ AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ +/* + * + * Radio box gadget stuff. + * + */ + #include #include #include "fix.h" @@ -144,10 +150,11 @@ void ui_radio_do( UI_GADGET_RADIO * radio, int keypress ) } -void ui_radio_set_value(UI_GADGET_RADIO *radio, sbyte value) +void ui_radio_set_value(UI_GADGET_RADIO *radio, int value) { UI_GADGET_RADIO *tmp; + value = value != 0; if (radio->flag == value) return; diff --git a/ui/ui.c b/ui/ui.c index 8049c2f91..02c877834 100644 --- a/ui/ui.c +++ b/ui/ui.c @@ -11,6 +11,12 @@ AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ + /* + * + * UI init and close functions. + * + */ + #include #include #include diff --git a/ui/window.c b/ui/window.c index ee32be85d..ce6c53586 100644 --- a/ui/window.c +++ b/ui/window.c @@ -11,11 +11,15 @@ AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ +/* + * + * Windowing functions and controller. + * + */ + #include #include #include - #define _disable() - #define _enable() #include "window.h" #include "u_mem.h" @@ -24,8 +28,8 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "gr.h" #include "ui.h" #include "key.h" -#include "timer.h" #include "mouse.h" +#include "timer.h" #include "error.h" #define W_BACKGROUND (wnd->background ) @@ -41,6 +45,10 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define W_NEXT (wnd->next) #define W_PREV (wnd->prev) +#ifndef __MSDOS__ +#define _disable() +#define _enable() +#endif UI_WINDOW * CurWindow = NULL; UI_WINDOW * FirstWindow = NULL;