From: divverent Date: Wed, 4 Mar 2009 08:12:04 +0000 (+0000) Subject: add command line options: X-Git-Tag: svn-r421~218 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=03c2a5a99fbab9e208789ec1e8872b112c2a1caa;p=xonotic%2Fnetradiant.git add command line options: -global-Key Value -gamename.game-Key Value and use it in netradiant.sh on OS X to detect whether NetRadiant.app is located in a subdir of a Nexuiz install. If it is, automatically select this game dir. git-svn-id: svn://svn.icculus.org/netradiant/trunk@202 61c419a2-8eb2-4b30-bcec-8cead039b335 --- diff --git a/games/NexuizPack/games/nexuiz.game b/games/NexuizPack/games/nexuiz.game index 8190d510..4e1bc610 100644 --- a/games/NexuizPack/games/nexuiz.game +++ b/games/NexuizPack/games/nexuiz.game @@ -6,7 +6,7 @@ name="Nexuiz" enginepath_win32="C:/Program Files/Nexuiz/" enginepath_linux="/usr/share/games/nexuiz/" - enginepath_macos="../../../../.." + enginepath_macos="/Applications/Nexuiz" engine_win32="nexuiz-sdl.exe" engine_linux="nexuiz-sdl" engine_macos="Nexuiz.app" diff --git a/radiant/environment.h b/radiant/environment.h index 7667fbfe..49d595e0 100644 --- a/radiant/environment.h +++ b/radiant/environment.h @@ -26,4 +26,7 @@ void environment_init(int argc, char* argv[]); const char* environment_get_home_path(); const char* environment_get_app_path(); +extern int g_argc; +extern char** g_argv; + #endif diff --git a/radiant/preferencedictionary.h b/radiant/preferencedictionary.h index 35a281ad..45757d01 100644 --- a/radiant/preferencedictionary.h +++ b/radiant/preferencedictionary.h @@ -92,6 +92,7 @@ public: } else { + m_cache.erase(name); m_cache.insert(PreferenceCache::value_type(name, value)); } } diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index 3d167025..5302c375 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include "preferences.h" +#include "environment.h" #include "debugging/debugging.h" @@ -187,17 +188,31 @@ CGameDescription *g_pGameDescription; ///< shortcut to g_GamesDialog.m_pCurrentD const char* const PREFERENCES_VERSION = "1.0"; -bool Preferences_Load(PreferenceDictionary& preferences, const char* filename) +bool Preferences_Load(PreferenceDictionary& preferences, const char* filename, const char *cmdline_prefix) { + bool ret = false; TextFileInputStream file(filename); if(!file.failed()) { XMLStreamParser parser(file); XMLPreferenceDictionaryImporter importer(preferences, PREFERENCES_VERSION); parser.exportXML(importer); - return true; + ret = true; } - return false; + + int l = strlen(cmdline_prefix); + for(int i = 1; i < g_argc - 1; ++i) + { + if(g_argv[i][0] == '-') + { + if(!strncmp(g_argv[i]+1, cmdline_prefix, l)) + if(g_argv[i][l+1] == '-') + preferences.importPref(g_argv[i]+l+2, g_argv[i+1]); + ++i; + } + } + + return ret; } bool Preferences_Save(PreferenceDictionary& preferences, const char* filename) @@ -259,7 +274,7 @@ void CGameDialog::LoadPrefs() globalOutputStream() << "loading global preferences from " << makeQuoted(strGlobalPref.c_str()) << "\n"; - if(!Preferences_Load(g_global_preferences, strGlobalPref.c_str())) + if(!Preferences_Load(g_global_preferences, strGlobalPref.c_str(), "global")) { globalOutputStream() << "failed to load global preferences from " << strGlobalPref.c_str() << "\n"; } @@ -948,7 +963,7 @@ void Preferences_Load() globalOutputStream() << "loading local preferences from " << g_Preferences.m_inipath->str << "\n"; - if(!Preferences_Load(g_preferences, g_Preferences.m_inipath->str)) + if(!Preferences_Load(g_preferences, g_Preferences.m_inipath->str, g_GamesDialog.m_sGameFile.c_str())) { globalOutputStream() << "failed to load local preferences from " << g_Preferences.m_inipath->str << "\n"; } diff --git a/setup/data/osx/NetRadiant.app/Contents/MacOS/netradiant.sh b/setup/data/osx/NetRadiant.app/Contents/MacOS/netradiant.sh index 389ac04a..cb07b08d 100755 --- a/setup/data/osx/NetRadiant.app/Contents/MacOS/netradiant.sh +++ b/setup/data/osx/NetRadiant.app/Contents/MacOS/netradiant.sh @@ -7,8 +7,33 @@ MY_DIRECTORY="${MY_DIRECTORY%/*}" # cut off Contents #export DYLD_LIBRARY_PATH="$MY_DIRECTORY/Contents/MacOS" cd "$MY_DIRECTORY/Contents/MacOS/install" + +# autodetect nexuiz installs +NEX_DIRECTORY="/${MY_DIRECTORY%/*}" +while :; do + if [ -z "$NEX_DIRECTORY" ]; then + break + fi + if [ -f "$NEX_DIRECTORY/data/common-spog.pk3" ]; then + if [ -d "$NEX_DIRECTORY/Nexuiz.app" ]; then + break + fi + fi + NEX_DIRECTORY=${NEX_DIRECTORY%/*} +done +case "$NEX_DIRECTORY" in + //*) + NEX_DIRECTORY=${NEX_DIRECTORY#/} + set -- -global-gamefile nexuiz.game -nexuiz.game-EnginePath "$NEX_DIRECTORY/" + # -global-gamePrompt false? + ;; + *) + set -- + ;; +esac + if [ -x /usr/bin/open-x11 ]; then - exec /usr/bin/open-x11 ./radiant.ppc + exec /usr/bin/open-x11 ./radiant.ppc "$@" else - exec ./radiant.ppc + exec ./radiant.ppc "$@" fi