diff --git a/include/Startup.h b/include/Startup.h index f2e9d45..d0ed404 100644 --- a/include/Startup.h +++ b/include/Startup.h @@ -9,7 +9,7 @@ #include void InitLauncher(int argc, char* argv[]); void CheckDir(int argc,char* args[]); -std::wstring GetGamePath(); +std::string GetGamePath(); std::string GetVer(); std::string GetEN(); extern bool Dev; \ No newline at end of file diff --git a/src/GameStart.cpp b/src/GameStart.cpp index c6a69d7..fb9d5bc 100644 --- a/src/GameStart.cpp +++ b/src/GameStart.cpp @@ -8,17 +8,14 @@ #include #include "Startup.h" -#include #include "Logger.h" #include -#include #include -#include unsigned long GamePID = 0; std::string QueryKey(HKEY hKey,int ID); -std::wstring GetGamePath(){ - static std::wstring Path; +std::string GetGamePath(){ + static std::string Path; if(!Path.empty())return Path; HKEY hKey; @@ -27,17 +24,15 @@ std::wstring GetGamePath(){ if (openRes != ERROR_SUCCESS){ fatal("Please launch the game at least once"); } - std::string T = QueryKey(hKey,4); - Path = std::wstring(T.begin(),T.end()); + Path = QueryKey(hKey,4); if(Path.empty()){ - CoInitialize(nullptr); - wchar_t * path = nullptr; - SHGetKnownFolderPath(FOLDERID_Documents, KF_FLAG_SIMPLE_IDLIST, nullptr, (PWSTR *)(&path)); - CoTaskMemFree(path); - std::wstring ws(path); - ws += L"\\BeamNG.drive\\"; - return ws; + size_t RS; + getenv_s(&RS, nullptr, 0, "USERPROFILE"); + std::string P(RS-1,0); + getenv_s(&RS, &P[0], RS, "USERPROFILE"); + Path = P + R"(\Documents\BeamNG.drive\)"; + return Path; } return Path; diff --git a/src/Network/Resources.cpp b/src/Network/Resources.cpp index 19ae203..4333a96 100644 --- a/src/Network/Resources.cpp +++ b/src/Network/Resources.cpp @@ -256,11 +256,10 @@ void SyncResources(SOCKET Sock){ UpdateUl(false,std::to_string(Pos) + "/" + std::to_string(Amount) + ": " + a.substr(a.find_last_of('/'))); std::this_thread::sleep_for(std::chrono::milliseconds(50)); try { - if(!fs::exists(GetGamePath() + L"mods/multiplayer")){ - fs::create_directory(GetGamePath() + L"mods/multiplayer"); + if(!fs::exists(GetGamePath() + "mods/multiplayer")){ + fs::create_directory(GetGamePath() + "mods/multiplayer"); } - std::string P = "mods/multiplayer" + a.substr(a.find_last_of('/')); - fs::copy_file(a, GetGamePath() + std::wstring(P.begin(),P.end()), + fs::copy_file(a, GetGamePath() + "mods/multiplayer" + a.substr(a.find_last_of('/')), fs::copy_options::overwrite_existing); } catch (std::exception& e) { error("Failed copy to the mods folder! " + std::string(e.what())); @@ -298,10 +297,10 @@ void SyncResources(SOCKET Sock){ }while(fs::file_size(a) != std::stoull(*FS) && !Terminate); if(!Terminate){ - if(!fs::exists(GetGamePath() + L"mods/multiplayer")){ - fs::create_directory(GetGamePath() + L"mods/multiplayer"); + if(!fs::exists(GetGamePath() + "mods/multiplayer")){ + fs::create_directory(GetGamePath() + "mods/multiplayer"); } - fs::copy_file(a,GetGamePath() + L"mods/multiplayer" + std::wstring(FName.begin(),FName.end()), fs::copy_options::overwrite_existing); + fs::copy_file(a,GetGamePath() + "mods/multiplayer" + FName, fs::copy_options::overwrite_existing); } WaitForConfirm(); } diff --git a/src/Startup.cpp b/src/Startup.cpp index 7326e82..e3436e6 100644 --- a/src/Startup.cpp +++ b/src/Startup.cpp @@ -27,7 +27,7 @@ std::string GetVer(){ return "1.80"; } std::string GetPatch(){ - return ".4"; + return ".5"; } void ReLaunch(int argc,char*args[]){ std::string Arg; @@ -187,32 +187,23 @@ void InitLauncher(int argc, char* argv[]) { CustomPort(argc, argv); CheckForUpdates(argc, argv, std::string(GetVer()) + GetPatch()); } -inline std::string to_string(const std::wstring& str){ - auto loc = std::locale{}; - std::vector buf(str.size()); - std::use_facet>(loc).narrow(str.data(), str.data() + str.size(), '?', buf.data()); - return std::string(buf.data(), buf.size()); -} void PreGame(const std::string& GamePath){ info("Game Version : " + CheckVer(GamePath)); if(!Dev) { info("Downloading mod..."); - //if(fallback)link = "https://backup1.beammp.com/builds/client"; - std::string link = "https://beammp.com/builds/client"; try { - if (!fs::exists(GetGamePath() + L"mods")) { - fs::create_directory(GetGamePath() + L"mods"); + if (!fs::exists(GetGamePath() + "mods")) { + fs::create_directory(GetGamePath() + "mods"); } - if (!fs::exists(GetGamePath() + L"mods/multiplayer")) { - fs::create_directory(GetGamePath() + L"mods/multiplayer"); + if (!fs::exists(GetGamePath() + "mods/multiplayer")) { + fs::create_directory(GetGamePath() + "mods/multiplayer"); } - std::wstring P = GetGamePath() + LR"(mods/multiplayer/BeamMP.zip)"; - Download(link, to_string(P), true); }catch(std::exception&e){ fatal(e.what()); } + Download("https://beammp.com/builds/client", GetGamePath() + R"(mods\multiplayer\BeamMP.zip)", true); info("Download Complete!"); }