diff --git a/src/ProfileManager/ProfileManager.cpp b/src/ProfileManager/ProfileManager.cpp index 5b584e2..b7124e7 100644 --- a/src/ProfileManager/ProfileManager.cpp +++ b/src/ProfileManager/ProfileManager.cpp @@ -33,20 +33,10 @@ using namespace Corrade; -ProfileManager::ProfileManager(const std::string& base_path): - _backupsDirectory{Utility::Directory::join(Utility::Directory::path(Utility::Directory::executableLocation()), "backups")} +ProfileManager::ProfileManager(const std::string& save_dir, const std::string& backup_dir): + _saveDirectory{save_dir}, + _backupsDirectory{backup_dir} { - _saveDirectory = Utility::Directory::join(base_path, "Saved/SaveGames"); - - if(!Utility::Directory::exists(_backupsDirectory)) { - Utility::Directory::mkpath(_backupsDirectory); - } - - if(!Utility::Directory::exists(_saveDirectory)) { - _lastError = "Couldn't find the profile directory. Make sure you played enough of the game."; - return; - } - _ready = refreshProfiles(); } @@ -58,14 +48,6 @@ auto ProfileManager::lastError() -> std::string const& { return _lastError; } -auto ProfileManager::saveDirectory() -> std::string const& { - return _saveDirectory; -} - -auto ProfileManager::backupsDirectory() -> std::string const& { - return _backupsDirectory; -} - auto ProfileManager::profiles() -> std::vector const& { return _profiles; } diff --git a/src/ProfileManager/ProfileManager.h b/src/ProfileManager/ProfileManager.h index 7e2f21d..d1d47b6 100644 --- a/src/ProfileManager/ProfileManager.h +++ b/src/ProfileManager/ProfileManager.h @@ -38,14 +38,11 @@ struct Backup { class ProfileManager { public: - ProfileManager(const std::string& base_path); + explicit ProfileManager(const std::string& save_dir, const std::string& backup_dir); auto ready() const -> bool; auto lastError() -> std::string const&; - auto saveDirectory() -> std::string const&; - auto backupsDirectory() -> std::string const&; - auto profiles() -> std::vector const&; auto refreshProfiles() -> bool; @@ -61,10 +58,10 @@ class ProfileManager { private: bool _ready = false; - std::string _lastError = ""; + std::string _lastError; - std::string _saveDirectory; - const std::string _backupsDirectory; + const std::string& _saveDirectory; + const std::string& _backupsDirectory; std::vector _profiles; std::vector _backups; diff --git a/src/SaveTool/SaveTool.cpp b/src/SaveTool/SaveTool.cpp index 5f01873..a24548f 100644 --- a/src/SaveTool/SaveTool.cpp +++ b/src/SaveTool/SaveTool.cpp @@ -87,6 +87,12 @@ SaveTool::SaveTool(const Arguments& arguments): exit(EXIT_FAILURE); } + _backupsDir = Utility::Directory::join(Utility::Directory::path(Utility::Directory::executableLocation()), "backups"); + + if(!Utility::Directory::exists(_backupsDir)) { + Utility::Directory::mkpath(_backupsDir); + } + if(!findGameDataDirectory()) { SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error initialising the app", _lastError.c_str(), window()); exit(EXIT_FAILURE); @@ -304,7 +310,7 @@ void SaveTool::initialiseManager() { SDL_zero(event); event.type = _initEventId; - _profileManager.emplace(_gameDataDir); + _profileManager.emplace(_saveDir, _backupsDir); if(!_profileManager->ready()) { event.user.code = ProfileManagerFailure; SDL_PushEvent(&event); @@ -337,7 +343,7 @@ auto SaveTool::findGameDataDirectory() -> bool { void SaveTool::initialiseMassManager() { _currentProfile->refreshValues(); - _massManager.emplace(_profileManager->saveDirectory(), + _massManager.emplace(_saveDir, _currentProfile->steamId(), _currentProfile->type() == ProfileType::Demo); @@ -346,7 +352,7 @@ void SaveTool::initialiseMassManager() { void SaveTool::initialiseFileWatcher() { _fileWatcher.emplace(); - _watchIDs[SaveDir] = _fileWatcher->addWatch(_profileManager->saveDirectory(), this, false); + _watchIDs[SaveDir] = _fileWatcher->addWatch(_saveDir, this, false); _watchIDs[StagingDir] = _fileWatcher->addWatch(_massManager->stagingAreaDirectory(), this, false); _fileWatcher->watch(); } diff --git a/src/SaveTool/SaveTool.h b/src/SaveTool/SaveTool.h index 2d89d47..858d1c2 100644 --- a/src/SaveTool/SaveTool.h +++ b/src/SaveTool/SaveTool.h @@ -165,6 +165,8 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener std::string _saveDir; std::string _screenshotsDir; + std::string _backupsDir; + enum class GameState : UnsignedByte { Unknown, NotRunning, Running } _gameState{GameState::Unknown}; diff --git a/src/SaveTool/SaveTool_drawMainMenu.cpp b/src/SaveTool/SaveTool_drawMainMenu.cpp index 94876e0..af1f1c3 100644 --- a/src/SaveTool/SaveTool_drawMainMenu.cpp +++ b/src/SaveTool/SaveTool_drawMainMenu.cpp @@ -46,7 +46,7 @@ void SaveTool::drawMainMenu() { } if(ImGui::MenuItem(ICON_FA_FILE_ARCHIVE " Profile backups", nullptr, false, _profileManager != nullptr)) { - openUri(Utility::Directory::toNativeSeparators(_profileManager->backupsDirectory())); + openUri(Utility::Directory::toNativeSeparators(_backupsDir)); } ImGui::EndMenu();