1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 00:03:11 +01:00

Use u8string for custom paths

This commit is contained in:
Michael Steenbeek
2022-01-27 14:21:46 +01:00
committed by GitHub
parent 2c8c940caa
commit 149b164ee8
10 changed files with 45 additions and 54 deletions

View File

@@ -770,7 +770,7 @@ namespace OpenRCT2
std::string GetOrPromptRCT2Path() std::string GetOrPromptRCT2Path()
{ {
auto result = std::string(); auto result = std::string();
if (String::IsNullOrEmpty(gCustomRCT2DataPath)) if (gCustomRCT2DataPath.empty())
{ {
// Check install directory // Check install directory
if (gConfigGeneral.rct2_path.empty() || !Platform::OriginalGameDataExists(gConfigGeneral.rct2_path)) if (gConfigGeneral.rct2_path.empty() || !Platform::OriginalGameDataExists(gConfigGeneral.rct2_path))
@@ -786,11 +786,11 @@ namespace OpenRCT2
return std::string(); return std::string();
} }
} }
result = std::string(gConfigGeneral.rct2_path); result = gConfigGeneral.rct2_path;
} }
else else
{ {
result = std::string(gCustomRCT2DataPath); result = gCustomRCT2DataPath;
} }
return result; return result;
} }
@@ -906,7 +906,7 @@ namespace OpenRCT2
gNetworkStartAddress = gConfigNetwork.listen_address; gNetworkStartAddress = gConfigNetwork.listen_address;
} }
if (String::IsNullOrEmpty(gCustomPassword)) if (gCustomPassword.empty())
{ {
_network.SetPassword(gConfigNetwork.default_password.c_str()); _network.SetPassword(gConfigNetwork.default_password.c_str());
} }

View File

