Compare commits
5 commits
fd9f9e5e36
...
04d2ab9dc7
Author | SHA1 | Date | |
---|---|---|---|
04d2ab9dc7 | |||
9d1d0af70a | |||
29b6e57956 | |||
0b2796e94b | |||
72e71b575a |
41 changed files with 117 additions and 102 deletions
|
@ -13,7 +13,7 @@ launch `MassBuilderSaveTool-<version>.exe`.
|
||||||
|
|
||||||
1. Install the 64-bit (`x86_64`) version of [MSYS2](https://www.msys2.org/) in its default path (`C:\msys64`), and
|
1. Install the 64-bit (`x86_64`) version of [MSYS2](https://www.msys2.org/) in its default path (`C:\msys64`), and
|
||||||
update it fully.
|
update it fully.
|
||||||
2. Run `pacman -S git mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja`.
|
2. Run `pacman -S git mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja mingw-w64-ucrt-x86_64-zlib`.
|
||||||
3. In a `URCT64` shell, type `git clone https://github.com/williamjcm/MassBuilderSaveTool`.
|
3. In a `URCT64` shell, type `git clone https://github.com/williamjcm/MassBuilderSaveTool`.
|
||||||
4. Type `cd MassBuilderSaveTool && git submodule init && git submodule update && mkdir build && cd build`.
|
4. Type `cd MassBuilderSaveTool && git submodule init && git submodule update && mkdir build && cd build`.
|
||||||
5. Type `cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..`
|
5. Type `cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..`
|
||||||
|
|
|
@ -38,8 +38,8 @@
|
||||||
|
|
||||||
#include <efsw/efsw.hpp>
|
#include <efsw/efsw.hpp>
|
||||||
|
|
||||||
#include "../ProfileManager/ProfileManager.h"
|
#include "../Managers/Mass.h"
|
||||||
#include "../MassManager/MassManager.h"
|
#include "../Managers/Profile.h"
|
||||||
#include "../ToastQueue/ToastQueue.h"
|
#include "../ToastQueue/ToastQueue.h"
|
||||||
#include "../UpdateChecker/UpdateChecker.h"
|
#include "../UpdateChecker/UpdateChecker.h"
|
||||||
|
|
||||||
|
@ -236,10 +236,10 @@ class Application: public Platform::Sdl2Application, public efsw::FileWatchListe
|
||||||
|
|
||||||
SDL_TimerID _gameCheckTimerId = 0;
|
SDL_TimerID _gameCheckTimerId = 0;
|
||||||
|
|
||||||
Containers::Pointer<ProfileManager> _profileManager;
|
Containers::Pointer<Managers::Profile> _profileManager;
|
||||||
GameObjects::Profile* _currentProfile = nullptr;
|
GameObjects::Profile* _currentProfile = nullptr;
|
||||||
|
|
||||||
Containers::Pointer<MassManager> _massManager;
|
Containers::Pointer<Managers::Mass> _massManager;
|
||||||
GameObjects::Mass* _currentMass = nullptr;
|
GameObjects::Mass* _currentMass = nullptr;
|
||||||
|
|
||||||
GameObjects::Weapon* _currentWeapon = nullptr;
|
GameObjects::Weapon* _currentWeapon = nullptr;
|
||||||
|
|
|
@ -25,8 +25,8 @@
|
||||||
|
|
||||||
#include "../Configuration/Configuration.h"
|
#include "../Configuration/Configuration.h"
|
||||||
#include "../FontAwesome/IconsFontAwesome5.h"
|
#include "../FontAwesome/IconsFontAwesome5.h"
|
||||||
#include "../Maps/LastMissionId.h"
|
#include "../GameData/LastMissionId.h"
|
||||||
#include "../Maps/StoryProgress.h"
|
#include "../GameData/StoryProgress.h"
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,10 @@
|
||||||
|
|
||||||
#include "../Configuration/Configuration.h"
|
#include "../Configuration/Configuration.h"
|
||||||
#include "../FontAwesome/IconsFontAwesome5.h"
|
#include "../FontAwesome/IconsFontAwesome5.h"
|
||||||
#include "../Maps/Accessories.h"
|
#include "../GameData/Accessories.h"
|
||||||
#define STYLENAMES_DEFINITION
|
#define STYLENAMES_DEFINITION
|
||||||
#include "../Maps/StyleNames.h"
|
#include "../GameData/StyleNames.h"
|
||||||
|
#include "../ImportExport/Export.h"
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,8 @@
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "../FontAwesome/IconsFontAwesome5.h"
|
#include "../FontAwesome/IconsFontAwesome5.h"
|
||||||
|
#include "../GameData/ArmourSets.h"
|
||||||
#include "../Maps/ArmourSets.h"
|
#include "../GameData/StyleNames.h"
|
||||||
#include "../Maps/StyleNames.h"
|
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "../FontAwesome/IconsFontAwesome5.h"
|
#include "../FontAwesome/IconsFontAwesome5.h"
|
||||||
#include "../Maps/StyleNames.h"
|
#include "../GameData/StyleNames.h"
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
|
|
||||||
#include "../FontAwesome/IconsFontAwesome5.h"
|
#include "../FontAwesome/IconsFontAwesome5.h"
|
||||||
|
|
||||||
#include "../Maps/StyleNames.h"
|
#include "../GameData/StyleNames.h"
|
||||||
#include "../Maps/WeaponParts.h"
|
#include "../GameData/WeaponParts.h"
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
|
||||||
|
|
|
@ -157,42 +157,41 @@ add_executable(MassBuilderSaveTool
|
||||||
Application/Application_UpdateChecker.cpp
|
Application/Application_UpdateChecker.cpp
|
||||||
Configuration/Configuration.h
|
Configuration/Configuration.h
|
||||||
Configuration/Configuration.cpp
|
Configuration/Configuration.cpp
|
||||||
ProfileManager/ProfileManager.h
|
GameData/Accessories.h
|
||||||
ProfileManager/ProfileManager.cpp
|
GameData/ArmourSets.h
|
||||||
Profile/Profile.h
|
GameData/LastMissionId.h
|
||||||
Profile/Profile.cpp
|
GameData/ResourceIDs.h
|
||||||
Profile/PropertyNames.h
|
GameData/StoryProgress.h
|
||||||
Profile/ResourceIDs.h
|
GameData/StyleNames.h
|
||||||
MassManager/MassManager.h
|
GameData/WeaponParts.h
|
||||||
MassManager/MassManager.cpp
|
GameObjects/Accessory.h
|
||||||
Mass/Accessory.h
|
GameObjects/ArmourPart.h
|
||||||
Mass/ArmourPart.h
|
GameObjects/BulletLauncherAttachment.h
|
||||||
Mass/BulletLauncherAttachment.h
|
GameObjects/CustomStyle.h
|
||||||
Mass/CustomStyle.h
|
GameObjects/Decal.h
|
||||||
Mass/Decal.h
|
GameObjects/Joints.h
|
||||||
Mass/Joints.h
|
GameObjects/Mass.h
|
||||||
Mass/Mass.h
|
GameObjects/Mass.cpp
|
||||||
Mass/Mass.cpp
|
GameObjects/Mass_Frame.cpp
|
||||||
Mass/Mass_Frame.cpp
|
GameObjects/Mass_Armour.cpp
|
||||||
Mass/Mass_Armour.cpp
|
GameObjects/Mass_Weapons.cpp
|
||||||
Mass/Mass_Weapons.cpp
|
GameObjects/Mass_Styles.cpp
|
||||||
Mass/Mass_Styles.cpp
|
GameObjects/Mass_DecalsAccessories.cpp
|
||||||
Mass/Mass_DecalsAccessories.cpp
|
GameObjects/PropertyNames.h
|
||||||
Mass/PropertyNames.h
|
GameObjects/Profile.h
|
||||||
Mass/Weapon.h
|
GameObjects/Profile.cpp
|
||||||
Mass/Weapon.cpp
|
GameObjects/Weapon.h
|
||||||
Mass/WeaponPart.h
|
GameObjects/Weapon.cpp
|
||||||
Maps/Accessories.h
|
GameObjects/WeaponPart.h
|
||||||
Maps/ArmourSets.h
|
Managers/Mass.h
|
||||||
|
Managers/Mass.cpp
|
||||||
|
Managers/Profile.h
|
||||||
|
Managers/Profile.cpp
|
||||||
Maps/ArmourSlots.hpp
|
Maps/ArmourSlots.hpp
|
||||||
Maps/BulletLauncherAttachmentStyles.hpp
|
Maps/BulletLauncherAttachmentStyles.hpp
|
||||||
Maps/BulletLauncherSockets.hpp
|
Maps/BulletLauncherSockets.hpp
|
||||||
Maps/DamageTypes.hpp
|
Maps/DamageTypes.hpp
|
||||||
Maps/EffectColourModes.hpp
|
Maps/EffectColourModes.hpp
|
||||||
Maps/LastMissionId.h
|
|
||||||
Maps/StoryProgress.h
|
|
||||||
Maps/StyleNames.h
|
|
||||||
Maps/WeaponParts.h
|
|
||||||
Maps/WeaponTypes.hpp
|
Maps/WeaponTypes.hpp
|
||||||
ToastQueue/ToastQueue.h
|
ToastQueue/ToastQueue.h
|
||||||
ToastQueue/ToastQueue.cpp
|
ToastQueue/ToastQueue.cpp
|
||||||
|
|
|
@ -21,10 +21,9 @@
|
||||||
#include <Corrade/Containers/String.h>
|
#include <Corrade/Containers/String.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
|
#include "../GameData/ResourceIDs.h"
|
||||||
#include "../Gvas/File.h"
|
#include "../Gvas/File.h"
|
||||||
|
|
||||||
#include "ResourceIDs.h"
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
|
||||||
namespace mbst { namespace GameObjects {
|
namespace mbst { namespace GameObjects {
|
|
@ -1,5 +1,32 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// MassBuilderSaveTool
|
||||||
|
// Copyright (C) 2021-2024 Guillaume Jacquemin
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Profile stuff
|
||||||
|
#define PROFILE_NAME "CompanyName"
|
||||||
|
#define PROFILE_ACTIVE_FRAME_SLOT "ActiveFrameSlot"
|
||||||
|
#define PROFILE_CREDITS "Credit"
|
||||||
|
#define PROFILE_STORY_PROGRESS "StoryProgress"
|
||||||
|
#define PROFILE_LAST_MISSION_ID "LastMissionID"
|
||||||
|
#define PROFILE_MATERIAL "ResourceMaterial"
|
||||||
|
#define PROFILE_QUARK_DATA "ResourceQuarkData"
|
||||||
|
#define PROFILE_ACCOUNT "Account"
|
||||||
|
|
||||||
|
// Basic MASS stuff
|
||||||
#define MASS_UNIT_DATA "UnitData"
|
#define MASS_UNIT_DATA "UnitData"
|
||||||
#define MASS_NAME "Name_45_A037C5D54E53456407BDF091344529BB"
|
#define MASS_NAME "Name_45_A037C5D54E53456407BDF091344529BB"
|
||||||
#define MASS_ACCOUNT "Account"
|
#define MASS_ACCOUNT "Account"
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include "../Mass/CustomStyle.h"
|
#include "../GameObjects/CustomStyle.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include "../Mass/CustomStyle.h"
|
#include "../GameObjects/CustomStyle.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
|
||||||
|
|
|
@ -21,13 +21,13 @@
|
||||||
|
|
||||||
#include "../Logger/Logger.h"
|
#include "../Logger/Logger.h"
|
||||||
|
|
||||||
#include "MassManager.h"
|
#include "Mass.h"
|
||||||
|
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
|
|
||||||
namespace mbst {
|
namespace mbst { namespace Managers {
|
||||||
|
|
||||||
MassManager::MassManager(Containers::StringView save_path, Containers::StringView account, bool demo,
|
Mass::Mass(Containers::StringView save_path, Containers::StringView account, bool demo,
|
||||||
Containers::StringView staging_dir):
|
Containers::StringView staging_dir):
|
||||||
_saveDirectory{save_path}, _account{account}, _demo{demo}, _stagingAreaDirectory{staging_dir}
|
_saveDirectory{save_path}, _account{account}, _demo{demo}, _stagingAreaDirectory{staging_dir}
|
||||||
{
|
{
|
||||||
|
@ -42,17 +42,17 @@ MassManager::MassManager(Containers::StringView save_path, Containers::StringVie
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::StringView
|
Containers::StringView
|
||||||
MassManager::lastError() {
|
Mass::lastError() {
|
||||||
return _lastError;
|
return _lastError;
|
||||||
}
|
}
|
||||||
|
|
||||||
GameObjects::Mass&
|
GameObjects::Mass&
|
||||||
MassManager::hangar(std::int32_t hangar) {
|
Mass::hangar(std::int32_t hangar) {
|
||||||
return _hangars[hangar];
|
return _hangars[hangar];
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MassManager::refreshHangar(std::int32_t hangar) {
|
Mass::refreshHangar(std::int32_t hangar) {
|
||||||
if(hangar < 0 || hangar >= 32) {
|
if(hangar < 0 || hangar >= 32) {
|
||||||
_lastError = "Hangar index out of range.";
|
_lastError = "Hangar index out of range.";
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -66,7 +66,7 @@ MassManager::refreshHangar(std::int32_t hangar) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::importMass(Containers::StringView staged_fn, std::int32_t hangar) {
|
Mass::importMass(Containers::StringView staged_fn, std::int32_t hangar) {
|
||||||
if(hangar < 0 || hangar >= 32) {
|
if(hangar < 0 || hangar >= 32) {
|
||||||
_lastError = "Hangar index out of range.";
|
_lastError = "Hangar index out of range.";
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -109,7 +109,7 @@ MassManager::importMass(Containers::StringView staged_fn, std::int32_t hangar) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::exportMass(std::int32_t hangar) {
|
Mass::exportMass(std::int32_t hangar) {
|
||||||
if(hangar < 0 || hangar >= 32) {
|
if(hangar < 0 || hangar >= 32) {
|
||||||
_lastError = "Hangar index out of range."_s;
|
_lastError = "Hangar index out of range."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -136,7 +136,7 @@ MassManager::exportMass(std::int32_t hangar) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::moveMass(std::int32_t source, std::int32_t destination) {
|
Mass::moveMass(std::int32_t source, std::int32_t destination) {
|
||||||
if(source < 0 || source >= 32) {
|
if(source < 0 || source >= 32) {
|
||||||
_lastError = "Source hangar index out of range."_s;
|
_lastError = "Source hangar index out of range."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -174,7 +174,7 @@ MassManager::moveMass(std::int32_t source, std::int32_t destination) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::deleteMass(std::int32_t hangar) {
|
Mass::deleteMass(std::int32_t hangar) {
|
||||||
if(hangar < 0 || hangar >= 32) {
|
if(hangar < 0 || hangar >= 32) {
|
||||||
_lastError = "Hangar index out of range."_s;
|
_lastError = "Hangar index out of range."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -191,12 +191,12 @@ MassManager::deleteMass(std::int32_t hangar) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::map<Containers::String, Containers::String>&
|
const std::map<Containers::String, Containers::String>&
|
||||||
MassManager::stagedMasses() {
|
Mass::stagedMasses() {
|
||||||
return _stagedMasses;
|
return _stagedMasses;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MassManager::refreshStagedMasses() {
|
Mass::refreshStagedMasses() {
|
||||||
_stagedMasses.clear();
|
_stagedMasses.clear();
|
||||||
|
|
||||||
using Utility::Path::ListFlag;
|
using Utility::Path::ListFlag;
|
||||||
|
@ -229,7 +229,7 @@ MassManager::refreshStagedMasses() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MassManager::refreshStagedMass(Containers::StringView filename) {
|
Mass::refreshStagedMass(Containers::StringView filename) {
|
||||||
LOG_INFO_FORMAT("Refreshing staged unit with filename {}.", filename);
|
LOG_INFO_FORMAT("Refreshing staged unit with filename {}.", filename);
|
||||||
|
|
||||||
bool file_exists = Utility::Path::exists(Utility::Path::join(_stagingAreaDirectory, filename));
|
bool file_exists = Utility::Path::exists(Utility::Path::join(_stagingAreaDirectory, filename));
|
||||||
|
@ -250,7 +250,7 @@ MassManager::refreshStagedMass(Containers::StringView filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::deleteStagedMass(Containers::StringView filename) {
|
Mass::deleteStagedMass(Containers::StringView filename) {
|
||||||
if(_stagedMasses.find(filename) == _stagedMasses.cend()) {
|
if(_stagedMasses.find(filename) == _stagedMasses.cend()) {
|
||||||
_lastError = "The file "_s + filename + " couldn't be found in the list of staged M.A.S.S.es."_s;
|
_lastError = "The file "_s + filename + " couldn't be found in the list of staged M.A.S.S.es."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -266,4 +266,4 @@ MassManager::deleteStagedMass(Containers::StringView filename) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}}
|
|
@ -22,15 +22,15 @@
|
||||||
#include <Corrade/Containers/String.h>
|
#include <Corrade/Containers/String.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include "../Mass/Mass.h"
|
#include "../GameObjects/Mass.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
|
||||||
namespace mbst {
|
namespace mbst { namespace Managers {
|
||||||
|
|
||||||
class MassManager {
|
class Mass {
|
||||||
public:
|
public:
|
||||||
MassManager(Containers::StringView save_path, Containers::StringView account, bool demo, Containers::StringView staging_dir);
|
Mass(Containers::StringView save_path, Containers::StringView account, bool demo, Containers::StringView staging_dir);
|
||||||
|
|
||||||
auto lastError() -> Containers::StringView;
|
auto lastError() -> Containers::StringView;
|
||||||
|
|
||||||
|
@ -63,4 +63,4 @@ class MassManager {
|
||||||
std::map<Containers::String, Containers::String> _stagedMasses;
|
std::map<Containers::String, Containers::String> _stagedMasses;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}}
|
|
@ -29,13 +29,13 @@
|
||||||
|
|
||||||
#include "../Logger/Logger.h"
|
#include "../Logger/Logger.h"
|
||||||
|
|
||||||
#include "ProfileManager.h"
|
#include "Profile.h"
|
||||||
|
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
|
|
||||||
namespace mbst {
|
namespace mbst { namespace Managers {
|
||||||
|
|
||||||
ProfileManager::ProfileManager(Containers::StringView save_dir, Containers::StringView backup_dir):
|
Profile::Profile(Containers::StringView save_dir, Containers::StringView backup_dir):
|
||||||
_saveDirectory{save_dir},
|
_saveDirectory{save_dir},
|
||||||
_backupsDirectory{backup_dir}
|
_backupsDirectory{backup_dir}
|
||||||
{
|
{
|
||||||
|
@ -43,22 +43,22 @@ ProfileManager::ProfileManager(Containers::StringView save_dir, Containers::Stri
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ProfileManager::ready() const {
|
Profile::ready() const {
|
||||||
return _ready;
|
return _ready;
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::StringView
|
Containers::StringView
|
||||||
ProfileManager::lastError() {
|
Profile::lastError() {
|
||||||
return _lastError;
|
return _lastError;
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::ArrayView<GameObjects::Profile>
|
Containers::ArrayView<GameObjects::Profile>
|
||||||
ProfileManager::profiles() {
|
Profile::profiles() {
|
||||||
return _profiles;
|
return _profiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ProfileManager::refreshProfiles() {
|
Profile::refreshProfiles() {
|
||||||
LOG_INFO("Refreshing profiles.");
|
LOG_INFO("Refreshing profiles.");
|
||||||
|
|
||||||
_profiles = Containers::Array<GameObjects::Profile>{};
|
_profiles = Containers::Array<GameObjects::Profile>{};
|
||||||
|
@ -100,12 +100,12 @@ ProfileManager::refreshProfiles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
GameObjects::Profile*
|
GameObjects::Profile*
|
||||||
ProfileManager::getProfile(std::size_t index) {
|
Profile::getProfile(std::size_t index) {
|
||||||
return index <= _profiles.size() ? &(_profiles[index]) : nullptr;
|
return index <= _profiles.size() ? &(_profiles[index]) : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ProfileManager::deleteProfile(std::size_t index, bool delete_builds) {
|
Profile::deleteProfile(std::size_t index, bool delete_builds) {
|
||||||
if(!Utility::Path::remove(Utility::Path::join(_saveDirectory, _profiles[index].filename()))) {
|
if(!Utility::Path::remove(Utility::Path::join(_saveDirectory, _profiles[index].filename()))) {
|
||||||
_lastError = Utility::format("Couldn't delete {} (filename: {}).",
|
_lastError = Utility::format("Couldn't delete {} (filename: {}).",
|
||||||
_profiles[index].companyName(),
|
_profiles[index].companyName(),
|
||||||
|
@ -136,7 +136,7 @@ ProfileManager::deleteProfile(std::size_t index, bool delete_builds) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ProfileManager::backupProfile(std::size_t index, bool backup_builds) {
|
Profile::backupProfile(std::size_t index, bool backup_builds) {
|
||||||
std::time_t timestamp = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
|
std::time_t timestamp = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
|
||||||
std::tm* time = std::localtime(×tamp);
|
std::tm* time = std::localtime(×tamp);
|
||||||
auto& profile = _profiles[index];
|
auto& profile = _profiles[index];
|
||||||
|
@ -213,12 +213,12 @@ ProfileManager::backupProfile(std::size_t index, bool backup_builds) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::ArrayView<Backup>
|
Containers::ArrayView<Backup>
|
||||||
ProfileManager::backups() {
|
Profile::backups() {
|
||||||
return _backups;
|
return _backups;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ProfileManager::refreshBackups() {
|
Profile::refreshBackups() {
|
||||||
_backups = Containers::Array<Backup>{};
|
_backups = Containers::Array<Backup>{};
|
||||||
|
|
||||||
using Utility::Path::ListFlag;
|
using Utility::Path::ListFlag;
|
||||||
|
@ -303,7 +303,7 @@ ProfileManager::refreshBackups() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ProfileManager::deleteBackup(std::size_t index) {
|
Profile::deleteBackup(std::size_t index) {
|
||||||
if(!Utility::Path::remove(Utility::Path::join(_backupsDirectory, _backups[index].filename))) {
|
if(!Utility::Path::remove(Utility::Path::join(_backupsDirectory, _backups[index].filename))) {
|
||||||
_lastError = "Couldn't delete " + _backups[index].filename;
|
_lastError = "Couldn't delete " + _backups[index].filename;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -321,7 +321,7 @@ ProfileManager::deleteBackup(std::size_t index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ProfileManager::restoreBackup(std::size_t index) {
|
Profile::restoreBackup(std::size_t index) {
|
||||||
const Backup& backup = _backups[index];
|
const Backup& backup = _backups[index];
|
||||||
|
|
||||||
auto error_format = "Extraction of file {} failed: {}"_s;
|
auto error_format = "Extraction of file {} failed: {}"_s;
|
||||||
|
@ -380,4 +380,4 @@ ProfileManager::restoreBackup(std::size_t index) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}}
|
|
@ -23,11 +23,11 @@
|
||||||
#include <Corrade/Containers/Array.h>
|
#include <Corrade/Containers/Array.h>
|
||||||
#include <Corrade/Containers/String.h>
|
#include <Corrade/Containers/String.h>
|
||||||
|
|
||||||
#include "../Profile/Profile.h"
|
#include "../GameObjects/Profile.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
|
||||||
namespace mbst {
|
namespace mbst { namespace Managers {
|
||||||
|
|
||||||
struct Backup {
|
struct Backup {
|
||||||
Containers::String filename;
|
Containers::String filename;
|
||||||
|
@ -44,9 +44,9 @@ struct Backup {
|
||||||
Containers::Array<Containers::String> includedFiles;
|
Containers::Array<Containers::String> includedFiles;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProfileManager {
|
class Profile {
|
||||||
public:
|
public:
|
||||||
explicit ProfileManager(Containers::StringView save_dir, Containers::StringView backup_dir);
|
explicit Profile(Containers::StringView save_dir, Containers::StringView backup_dir);
|
||||||
|
|
||||||
auto ready() const -> bool;
|
auto ready() const -> bool;
|
||||||
auto lastError() -> Containers::StringView;
|
auto lastError() -> Containers::StringView;
|
||||||
|
@ -75,4 +75,4 @@ class ProfileManager {
|
||||||
Containers::Array<Backup> _backups;
|
Containers::Array<Backup> _backups;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}}
|
|
@ -1,10 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#define PROFILE_NAME "CompanyName"
|
|
||||||
#define PROFILE_ACTIVE_FRAME_SLOT "ActiveFrameSlot"
|
|
||||||
#define PROFILE_CREDITS "Credit"
|
|
||||||
#define PROFILE_STORY_PROGRESS "StoryProgress"
|
|
||||||
#define PROFILE_LAST_MISSION_ID "LastMissionID"
|
|
||||||
#define PROFILE_MATERIAL "ResourceMaterial"
|
|
||||||
#define PROFILE_QUARK_DATA "ResourceQuarkData"
|
|
||||||
#define PROFILE_ACCOUNT "Account"
|
|
Loading…
Reference in a new issue