From 3fdb7ee8fc5daa840c3139c0c6dfef3e0ddd63ea Mon Sep 17 00:00:00 2001 From: hendricks266 Date: Mon, 5 Mar 2012 07:24:34 +0000 Subject: [PATCH] Rewrite code for the "-rts" command line parameter to remove an unnecessary int32_t, prevent needless string copying, factor out duplicate math, centralize the default RTS name, and prevent clobbering of the RTSName CFG setting. git-svn-id: https://svn.eduke32.com/eduke32@2420 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/source/config.c | 9 ++++++--- polymer/eduke32/source/game.c | 24 ++++++++++-------------- polymer/eduke32/source/game.h | 1 + 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/polymer/eduke32/source/config.c b/polymer/eduke32/source/config.c index 3511fd267..63ee6a8ea 100644 --- a/polymer/eduke32/source/config.c +++ b/polymer/eduke32/source/config.c @@ -262,7 +262,8 @@ void CONFIG_SetDefaults(void) ud.config.CheckForUpdates = 1; - Bstrcpy(ud.rtsname, "DUKE.RTS"); + if (g_rtsNamePtr == NULL) + Bstrcpy(ud.rtsname, defaultrtsfilename); Bstrcpy(szPlayerName, "Duke"); Bstrcpy(ud.ridecule[0], "An inspiration for birth control."); @@ -658,7 +659,8 @@ int32_t CONFIG_ReadSetup(void) Bstrncpy(szPlayerName,tempbuf,sizeof(szPlayerName)-1); szPlayerName[sizeof(szPlayerName)-1] = '\0'; - SCRIPT_GetString(ud.config.scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]); + if (g_rtsNamePtr == NULL) + SCRIPT_GetString(ud.config.scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]); SCRIPT_GetNumber(ud.config.scripthandle, "Setup","ConfigVersion",&ud.configversion); SCRIPT_GetNumber(ud.config.scripthandle, "Setup","ForceSetup",&ud.config.ForceSetup); @@ -997,7 +999,8 @@ void CONFIG_WriteSetup(uint32_t flags) } SCRIPT_PutString(ud.config.scripthandle, "Comm Setup","PlayerName",&szPlayerName[0]); - SCRIPT_PutString(ud.config.scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]); + if (g_rtsNamePtr == NULL) + SCRIPT_PutString(ud.config.scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]); { char commmacro[] = "CommbatMacro# "; diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index b914ef1d6..2bfb77c5f 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -110,7 +110,6 @@ uint8_t *basepaltable[BASEPALCOUNT] = { palette, water_pal, slime_pal, dre_alms, static int32_t g_skipDefaultCons = 0; static int32_t g_skipDefaultDefs = 0; // primarily for NAM/WWII GI appeasement -static int32_t g_skipDefaultRTS = 0; int32_t voting = -1; int32_t vote_map = -1, vote_episode = -1; @@ -122,6 +121,7 @@ static int32_t g_noLogo = 0; char defaultduke3dgrp[BMAX_PATH] = "duke3d.grp"; char defsfilename[BMAX_PATH] = "duke3d.def"; static char defaultconfilename[2][BMAX_PATH] = { "EDUKE.CON", "GAME.CON" }; +char defaultrtsfilename[128] = "DUKE.RTS"; char *g_grpNamePtr = defaultduke3dgrp; char *g_defNamePtr = defsfilename; @@ -8783,9 +8783,8 @@ static void G_CheckCommandLine(int32_t argc, const char **argv) { if (argc > i+1) { - Bstrcpy(ud.rtsname, (char *)argv[i+1]); g_rtsNamePtr = (char *)argv[i+1]; - g_skipDefaultRTS = 1; + Bstrcpy(ud.rtsname, g_rtsNamePtr); initprintf("Using .RTS file '%s'\n",ud.rtsname); i++; } @@ -9107,9 +9106,8 @@ static void G_CheckCommandLine(int32_t argc, const char **argv) } if (!Bstrcasecmp(k,".rts")) { - g_rtsNamePtr = (char *)argv[i]; - Bstrcpy(ud.rtsname, (char *)argv[i++]); - g_skipDefaultRTS = 1; + g_rtsNamePtr = (char *)argv[i++]; + Bstrcpy(ud.rtsname, g_rtsNamePtr); initprintf("Using .RTS file '%s'\n",ud.rtsname); continue; } @@ -9908,9 +9906,6 @@ int32_t app_main(int32_t argc,const char **argv) i = CONFIG_ReadSetup(); - if (g_skipDefaultRTS) - Bstrcpy(ud.rtsname, g_rtsNamePtr); - if (getenv("DUKE3DGRP")) { g_grpNamePtr = getenv("DUKE3DGRP"); @@ -10304,17 +10299,18 @@ CLEAN_DIRECTORY: playerswhenstarted = ud.multimode; ud.last_level = 0; - if (!Bstrcasecmp(ud.rtsname,"DUKE.RTS") || + if (g_rtsNamePtr == NULL && + (!Bstrcasecmp(ud.rtsname,defaultrtsfilename) || !Bstrcasecmp(ud.rtsname,"WW2GI.RTS") || - !Bstrcasecmp(ud.rtsname,"NAM.RTS")) + !Bstrcasecmp(ud.rtsname,"NAM.RTS"))) { - // ud.last_level is used as a flag here to reset the string to DUKE.RTS after load + // ud.last_level is used as a flag here to reset the string to default after load if (WW2GI) ud.last_level = (Bstrcpy(ud.rtsname, "WW2GI.RTS") == ud.rtsname); else if (NAM) ud.last_level = (Bstrcpy(ud.rtsname, "NAM.RTS") == ud.rtsname); else - ud.last_level = (Bstrcpy(ud.rtsname, "DUKE.RTS") == ud.rtsname); + ud.last_level = (Bstrcpy(ud.rtsname, defaultrtsfilename) == ud.rtsname); } RTS_Init(ud.rtsname); @@ -10323,7 +10319,7 @@ CLEAN_DIRECTORY: initprintf("Using .RTS file '%s'\n",ud.rtsname); if (ud.last_level) - Bstrcpy(ud.rtsname, "DUKE.RTS"); + Bstrcpy(ud.rtsname, defaultrtsfilename); ud.last_level = -1; diff --git a/polymer/eduke32/source/game.h b/polymer/eduke32/source/game.h index 81aa64436..e75dc08a3 100644 --- a/polymer/eduke32/source/game.h +++ b/polymer/eduke32/source/game.h @@ -190,6 +190,7 @@ extern char CheatStrings[][MAXCHEATLEN]; extern char boardfilename[BMAX_PATH], currentboardfilename[BMAX_PATH]; extern char boardfilename[BMAX_PATH]; extern char defaultduke3dgrp[BMAX_PATH]; +extern char defaultrtsfilename[128]; extern char g_modDir[BMAX_PATH]; extern char g_modDir[BMAX_PATH]; extern char inputloc;