@@ -775,7 +775,7 @@ void start_silent_record()
{ {
OpenRCT2::ReplayRecordInfo info; OpenRCT2::ReplayRecordInfo info;
replayManager->GetCurrentReplayInfo(info); replayManager->GetCurrentReplayInfo(info);
safe_strcpy(gSilentRecordingName, info.FilePath.c_str(), MAX_PATH); gSilentRecordingName = info.FilePath;
const char* logFmt = "Silent replay recording started: (%s) %s\n"; const char* logFmt = "Silent replay recording started: (%s) %s\n";
Console::WriteLine(logFmt, info.Name.c_str(), info.FilePath.c_str()); Console::WriteLine(logFmt, info.Name.c_str(), info.FilePath.c_str());

View File

@@ -11,12 +11,12 @@
StartupAction gOpenRCT2StartupAction = StartupAction::Title; StartupAction gOpenRCT2StartupAction = StartupAction::Title;
utf8 gOpenRCT2StartupActionPath[512] = { 0 }; utf8 gOpenRCT2StartupActionPath[512] = { 0 };
utf8 gCustomUserDataPath[MAX_PATH] = { 0 }; u8string gCustomUserDataPath = {};
utf8 gCustomOpenRCT2DataPath[MAX_PATH] = { 0 }; u8string gCustomOpenRCT2DataPath = {};
utf8 gCustomRCT1DataPath[MAX_PATH] = { 0 }; u8string gCustomRCT1DataPath = {};
utf8 gCustomRCT2DataPath[MAX_PATH] = { 0 }; u8string gCustomRCT2DataPath = {};
utf8 gCustomPassword[MAX_PATH] = { 0 }; u8string gCustomPassword = {};
utf8 gSilentRecordingName[MAX_PATH] = { 0 }; u8string gSilentRecordingName = {};
bool gOpenRCT2Headless = false; bool gOpenRCT2Headless = false;
bool gOpenRCT2NoGraphics = false; bool gOpenRCT2NoGraphics = false;

View File

@@ -39,16 +39,16 @@ enum
extern StartupAction gOpenRCT2StartupAction; extern StartupAction gOpenRCT2StartupAction;
extern utf8 gOpenRCT2StartupActionPath[512]; extern utf8 gOpenRCT2StartupActionPath[512];
extern utf8 gCustomUserDataPath[MAX_PATH]; extern u8string gCustomUserDataPath;
extern utf8 gCustomOpenRCT2DataPath[MAX_PATH]; extern u8string gCustomOpenRCT2DataPath;
extern utf8 gCustomRCT1DataPath[MAX_PATH]; extern u8string gCustomRCT1DataPath;
extern utf8 gCustomRCT2DataPath[MAX_PATH]; extern u8string gCustomRCT2DataPath;
extern utf8 gCustomPassword[MAX_PATH]; extern u8string gCustomPassword;
extern bool gOpenRCT2Headless; extern bool gOpenRCT2Headless;
extern bool gOpenRCT2NoGraphics; extern bool gOpenRCT2NoGraphics;
extern bool gOpenRCT2ShowChangelog; extern bool gOpenRCT2ShowChangelog;
extern bool gOpenRCT2SilentBreakpad; extern bool gOpenRCT2SilentBreakpad;
extern utf8 gSilentRecordingName[MAX_PATH]; extern u8string gSilentRecordingName;
#ifndef DISABLE_NETWORK #ifndef DISABLE_NETWORK
extern int32_t gNetworkStart; extern int32_t gNetworkStart;

View File

@@ -135,19 +135,19 @@ std::unique_ptr<IPlatformEnvironment> OpenRCT2::CreatePlatformEnvironment()
basePaths[static_cast<size_t>(DIRBASE::DOCUMENTATION)] = Platform::GetDocsPath(); basePaths[static_cast<size_t>(DIRBASE::DOCUMENTATION)] = Platform::GetDocsPath();
// Override paths that have been specified via the command line // Override paths that have been specified via the command line
if (!String::IsNullOrEmpty(gCustomRCT1DataPath)) if (!gCustomRCT1DataPath.empty())
{ {
basePaths[static_cast<size_t>(DIRBASE::RCT1)] = gCustomRCT1DataPath; basePaths[static_cast<size_t>(DIRBASE::RCT1)] = gCustomRCT1DataPath;
} }
if (!String::IsNullOrEmpty(gCustomRCT2DataPath)) if (!gCustomRCT2DataPath.empty())
{ {
basePaths[static_cast<size_t>(DIRBASE::RCT2)] = gCustomRCT2DataPath; basePaths[static_cast<size_t>(DIRBASE::RCT2)] = gCustomRCT2DataPath;
} }
if (!String::IsNullOrEmpty(gCustomOpenRCT2DataPath)) if (!gCustomOpenRCT2DataPath.empty())
{ {
basePaths[static_cast<size_t>(DIRBASE::OPENRCT2)] = gCustomOpenRCT2DataPath; basePaths[static_cast<size_t>(DIRBASE::OPENRCT2)] = gCustomOpenRCT2DataPath;
} }
if (!String::IsNullOrEmpty(gCustomUserDataPath)) if (!gCustomUserDataPath.empty())
{ {
basePaths[static_cast<size_t>(DIRBASE::USER)] = gCustomUserDataPath; basePaths[static_cast<size_t>(DIRBASE::USER)] = gCustomUserDataPath;
basePaths[static_cast<size_t>(DIRBASE::CONFIG)] = gCustomUserDataPath; basePaths[static_cast<size_t>(DIRBASE::CONFIG)] = gCustomUserDataPath;
@@ -168,11 +168,11 @@ std::unique_ptr<IPlatformEnvironment> OpenRCT2::CreatePlatformEnvironment()
{ {
config_save(configPath.c_str()); config_save(configPath.c_str());
} }
if (String::IsNullOrEmpty(gCustomRCT1DataPath)) if (gCustomRCT1DataPath.empty())
{ {
env->SetBasePath(DIRBASE::RCT1, String::ToStd(gConfigGeneral.rct1_path)); env->SetBasePath(DIRBASE::RCT1, String::ToStd(gConfigGeneral.rct1_path));
} }
if (String::IsNullOrEmpty(gCustomRCT2DataPath)) if (gCustomRCT2DataPath.empty())
{ {
env->SetBasePath(DIRBASE::RCT2, gConfigGeneral.rct2_path); env->SetBasePath(DIRBASE::RCT2, gConfigGeneral.rct2_path);
} }

View File

@@ -486,7 +486,7 @@ namespace CommandLine
*(static_cast<float*>(option->OutAddress)) = static_cast<float>(atof(valueString)); *(static_cast<float*>(option->OutAddress)) = static_cast<float>(atof(valueString));
return true; return true;
case CMDLINE_TYPE_STRING: case CMDLINE_TYPE_STRING:
*(static_cast<utf8**>(option->OutAddress)) = String::Duplicate(valueString); *(static_cast<u8string*>(option->OutAddress)) = u8string(valueString);
return true; return true;
default: default:
Console::Error::WriteLine("Unknown CMDLINE_TYPE for: %s", option->LongName); Console::Error::WriteLine("Unknown CMDLINE_TYPE for: %s", option->LongName);

View File

@@ -54,11 +54,11 @@ static bool _all = false;
static bool _about = false; static bool _about = false;
static bool _verbose = false; static bool _verbose = false;
static bool _headless = false; static bool _headless = false;
static utf8* _password = nullptr; static u8string _password = {};
static utf8* _userDataPath = nullptr; static u8string _userDataPath = {};
static utf8* _openrct2DataPath = nullptr; static u8string _openrct2DataPath = {};
static utf8* _rct1DataPath = nullptr; static u8string _rct1DataPath = {};
static utf8* _rct2DataPath = nullptr; static u8string _rct2DataPath = {};
static bool _silentBreakpad = false; static bool _silentBreakpad = false;
// clang-format off // clang-format off
@@ -199,36 +199,29 @@ exitcode_t CommandLine::HandleCommandDefault()
gOpenRCT2NoGraphics = _headless; gOpenRCT2NoGraphics = _headless;
gOpenRCT2SilentBreakpad = _silentBreakpad || _headless; gOpenRCT2SilentBreakpad = _silentBreakpad || _headless;
if (_userDataPath != nullptr) if (!_userDataPath.empty())
{ {
const auto absolutePath = Path::GetAbsolute(_userDataPath); gCustomUserDataPath = Path::GetAbsolute(_userDataPath);
String::Set(gCustomUserDataPath, std::size(gCustomUserDataPath), absolutePath.c_str());
Memory::Free(_userDataPath);
} }
if (_openrct2DataPath != nullptr) if (!_openrct2DataPath.empty())
{ {
const auto absolutePath = Path::GetAbsolute(_openrct2DataPath); gCustomOpenRCT2DataPath = Path::GetAbsolute(_openrct2DataPath);
String::Set(gCustomOpenRCT2DataPath, std::size(gCustomOpenRCT2DataPath), absolutePath.c_str());
Memory::Free(_openrct2DataPath);
} }
if (_rct1DataPath != nullptr) if (!_rct1DataPath.empty())
{ {
String::Set(gCustomRCT1DataPath, std::size(gCustomRCT1DataPath), _rct1DataPath); gCustomRCT1DataPath = _rct1DataPath;
Memory::Free(_rct1DataPath);
} }
if (_rct2DataPath != nullptr) if (!_rct2DataPath.empty())
{ {
String::Set(gCustomRCT2DataPath, std::size(gCustomRCT2DataPath), _rct2DataPath); gCustomRCT2DataPath = _rct2DataPath;
Memory::Free(_rct2DataPath);
} }
if (_password != nullptr) if (!_password.empty())
{ {
String::Set(gCustomPassword, std::size(gCustomPassword), _password); gCustomPassword = _password;
Memory::Free(_password);
} }
return result; return result;

View File

@@ -828,9 +828,9 @@ void NetworkBase::KickPlayer(int32_t playerId)
} }
} }
void NetworkBase::SetPassword(const char* password) void NetworkBase::SetPassword(u8string_view password)
{ {
_password = password == nullptr ? "" : password; _password = password;
} }
void NetworkBase::ServerClientDisconnected() void NetworkBase::ServerClientDisconnected()
@@ -2170,8 +2170,7 @@ void NetworkBase::Client_Handle_TOKEN(NetworkConnection& connection, NetworkPack
// when process dump gets collected at some point in future. // when process dump gets collected at some point in future.
_key.Unload(); _key.Unload();
const char* password = String::IsNullOrEmpty(gCustomPassword) ? "" : gCustomPassword; Client_Send_AUTH(gConfigNetwork.player_name.c_str(), gCustomPassword.c_str(), pubkey.c_str(), signature);
Client_Send_AUTH(gConfigNetwork.player_name.c_str(), password, pubkey.c_str(), signature);
} }
void NetworkBase::Server_Handle_REQUEST_GAMESTATE(NetworkConnection& connection, NetworkPacket& packet) void NetworkBase::Server_Handle_REQUEST_GAMESTATE(NetworkConnection& connection, NetworkPacket& packet)

