diff --git a/src/include/parameters.h b/src/include/parameters.h index 5f6fed666..8ae97d966 100644 --- a/src/include/parameters.h +++ b/src/include/parameters.h @@ -36,10 +36,11 @@ public: void SetDefaultValues(); void SetLocalPlayerNameFromEnv(); - const std::string &GetUserDirectory() const { return UserDirectory; } + void SetUserDirectory(const std::string &path) { userDirectory = path; } + const std::string &GetUserDirectory() const { return userDirectory; } private: - void SetUserDirectory(); + void SetDefaultUserDirectory(); public: std::string applicationName; @@ -47,7 +48,7 @@ public: std::string luaEditorStartFilename; std::string LocalPlayerName; /// Name of local player private: - std::string UserDirectory; /// Directory containing user settings and data + std::string userDirectory; /// Directory containing user settings and data public: static Parameters Instance; }; diff --git a/src/stratagus/parameters.cpp b/src/stratagus/parameters.cpp index 051903967..e14821810 100644 --- a/src/stratagus/parameters.cpp +++ b/src/stratagus/parameters.cpp @@ -43,27 +43,27 @@ void Parameters::SetDefaultValues() applicationName = "stratagus"; luaStartFilename = "scripts/stratagus.lua"; luaEditorStartFilename = "scripts/editor.lua"; - SetUserDirectory(); + SetDefaultUserDirectory(); } -void Parameters::SetUserDirectory() +void Parameters::SetDefaultUserDirectory() { #ifdef USE_WIN32 - UserDirectory = getenv("APPDATA"); + userDirectory = getenv("APPDATA"); #else - UserDirectory = getenv("HOME"); + userDirectory = getenv("HOME"); #endif - if (!UserDirectory.empty()) { - UserDirectory += "/"; + if (!userDirectory.empty()) { + userDirectory += "/"; } #ifdef USE_WIN32 - UserDirectory += "Stratagus"; + userDirectory += "Stratagus"; #elif defined(USE_MAC) - UserDirectory += "Library/Stratagus"; + userDirectory += "Library/Stratagus"; #else - UserDirectory += ".stratagus"; + userDirectory += ".stratagus"; #endif } diff --git a/src/stratagus/stratagus.cpp b/src/stratagus/stratagus.cpp index 87f0b8203..ff83fb410 100644 --- a/src/stratagus/stratagus.cpp +++ b/src/stratagus/stratagus.cpp @@ -446,6 +446,7 @@ static void Usage() "\t-P port\t\tNetwork port to use\n" "\t-s sleep\tNumber of frames for the AI to sleep before it starts\n" "\t-S speed\tSync speed (100 = 30 frames/s)\n" + "\t-u userpath\tPath where stratagus saves preferences, log and savegame\n" "\t-v mode\t\tVideo mode resolution in format <xres>x<yres>\n" "\t-W\t\tWindowed video mode\n" "map is relative to StratagusLibPath=datapath, use ./map for relative to cwd\n", @@ -498,7 +499,7 @@ static void RedirectOutput() void ParseCommandLine(int argc, char **argv, Parameters ¶meters) { for (;;) { - switch (getopt(argc, argv, "c:d:D:eE:FhI:lN:oOP:s:S:v:W?")) { + switch (getopt(argc, argv, "c:d:D:eE:FhI:lN:oOP:s:S:u:v:W?")) { case 'c': parameters.luaStartFilename = optarg; continue; @@ -551,6 +552,9 @@ void ParseCommandLine(int argc, char **argv, Parameters ¶meters) case 'S': VideoSyncSpeed = atoi(optarg); continue; + case 'u': + Parameters::Instance.SetUserDirectory(optarg); + continue; case 'v': { char *sep = strchr(optarg, 'x'); if (!sep || !*(sep + 1)) {