Compare commits
2 commits
2a617b3359
...
688e61b9ae
Author | SHA1 | Date | |
---|---|---|---|
688e61b9ae | |||
241f5b754d |
8 changed files with 39 additions and 55 deletions
|
@ -24,11 +24,11 @@
|
||||||
|
|
||||||
static const std::string empty_string = "";
|
static const std::string empty_string = "";
|
||||||
|
|
||||||
MassManager::MassManager(const std::string& save_path, const std::string& steam_id, bool demo):
|
MassManager::MassManager(const std::string& save_path, const std::string& steam_id, bool demo, const std::string& staging_dir):
|
||||||
_saveDirectory{save_path},
|
_saveDirectory{save_path},
|
||||||
_steamId{steam_id},
|
_steamId{steam_id},
|
||||||
_demo{demo},
|
_demo{demo},
|
||||||
_stagingAreaDirectory{Utility::Directory::join(Utility::Directory::path(Utility::Directory::executableLocation()), "staging")}
|
_stagingAreaDirectory{staging_dir}
|
||||||
{
|
{
|
||||||
Containers::arrayReserve(_hangars, 32);
|
Containers::arrayReserve(_hangars, 32);
|
||||||
|
|
||||||
|
@ -45,14 +45,6 @@ MassManager::MassManager(const std::string& save_path, const std::string& steam_
|
||||||
refreshStagedMasses();
|
refreshStagedMasses();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto MassManager::saveDirectory() -> std::string const& {
|
|
||||||
return _saveDirectory;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto MassManager::stagingAreaDirectory() -> std::string const& {
|
|
||||||
return _stagingAreaDirectory;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto MassManager::lastError() -> std::string const& {
|
auto MassManager::lastError() -> std::string const& {
|
||||||
return _lastError;
|
return _lastError;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,7 @@ using namespace Corrade;
|
||||||
|
|
||||||
class MassManager {
|
class MassManager {
|
||||||
public:
|
public:
|
||||||
MassManager(const std::string& save_path, const std::string& steam_id, bool demo);
|
MassManager(const std::string& save_path, const std::string& steam_id, bool demo, const std::string& staging_dir);
|
||||||
|
|
||||||
auto saveDirectory() -> std::string const&;
|
|
||||||
auto stagingAreaDirectory() -> std::string const&;
|
|
||||||
|
|
||||||
auto lastError() -> std::string const&;
|
auto lastError() -> std::string const&;
|
||||||
|
|
||||||
|
@ -50,15 +47,15 @@ class MassManager {
|
||||||
auto deleteStagedMass(const std::string& filename) -> bool;
|
auto deleteStagedMass(const std::string& filename) -> bool;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string _saveDirectory;
|
const std::string& _saveDirectory;
|
||||||
std::string _steamId;
|
const std::string& _steamId;
|
||||||
bool _demo;
|
bool _demo;
|
||||||
|
|
||||||
std::string _lastError;
|
std::string _lastError;
|
||||||
|
|
||||||
Containers::Array<Mass> _hangars;
|
Containers::Array<Mass> _hangars;
|
||||||
|
|
||||||
const std::string _stagingAreaDirectory;
|
const std::string& _stagingAreaDirectory;
|
||||||
|
|
||||||
std::map<std::string, std::string> _stagedMasses;
|
std::map<std::string, std::string> _stagedMasses;
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,20 +33,10 @@
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
|
||||||
ProfileManager::ProfileManager(const std::string& base_path):
|
ProfileManager::ProfileManager(const std::string& save_dir, const std::string& backup_dir):
|
||||||
_backupsDirectory{Utility::Directory::join(Utility::Directory::path(Utility::Directory::executableLocation()), "backups")}
|
_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();
|
_ready = refreshProfiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,14 +48,6 @@ auto ProfileManager::lastError() -> std::string const& {
|
||||||
return _lastError;
|
return _lastError;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ProfileManager::saveDirectory() -> std::string const& {
|
|
||||||
return _saveDirectory;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto ProfileManager::backupsDirectory() -> std::string const& {
|
|
||||||
return _backupsDirectory;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto ProfileManager::profiles() -> std::vector<Profile> const& {
|
auto ProfileManager::profiles() -> std::vector<Profile> const& {
|
||||||
return _profiles;
|
return _profiles;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,14 +38,11 @@ struct Backup {
|
||||||
|
|
||||||
class ProfileManager {
|
class ProfileManager {
|
||||||
public:
|
public:
|
||||||
ProfileManager(const std::string& base_path);
|
explicit ProfileManager(const std::string& save_dir, const std::string& backup_dir);
|
||||||
|
|
||||||
auto ready() const -> bool;
|
auto ready() const -> bool;
|
||||||
auto lastError() -> std::string const&;
|
auto lastError() -> std::string const&;
|
||||||
|
|
||||||
auto saveDirectory() -> std::string const&;
|
|
||||||
auto backupsDirectory() -> std::string const&;
|
|
||||||
|
|
||||||
auto profiles() -> std::vector<Profile> const&;
|
auto profiles() -> std::vector<Profile> const&;
|
||||||
auto refreshProfiles() -> bool;
|
auto refreshProfiles() -> bool;
|
||||||
|
|
||||||
|
@ -61,10 +58,10 @@ class ProfileManager {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _ready = false;
|
bool _ready = false;
|
||||||
std::string _lastError = "";
|
std::string _lastError;
|
||||||
|
|
||||||
std::string _saveDirectory;
|
const std::string& _saveDirectory;
|
||||||
const std::string _backupsDirectory;
|
const std::string& _backupsDirectory;
|
||||||
|
|
||||||
std::vector<Profile> _profiles;
|
std::vector<Profile> _profiles;
|
||||||
std::vector<Backup> _backups;
|
std::vector<Backup> _backups;
|
||||||
|
|
|
@ -87,6 +87,17 @@ SaveTool::SaveTool(const Arguments& arguments):
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_backupsDir = Utility::Directory::join(Utility::Directory::path(Utility::Directory::executableLocation()), "backups");
|
||||||
|
_stagingDir = Utility::Directory::join(Utility::Directory::path(Utility::Directory::executableLocation()), "staging");
|
||||||
|
|
||||||
|
if(!Utility::Directory::exists(_backupsDir)) {
|
||||||
|
Utility::Directory::mkpath(_backupsDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!Utility::Directory::exists(_stagingDir)) {
|
||||||
|
Utility::Directory::mkpath(_stagingDir);
|
||||||
|
}
|
||||||
|
|
||||||
if(!findGameDataDirectory()) {
|
if(!findGameDataDirectory()) {
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error initialising the app", _lastError.c_str(), window());
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error initialising the app", _lastError.c_str(), window());
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
@ -304,7 +315,7 @@ void SaveTool::initialiseManager() {
|
||||||
SDL_zero(event);
|
SDL_zero(event);
|
||||||
event.type = _initEventId;
|
event.type = _initEventId;
|
||||||
|
|
||||||
_profileManager.emplace(_gameDataDir);
|
_profileManager.emplace(_saveDir, _backupsDir);
|
||||||
if(!_profileManager->ready()) {
|
if(!_profileManager->ready()) {
|
||||||
event.user.code = ProfileManagerFailure;
|
event.user.code = ProfileManagerFailure;
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
|
@ -337,17 +348,18 @@ auto SaveTool::findGameDataDirectory() -> bool {
|
||||||
void SaveTool::initialiseMassManager() {
|
void SaveTool::initialiseMassManager() {
|
||||||
_currentProfile->refreshValues();
|
_currentProfile->refreshValues();
|
||||||
|
|
||||||
_massManager.emplace(_profileManager->saveDirectory(),
|
_massManager.emplace(_saveDir,
|
||||||
_currentProfile->steamId(),
|
_currentProfile->steamId(),
|
||||||
_currentProfile->type() == ProfileType::Demo);
|
_currentProfile->type() == ProfileType::Demo,
|
||||||
|
_stagingDir);
|
||||||
|
|
||||||
initialiseFileWatcher();
|
initialiseFileWatcher();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveTool::initialiseFileWatcher() {
|
void SaveTool::initialiseFileWatcher() {
|
||||||
_fileWatcher.emplace();
|
_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);
|
_watchIDs[StagingDir] = _fileWatcher->addWatch(_stagingDir, this, false);
|
||||||
_fileWatcher->watch();
|
_fileWatcher->watch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -165,6 +165,9 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
std::string _saveDir;
|
std::string _saveDir;
|
||||||
std::string _screenshotsDir;
|
std::string _screenshotsDir;
|
||||||
|
|
||||||
|
std::string _backupsDir;
|
||||||
|
std::string _stagingDir;
|
||||||
|
|
||||||
enum class GameState : UnsignedByte {
|
enum class GameState : UnsignedByte {
|
||||||
Unknown, NotRunning, Running
|
Unknown, NotRunning, Running
|
||||||
} _gameState{GameState::Unknown};
|
} _gameState{GameState::Unknown};
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include <Corrade/Containers/Reference.h>
|
#include <Corrade/Containers/Reference.h>
|
||||||
|
#include <Corrade/Utility/Directory.h>
|
||||||
#include <Corrade/Utility/FormatStl.h>
|
#include <Corrade/Utility/FormatStl.h>
|
||||||
#include <Corrade/Utility/String.h>
|
#include <Corrade/Utility/String.h>
|
||||||
|
|
||||||
|
@ -528,7 +529,7 @@ void SaveTool::drawMassManager() {
|
||||||
ImGui::TextUnformatted("Staging area");
|
ImGui::TextUnformatted("Staging area");
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if(ImGui::SmallButton(ICON_FA_FOLDER_OPEN " Open staging folder")) {
|
if(ImGui::SmallButton(ICON_FA_FOLDER_OPEN " Open staging folder")) {
|
||||||
openUri(_massManager->stagingAreaDirectory());
|
openUri(Utility::Directory::toNativeSeparators(_stagingDir));
|
||||||
}
|
}
|
||||||
|
|
||||||
for(const auto& pair : _massManager->stagedMasses()) {
|
for(const auto& pair : _massManager->stagedMasses()) {
|
||||||
|
|
|
@ -41,12 +41,12 @@ void SaveTool::drawMainMenu() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ImGui::BeginMenu(ICON_FA_FOLDER_OPEN " Open manager directory")) {
|
if(ImGui::BeginMenu(ICON_FA_FOLDER_OPEN " Open manager directory")) {
|
||||||
if(ImGui::MenuItem(ICON_FA_EXCHANGE_ALT " Staging area", nullptr, false, _massManager != nullptr)) {
|
if(ImGui::MenuItem(ICON_FA_FILE_ARCHIVE " Profile backups", nullptr, false, _profileManager != nullptr)) {
|
||||||
openUri(Utility::Directory::toNativeSeparators(_massManager->stagingAreaDirectory()));
|
openUri(Utility::Directory::toNativeSeparators(_backupsDir));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ImGui::MenuItem(ICON_FA_FILE_ARCHIVE " Profile backups", nullptr, false, _profileManager != nullptr)) {
|
if(ImGui::MenuItem(ICON_FA_EXCHANGE_ALT " Staging area", nullptr, false, _massManager != nullptr)) {
|
||||||
openUri(Utility::Directory::toNativeSeparators(_profileManager->backupsDirectory()));
|
openUri(Utility::Directory::toNativeSeparators(_stagingDir));
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
|
|
Loading…
Reference in a new issue