From 76abf75aaa3aac2ac0ce043923988a04221475c2 Mon Sep 17 00:00:00 2001 From: mcmartin Date: Wed, 25 Nov 2009 03:40:49 +0000 Subject: [PATCH] Improved safemode; --safe option now ignores uqm.cfg entirely. git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3350 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/ChangeLog | 1 + sc2/build/win32_install/uqm-installer.nsi | 4 ++-- sc2/src/uqm.c | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/sc2/ChangeLog b/sc2/ChangeLog index 2ac90e1e8..7bb9015fe 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -1,4 +1,5 @@ Changes towards version 0.7: +- Cross-platform safemode (ignores uqm.cfg, bug #946) - Michael - Correct Chmmr response when asking about Sa-Matra (bug #1073) - Alex - Refactored universe generation - SvdB - Comm animation processing rewrite, bugs fixed - Alex diff --git a/sc2/build/win32_install/uqm-installer.nsi b/sc2/build/win32_install/uqm-installer.nsi index c5501c16b..1cf46033c 100644 --- a/sc2/build/win32_install/uqm-installer.nsi +++ b/sc2/build/win32_install/uqm-installer.nsi @@ -438,8 +438,8 @@ Section -ShortcutsAndIcons !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\The Ur-Quan Masters.lnk" "$INSTDIR\uqm.exe" $UQMARGS - CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\UQM (Safe Mode).lnk" "$INSTDIR\uqm.exe" "-wx -r 640x480 -c none --sound=none -g 1.0 -M 100 -S 100 -T 100 -q medium" - CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\UQM (Safe OpenGL).lnk" "$INSTDIR\uqm.exe" "-wo -r 640x480 -c none --sound=none -g 1.0 -M 100 -S 100 -T 100 -q medium" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\UQM (Safe Mode).lnk" "$INSTDIR\uqm.exe" "-x --safe" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\UQM (Safe OpenGL).lnk" "$INSTDIR\uqm.exe" "-o --safe" CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Documentation" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\AUTHORS.lnk" "$INSTDIR\AUTHORS.txt" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\COPYING.lnk" "$INSTDIR\COPYING.txt" diff --git a/sc2/src/uqm.c b/sc2/src/uqm.c index 1faefe595..541a31047 100644 --- a/sc2/src/uqm.c +++ b/sc2/src/uqm.c @@ -125,6 +125,7 @@ struct options_struct DECL_CONFIG_OPTION(float, musicVolumeScale); DECL_CONFIG_OPTION(float, sfxVolumeScale); DECL_CONFIG_OPTION(float, speechVolumeScale); + DECL_CONFIG_OPTION(bool, safeMode); #define INIT_CONFIG_OPTION(name, val) \ { val, false } @@ -257,6 +258,7 @@ main (int argc, char *argv[]) INIT_CONFIG_OPTION( musicVolumeScale, 1.0f ), INIT_CONFIG_OPTION( sfxVolumeScale, 1.0f ), INIT_CONFIG_OPTION( speechVolumeScale, 1.0f ), + INIT_CONFIG_OPTION( safeMode, false ), }; struct options_struct defaults = options; int optionsResult; @@ -334,8 +336,11 @@ main (int argc, char *argv[]) PlayerControls[1] = CONTROL_TEMPLATE_JOY_1; // Fill in the options struct based on uqm.cfg - LoadResourceIndex (configDir, "uqm.cfg", "config."); - getUserConfigOptions (&options); + if (!options.safeMode.value) + { + LoadResourceIndex (configDir, "uqm.cfg", "config."); + getUserConfigOptions (&options); + } { /* remove old control template names */ int i; @@ -673,6 +678,7 @@ enum ADDON_OPT, ADDONDIR_OPT, ACCEL_OPT, + SAFEMODE_OPT, #ifdef NETPLAY NETHOST1_OPT, NETPORT1_OPT, @@ -719,6 +725,7 @@ static struct option longOptions[] = {"addon", 1, NULL, ADDON_OPT}, {"addondir", 1, NULL, ADDONDIR_OPT}, {"accel", 1, NULL, ACCEL_OPT}, + {"safe", 0, NULL, SAFEMODE_OPT}, #ifdef NETPLAY {"nethost1", 1, NULL, NETHOST1_OPT}, {"netport1", 1, NULL, NETPORT1_OPT}, @@ -1007,6 +1014,9 @@ parseOptions (int argc, char *argv[], struct options_struct *options) } break; } + case SAFEMODE_OPT: + setBoolOption (&options->safeMode, true); + break; #ifdef NETPLAY case NETHOST1_OPT: netplayOptions.peer[0].isServer = false; @@ -1169,6 +1179,7 @@ usage (FILE *out, const struct options_struct *defaults) "mixsdl)"); log_add (log_User, " --stereosfx (enables positional sound effects, " "currently only for openal)"); + log_add (log_User, " --safe (start in safe mode)"); #ifdef NETPLAY log_add (log_User, " --nethostN=HOSTNAME (server to connect to for " "player N (1=bottom, 2=top)");