View File

@@ -41,7 +41,7 @@ public: // Common
std::vector<std::unique_ptr<NetworkGroup>>::iterator GetGroupIteratorByID(uint8_t id); std::vector<std::unique_ptr<NetworkGroup>>::iterator GetGroupIteratorByID(uint8_t id);
NetworkPlayer* GetPlayerByID(uint8_t id); NetworkPlayer* GetPlayerByID(uint8_t id);
NetworkGroup* GetGroupByID(uint8_t id); NetworkGroup* GetGroupByID(uint8_t id);
void SetPassword(const char* password); void SetPassword(u8string_view password);
uint8_t GetDefaultGroup(); uint8_t GetDefaultGroup();
std::string BeginLog(const std::string& directory, const std::string& midName, const std::string& filenameFormat); std::string BeginLog(const std::string& directory, const std::string& midName, const std::string& filenameFormat);
void AppendLog(std::ostream& fs, std::string_view s); void AppendLog(std::ostream& fs, std::string_view s);

View File

@@ -89,10 +89,9 @@ namespace Platform
std::string GetInstallPath() std::string GetInstallPath()
{ {
// 1. Try command line argument // 1. Try command line argument
auto path = std::string(gCustomOpenRCT2DataPath); if (!gCustomOpenRCT2DataPath.empty())
if (!path.empty())
{ {
return Path::GetAbsolute(path); return Path::GetAbsolute(gCustomOpenRCT2DataPath);
} }
// 2. Try {${exeDir},${cwd},/}/{data,standard system app directories} // 2. Try {${exeDir},${cwd},/}/{data,standard system app directories}
// exeDir should come first to allow installing into build dir // exeDir should come first to allow installing into build dir