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
This commit is contained in:
divverent 2009-03-04 08:12:04 +00:00
parent 469e4fc146
commit 03c2a5a99f
5 changed files with 52 additions and 8 deletions

View File

@ -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"

View File

@ -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

View File

@ -92,6 +92,7 @@ public:
}
else
{
m_cache.erase(name);
m_cache.insert(PreferenceCache::value_type(name, value));
}
}

View File

@ -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";
}

View File

@ -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