mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2025-08-16 08:16:20 +00:00
Convert GetGamePath() to fs::path
This commit is contained in:
parent
e0257e9526
commit
9c53f86593
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
void InitLauncher();
|
void InitLauncher();
|
||||||
beammp_fs_string GetEP(const beammp_fs_char* P = nullptr);
|
beammp_fs_string GetEP(const beammp_fs_char* P = nullptr);
|
||||||
beammp_fs_string GetGamePath();
|
std::filesystem::path GetGamePath();
|
||||||
std::string GetVer();
|
std::string GetVer();
|
||||||
std::string GetPatch();
|
std::string GetPatch();
|
||||||
beammp_fs_string GetEN();
|
beammp_fs_string GetEN();
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
unsigned long GamePID = 0;
|
unsigned long GamePID = 0;
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
std::wstring QueryKey(HKEY hKey, int ID);
|
std::wstring QueryKey(HKEY hKey, int ID);
|
||||||
std::wstring GetGamePath() {
|
std::filesystem::path GetGamePath() {
|
||||||
static std::filesystem::path Path;
|
static std::filesystem::path Path;
|
||||||
if (!Path.empty())
|
if (!Path.empty())
|
||||||
return Path.wstring();
|
return Path.wstring();
|
||||||
@ -95,11 +95,11 @@ std::wstring GetGamePath() {
|
|||||||
|
|
||||||
std::string Ver = CheckVer(GetGameDir());
|
std::string Ver = CheckVer(GetGameDir());
|
||||||
Ver = Ver.substr(0, Ver.find('.', Ver.find('.') + 1));
|
Ver = Ver.substr(0, Ver.find('.', Ver.find('.') + 1));
|
||||||
(Path /= Utils::ToWString(Ver)) /= L"\\";
|
Path /= Utils::ToWString(Ver);
|
||||||
return Path;
|
return Path;
|
||||||
}
|
}
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
std::string GetGamePath() {
|
std::filesystem::path GetGamePath() {
|
||||||
// Right now only steam is supported
|
// Right now only steam is supported
|
||||||
struct passwd* pw = getpwuid(getuid());
|
struct passwd* pw = getpwuid(getuid());
|
||||||
std::string homeDir = pw->pw_dir;
|
std::string homeDir = pw->pw_dir;
|
||||||
|
@ -450,8 +450,8 @@ void NewSyncResources(SOCKET Sock, const std::string& Mods, const std::vector<Mo
|
|||||||
UpdateUl(false, std::to_string(ModNo) + "/" + std::to_string(TotalMods) + ": " + ModInfoIter->FileName);
|
UpdateUl(false, std::to_string(ModNo) + "/" + std::to_string(TotalMods) + ": " + ModInfoIter->FileName);
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
||||||
try {
|
try {
|
||||||
if (!fs::exists(GetGamePath() + beammp_wide("mods/multiplayer"))) {
|
if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) {
|
||||||
fs::create_directories(GetGamePath() + beammp_wide("mods/multiplayer"));
|
fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer"));
|
||||||
}
|
}
|
||||||
auto modname = ModInfoIter->FileName;
|
auto modname = ModInfoIter->FileName;
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
@ -483,8 +483,8 @@ void NewSyncResources(SOCKET Sock, const std::string& Mods, const std::vector<Mo
|
|||||||
try {
|
try {
|
||||||
fs::copy_file(OldCachedPath, PathToSaveTo, fs::copy_options::overwrite_existing);
|
fs::copy_file(OldCachedPath, PathToSaveTo, fs::copy_options::overwrite_existing);
|
||||||
|
|
||||||
if (!fs::exists(GetGamePath() + beammp_wide("mods/multiplayer"))) {
|
if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) {
|
||||||
fs::create_directories(GetGamePath() + beammp_wide("mods/multiplayer"));
|
fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer"));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto modname = ModInfoIter->FileName;
|
auto modname = ModInfoIter->FileName;
|
||||||
@ -568,8 +568,8 @@ void NewSyncResources(SOCKET Sock, const std::string& Mods, const std::vector<Mo
|
|||||||
}
|
}
|
||||||
} while (fs::file_size(PathToSaveTo) != ModInfoIter->FileSize && !Terminate);
|
} while (fs::file_size(PathToSaveTo) != ModInfoIter->FileSize && !Terminate);
|
||||||
if (!Terminate) {
|
if (!Terminate) {
|
||||||
if (!fs::exists(GetGamePath() + beammp_wide("mods/multiplayer"))) {
|
if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) {
|
||||||
fs::create_directories(GetGamePath() + beammp_wide("mods/multiplayer"));
|
fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Linux version of the game doesnt support uppercase letters in mod names
|
// Linux version of the game doesnt support uppercase letters in mod names
|
||||||
@ -667,8 +667,8 @@ void SyncResources(SOCKET Sock) {
|
|||||||
UpdateUl(false, std::to_string(Pos) + "/" + std::to_string(Amount) + ": " + PathToSaveTo.substr(PathToSaveTo.find_last_of('/')));
|
UpdateUl(false, std::to_string(Pos) + "/" + std::to_string(Amount) + ": " + PathToSaveTo.substr(PathToSaveTo.find_last_of('/')));
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
||||||
try {
|
try {
|
||||||
if (!fs::exists(GetGamePath() + beammp_wide("mods/multiplayer"))) {
|
if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) {
|
||||||
fs::create_directories(GetGamePath() + beammp_wide("mods/multiplayer"));
|
fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer"));
|
||||||
}
|
}
|
||||||
auto modname = PathToSaveTo.substr(PathToSaveTo.find_last_of('/'));
|
auto modname = PathToSaveTo.substr(PathToSaveTo.find_last_of('/'));
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
@ -677,8 +677,8 @@ void SyncResources(SOCKET Sock) {
|
|||||||
c = ::tolower(c);
|
c = ::tolower(c);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
auto name = GetGamePath() + beammp_wide("mods/multiplayer") + Utils::ToWString(modname);
|
auto name = GetGamePath() / beammp_wide("mods/multiplayer") / Utils::ToWString(modname);
|
||||||
auto tmp_name = name + beammp_wide(".tmp");
|
auto tmp_name = name / beammp_wide(".tmp");
|
||||||
fs::copy_file(PathToSaveTo, tmp_name, fs::copy_options::overwrite_existing);
|
fs::copy_file(PathToSaveTo, tmp_name, fs::copy_options::overwrite_existing);
|
||||||
fs::rename(tmp_name, name);
|
fs::rename(tmp_name, name);
|
||||||
UpdateModUsage(modname);
|
UpdateModUsage(modname);
|
||||||
@ -725,8 +725,8 @@ void SyncResources(SOCKET Sock) {
|
|||||||
}
|
}
|
||||||
} while (fs::file_size(PathToSaveTo) != std::stoull(*FS) && !Terminate);
|
} while (fs::file_size(PathToSaveTo) != std::stoull(*FS) && !Terminate);
|
||||||
if (!Terminate) {
|
if (!Terminate) {
|
||||||
if (!fs::exists(GetGamePath() + beammp_wide("mods/multiplayer"))) {
|
if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) {
|
||||||
fs::create_directories(GetGamePath() + beammp_wide("mods/multiplayer"));
|
fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Linux version of the game doesnt support uppercase letters in mod names
|
// Linux version of the game doesnt support uppercase letters in mod names
|
||||||
@ -736,7 +736,7 @@ void SyncResources(SOCKET Sock) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fs::copy_file(PathToSaveTo, GetGamePath() + beammp_wide("mods/multiplayer") + Utils::ToWString(FName), fs::copy_options::overwrite_existing);
|
fs::copy_file(PathToSaveTo, GetGamePath() / beammp_wide("mods/multiplayer") / Utils::ToWString(FName), fs::copy_options::overwrite_existing);
|
||||||
UpdateModUsage(FN->substr(pos));
|
UpdateModUsage(FN->substr(pos));
|
||||||
}
|
}
|
||||||
WaitForConfirm();
|
WaitForConfirm();
|
||||||
|
@ -267,7 +267,7 @@ void CheckMP(const beammp_fs_string& Path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EnableMP() {
|
void EnableMP() {
|
||||||
beammp_fs_string File(GetGamePath() + beammp_wide("mods/db.json"));
|
beammp_fs_string File(GetGamePath() / beammp_wide("mods/db.json"));
|
||||||
if (!fs::exists(File))
|
if (!fs::exists(File))
|
||||||
return;
|
return;
|
||||||
auto Size = fs::file_size(File);
|
auto Size = fs::file_size(File);
|
||||||
@ -300,8 +300,8 @@ void PreGame(const beammp_fs_string& GamePath) {
|
|||||||
std::string GameVer = CheckVer(GamePath);
|
std::string GameVer = CheckVer(GamePath);
|
||||||
info("Game Version : " + GameVer);
|
info("Game Version : " + GameVer);
|
||||||
|
|
||||||
CheckMP(GetGamePath() + beammp_wide("mods/multiplayer"));
|
CheckMP(GetGamePath() / beammp_wide("mods/multiplayer"));
|
||||||
info(beammp_wide("Game user path: ") + GetGamePath());
|
info(beammp_wide("Game user path: ") + beammp_fs_string(GetGamePath()));
|
||||||
|
|
||||||
if (!options.no_download) {
|
if (!options.no_download) {
|
||||||
std::string LatestHash = HTTP::Get("https://backend.beammp.com/sha/mod?branch=" + Branch + "&pk=" + PublicKey);
|
std::string LatestHash = HTTP::Get("https://backend.beammp.com/sha/mod?branch=" + Branch + "&pk=" + PublicKey);
|
||||||
@ -311,18 +311,18 @@ void PreGame(const beammp_fs_string& GamePath) {
|
|||||||
LatestHash.end());
|
LatestHash.end());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!fs::exists(GetGamePath() + beammp_wide("mods/multiplayer"))) {
|
if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) {
|
||||||
fs::create_directories(GetGamePath() + beammp_wide("mods/multiplayer"));
|
fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer"));
|
||||||
}
|
}
|
||||||
EnableMP();
|
EnableMP();
|
||||||
} catch (std::exception& e) {
|
} catch (std::exception& e) {
|
||||||
fatal(e.what());
|
fatal(e.what());
|
||||||
}
|
}
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
std::wstring ZipPath(GetGamePath() + LR"(mods\multiplayer\BeamMP.zip)");
|
std::wstring ZipPath(GetGamePath() / LR"(mods\multiplayer\BeamMP.zip)");
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
// Linux version of the game cant handle mods with uppercase names
|
// Linux version of the game cant handle mods with uppercase names
|
||||||
std::string ZipPath(GetGamePath() + R"(mods/multiplayer/beammp.zip)");
|
std::string ZipPath(GetGamePath() / R"(mods/multiplayer/beammp.zip)");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::string FileHash = Utils::GetSha256HashReallyFast(ZipPath);
|
std::string FileHash = Utils::GetSha256HashReallyFast(ZipPath);
|
||||||
@ -335,7 +335,7 @@ void PreGame(const beammp_fs_string& GamePath) {
|
|||||||
ZipPath);
|
ZipPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
beammp_fs_string Target(GetGamePath() + beammp_wide("mods/unpacked/beammp"));
|
beammp_fs_string Target(GetGamePath() / beammp_wide("mods/unpacked/beammp"));
|
||||||
|
|
||||||
if (fs::is_directory(Target) && !fs::is_directory(Target + beammp_wide("/.git"))) {
|
if (fs::is_directory(Target) && !fs::is_directory(Target + beammp_wide("/.git"))) {
|
||||||
fs::remove_all(Target);
|
fs::remove_all(Target);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user