diff --git a/polymer/build/src/osd.c b/polymer/build/src/osd.c index d0f92c175..e6f166735 100644 --- a/polymer/build/src/osd.c +++ b/polymer/build/src/osd.c @@ -1814,7 +1814,7 @@ static symbol_t *addnewsymbol(const char *name) newsymb->next = t; } } - HASH_add(&osdsymbolsH,name,osdnumsymbols); + HASH_add(&osdsymbolsH, name, osdnumsymbols); osdsymbptrs[osdnumsymbols++] = newsymb; return newsymb; } @@ -1840,12 +1840,17 @@ static symbol_t *findsymbol(const char *name, symbol_t *startingat) // static symbol_t *findexactsymbol(const char *name) { - int symb; + int i; if (!symbols) return NULL; - symb = HASH_find(&osdsymbolsH,name); - if (symb > -1) - return osdsymbptrs[symb]; + i = HASH_find(&osdsymbolsH,name); + if (i > -1) + { + symbol_t *symb = osdsymbptrs[i]; + if (symb->func == (void *)OSD_UNALIASED) + return NULL; + return osdsymbptrs[i]; + } return NULL; } diff --git a/polymer/eduke32/source/_functio.h b/polymer/eduke32/source/_functio.h index 292c846ea..439fe5fd2 100644 --- a/polymer/eduke32/source/_functio.h +++ b/polymer/eduke32/source/_functio.h @@ -92,63 +92,6 @@ char gamefunctions[NUMGAMEFUNCTIONS][MAXGAMEFUNCLEN] = "Show_Console" }; -const char defaultgamefunctions[NUMGAMEFUNCTIONS][MAXGAMEFUNCLEN] = - { - "Move_Forward", - "Move_Backward", - "Turn_Left", - "Turn_Right", - "Strafe", - "Fire", - "Open", - "Run", - "AutoRun", - "Jump", - "Crouch", - "Look_Up", - "Look_Down", - "Look_Left", - "Look_Right", - "Strafe_Left", - "Strafe_Right", - "Aim_Up", - "Aim_Down", - "Weapon_1", - "Weapon_2", - "Weapon_3", - "Weapon_4", - "Weapon_5", - "Weapon_6", - "Weapon_7", - "Weapon_8", - "Weapon_9", - "Weapon_10", - "Inventory", - "Inventory_Left", - "Inventory_Right", - "Holo_Duke", - "Jetpack", - "NightVision", - "MedKit", - "TurnAround", - "SendMessage", - "Map", - "Shrink_Screen", - "Enlarge_Screen", - "Center_View", - "Holster_Weapon", - "Show_Opponents_Weapon", - "Map_Follow_Mode", - "See_Coop_View", - "Mouse_Aiming", - "Toggle_Crosshair", - "Steroids", - "Quick_Kick", - "Next_Weapon", - "Previous_Weapon", - "Show_Console" - }; - #ifdef __SETUP__ #define NUMKEYENTRIES 53 diff --git a/polymer/eduke32/source/config.c b/polymer/eduke32/source/config.c index acf3f8640..7d5651392 100644 --- a/polymer/eduke32/source/config.c +++ b/polymer/eduke32/source/config.c @@ -51,24 +51,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. =================== */ +struct HASH_table gamefuncH = { NUMGAMEFUNCTIONS, NULL }; + int32 CONFIG_FunctionNameToNum(char * func) { int32 i; - for (i=0;i -1) + return i; return -1; } diff --git a/polymer/eduke32/source/duke3d.h b/polymer/eduke32/source/duke3d.h index 16b56db7e..3876ebe13 100644 --- a/polymer/eduke32/source/duke3d.h +++ b/polymer/eduke32/source/duke3d.h @@ -1060,9 +1060,10 @@ extern char *mousenames[]; extern char *duke3dgrp, *duke3dgrpstring; extern char mod_dir[BMAX_PATH]; -struct HASH_table gamevarH; -struct HASH_table arrayH; -struct HASH_table keywH; +extern struct HASH_table gamevarH; +extern struct HASH_table arrayH; +extern struct HASH_table keywH; +extern struct HASH_table gamefuncH; #ifdef __cplusplus } diff --git a/polymer/eduke32/source/function.h b/polymer/eduke32/source/function.h index 509c78b41..67cc4302f 100644 --- a/polymer/eduke32/source/function.h +++ b/polymer/eduke32/source/function.h @@ -41,7 +41,6 @@ extern "C" { #define MAXGAMEFUNCLEN 32 extern char gamefunctions[NUMGAMEFUNCTIONS][MAXGAMEFUNCLEN]; -extern const char defaultgamefunctions[NUMGAMEFUNCTIONS][MAXGAMEFUNCLEN]; extern char keydefaults[NUMGAMEFUNCTIONS*3][MAXGAMEFUNCLEN]; enum diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index 6331b156a..5a7547c8d 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -10011,6 +10011,7 @@ static void freeconmem(void) Bfree(bitptr); freehash(); + HASH_free(&gamefuncH); } /* @@ -10674,6 +10675,10 @@ void app_main(int argc,const char **argv) ud.config.CheckForUpdates = -1; #endif + HASH_init(&gamefuncH); + for (i=NUMGAMEFUNCTIONS-1;i>=0;i--) + HASH_add(&gamefuncH,gamefunctions[i],i); + i = CONFIG_ReadSetup(); if (getenv("DUKE3DGRP")) duke3dgrp = getenv("DUKE3DGRP"); diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c index e53436932..a9e3e2318 100644 --- a/polymer/eduke32/source/gamedef.c +++ b/polymer/eduke32/source/gamedef.c @@ -4613,6 +4613,7 @@ repeatcase: } gamefunctions[j][i] = '\0'; keydefaults[j*3][i] = '\0'; + HASH_add(&gamefuncH,gamefunctions[j],j); return 0; case CON_DEFINESKILLNAME: