Compare commits

...

5 commits

Author SHA1 Message Date
04d2ab9dc7
{Mass,Profile}Manager: move into new namespace. 2024-03-28 13:32:34 +01:00
9d1d0af70a
GameObjects: merge the two property name headers. 2024-03-28 13:18:56 +01:00
29b6e57956
GameObjects: move files into a dedicated folder. 2024-03-28 13:15:47 +01:00
0b2796e94b
GameData: move headers into a dedicated folder.
From now on, Maps will only be for preprocessor-powered
multi-directional mapping fuckery.
2024-03-28 12:50:15 +01:00
72e71b575a
README: mention zlib needs to be installed.
It might already be a dependency of other packages installed through
the command-line, but better safe than sorry.
2024-03-28 12:23:25 +01:00
41 changed files with 117 additions and 102 deletions

View file

@ -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
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`.
4. Type `cd MassBuilderSaveTool && git submodule init && git submodule update && mkdir build && cd build`.
5. Type `cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..`

View file

@ -38,8 +38,8 @@
#include <efsw/efsw.hpp>
#include "../ProfileManager/ProfileManager.h"
#include "../MassManager/MassManager.h"
#include "../Managers/Mass.h"
#include "../Managers/Profile.h"
#include "../ToastQueue/ToastQueue.h"
#include "../UpdateChecker/UpdateChecker.h"
@ -236,11 +236,11 @@ class Application: public Platform::Sdl2Application, public efsw::FileWatchListe
SDL_TimerID _gameCheckTimerId = 0;
Containers::Pointer<ProfileManager> _profileManager;
GameObjects::Profile* _currentProfile = nullptr;
Containers::Pointer<Managers::Profile> _profileManager;
GameObjects::Profile* _currentProfile = nullptr;
Containers::Pointer<MassManager> _massManager;
GameObjects::Mass* _currentMass = nullptr;
Containers::Pointer<Managers::Mass> _massManager;
GameObjects::Mass* _currentMass = nullptr;
GameObjects::Weapon* _currentWeapon = nullptr;

View file

@ -25,8 +25,8 @@
#include "../Configuration/Configuration.h"
#include "../FontAwesome/IconsFontAwesome5.h"
#include "../Maps/LastMissionId.h"
#include "../Maps/StoryProgress.h"
#include "../GameData/LastMissionId.h"
#include "../GameData/StoryProgress.h"
#include "Application.h"

View file

@ -21,9 +21,10 @@
#include "../Configuration/Configuration.h"
#include "../FontAwesome/IconsFontAwesome5.h"
#include "../Maps/Accessories.h"
#include "../GameData/Accessories.h"
#define STYLENAMES_DEFINITION
#include "../Maps/StyleNames.h"
#include "../GameData/StyleNames.h"
#include "../ImportExport/Export.h"
#include "Application.h"

View file

@ -15,9 +15,8 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
#include "../FontAwesome/IconsFontAwesome5.h"
#include "../Maps/ArmourSets.h"
#include "../Maps/StyleNames.h"
#include "../GameData/ArmourSets.h"
#include "../GameData/StyleNames.h"
#include "Application.h"

View file

@ -15,7 +15,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
#include "../FontAwesome/IconsFontAwesome5.h"
#include "../Maps/StyleNames.h"
#include "../GameData/StyleNames.h"
#include "Application.h"

View file

@ -16,8 +16,8 @@
#include "../FontAwesome/IconsFontAwesome5.h"
#include "../Maps/StyleNames.h"
#include "../Maps/WeaponParts.h"
#include "../GameData/StyleNames.h"
#include "../GameData/WeaponParts.h"
#include "Application.h"

View file

@ -157,42 +157,41 @@ add_executable(MassBuilderSaveTool
Application/Application_UpdateChecker.cpp
Configuration/Configuration.h
Configuration/Configuration.cpp
ProfileManager/ProfileManager.h
ProfileManager/ProfileManager.cpp
Profile/Profile.h
Profile/Profile.cpp
Profile/PropertyNames.h
Profile/ResourceIDs.h
MassManager/MassManager.h
MassManager/MassManager.cpp
Mass/Accessory.h
Mass/ArmourPart.h
Mass/BulletLauncherAttachment.h
Mass/CustomStyle.h
Mass/Decal.h
Mass/Joints.h
Mass/Mass.h
Mass/Mass.cpp
Mass/Mass_Frame.cpp
Mass/Mass_Armour.cpp
Mass/Mass_Weapons.cpp
Mass/Mass_Styles.cpp
Mass/Mass_DecalsAccessories.cpp
Mass/PropertyNames.h
Mass/Weapon.h
Mass/Weapon.cpp
Mass/WeaponPart.h
Maps/Accessories.h
Maps/ArmourSets.h
GameData/Accessories.h
GameData/ArmourSets.h
GameData/LastMissionId.h
GameData/ResourceIDs.h
GameData/StoryProgress.h
GameData/StyleNames.h
GameData/WeaponParts.h
GameObjects/Accessory.h
GameObjects/ArmourPart.h
GameObjects/BulletLauncherAttachment.h
GameObjects/CustomStyle.h
GameObjects/Decal.h
GameObjects/Joints.h
GameObjects/Mass.h
GameObjects/Mass.cpp
GameObjects/Mass_Frame.cpp
GameObjects/Mass_Armour.cpp
GameObjects/Mass_Weapons.cpp
GameObjects/Mass_Styles.cpp
GameObjects/Mass_DecalsAccessories.cpp
GameObjects/PropertyNames.h
GameObjects/Profile.h
GameObjects/Profile.cpp
GameObjects/Weapon.h
GameObjects/Weapon.cpp
GameObjects/WeaponPart.h
Managers/Mass.h
Managers/Mass.cpp
Managers/Profile.h
Managers/Profile.cpp
Maps/ArmourSlots.hpp
Maps/BulletLauncherAttachmentStyles.hpp
Maps/BulletLauncherSockets.hpp
Maps/DamageTypes.hpp
Maps/EffectColourModes.hpp
Maps/LastMissionId.h
Maps/StoryProgress.h
Maps/StyleNames.h
Maps/WeaponParts.h
Maps/WeaponTypes.hpp
ToastQueue/ToastQueue.h
ToastQueue/ToastQueue.cpp

View file

@ -21,10 +21,9 @@
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/StringView.h>
#include "../GameData/ResourceIDs.h"
#include "../Gvas/File.h"
#include "ResourceIDs.h"
using namespace Corrade;
namespace mbst { namespace GameObjects {

View file

@ -1,5 +1,32 @@
#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_NAME "Name_45_A037C5D54E53456407BDF091344529BB"
#define MASS_ACCOUNT "Account"

View file

@ -18,7 +18,7 @@
#include <Corrade/Containers/StringView.h>
#include "../Mass/CustomStyle.h"
#include "../GameObjects/CustomStyle.h"
using namespace Corrade;

View file

@ -18,7 +18,7 @@
#include <Corrade/Containers/StringView.h>
#include "../Mass/CustomStyle.h"
#include "../GameObjects/CustomStyle.h"
using namespace Corrade;

View file

@ -21,13 +21,13 @@
#include "../Logger/Logger.h"
#include "MassManager.h"
#include "Mass.h"
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):
_saveDirectory{save_path}, _account{account}, _demo{demo}, _stagingAreaDirectory{staging_dir}
{
@ -42,17 +42,17 @@ MassManager::MassManager(Containers::StringView save_path, Containers::StringVie
}
Containers::StringView
MassManager::lastError() {
Mass::lastError() {
return _lastError;
}
GameObjects::Mass&
MassManager::hangar(std::int32_t hangar) {
Mass::hangar(std::int32_t hangar) {
return _hangars[hangar];
}
void
MassManager::refreshHangar(std::int32_t hangar) {
Mass::refreshHangar(std::int32_t hangar) {
if(hangar < 0 || hangar >= 32) {
_lastError = "Hangar index out of range.";
LOG_ERROR(_lastError);
@ -66,7 +66,7 @@ MassManager::refreshHangar(std::int32_t hangar) {
}
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) {
_lastError = "Hangar index out of range.";
LOG_ERROR(_lastError);
@ -109,7 +109,7 @@ MassManager::importMass(Containers::StringView staged_fn, std::int32_t hangar) {
}
bool
MassManager::exportMass(std::int32_t hangar) {
Mass::exportMass(std::int32_t hangar) {
if(hangar < 0 || hangar >= 32) {
_lastError = "Hangar index out of range."_s;
LOG_ERROR(_lastError);
@ -136,7 +136,7 @@ MassManager::exportMass(std::int32_t hangar) {
}
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) {
_lastError = "Source hangar index out of range."_s;
LOG_ERROR(_lastError);
@ -174,7 +174,7 @@ MassManager::moveMass(std::int32_t source, std::int32_t destination) {
}
bool
MassManager::deleteMass(std::int32_t hangar) {
Mass::deleteMass(std::int32_t hangar) {
if(hangar < 0 || hangar >= 32) {
_lastError = "Hangar index out of range."_s;
LOG_ERROR(_lastError);
@ -191,12 +191,12 @@ MassManager::deleteMass(std::int32_t hangar) {
}
const std::map<Containers::String, Containers::String>&
MassManager::stagedMasses() {
Mass::stagedMasses() {
return _stagedMasses;
}
void
MassManager::refreshStagedMasses() {
Mass::refreshStagedMasses() {
_stagedMasses.clear();
using Utility::Path::ListFlag;
@ -229,7 +229,7 @@ MassManager::refreshStagedMasses() {
}
void
MassManager::refreshStagedMass(Containers::StringView filename) {
Mass::refreshStagedMass(Containers::StringView filename) {
LOG_INFO_FORMAT("Refreshing staged unit with filename {}.", filename);
bool file_exists = Utility::Path::exists(Utility::Path::join(_stagingAreaDirectory, filename));
@ -250,7 +250,7 @@ MassManager::refreshStagedMass(Containers::StringView filename) {
}
bool
MassManager::deleteStagedMass(Containers::StringView filename) {
Mass::deleteStagedMass(Containers::StringView filename) {
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;
LOG_ERROR(_lastError);
@ -266,4 +266,4 @@ MassManager::deleteStagedMass(Containers::StringView filename) {
return true;
}
}
}}

View file

@ -22,15 +22,15 @@
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/StringView.h>
#include "../Mass/Mass.h"
#include "../GameObjects/Mass.h"
using namespace Corrade;
namespace mbst {
namespace mbst { namespace Managers {
class MassManager {
class Mass {
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;
@ -63,4 +63,4 @@ class MassManager {
std::map<Containers::String, Containers::String> _stagedMasses;
};
}
}}

View file

@ -29,13 +29,13 @@
#include "../Logger/Logger.h"
#include "ProfileManager.h"
#include "Profile.h"
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},
_backupsDirectory{backup_dir}
{
@ -43,22 +43,22 @@ ProfileManager::ProfileManager(Containers::StringView save_dir, Containers::Stri
}
bool
ProfileManager::ready() const {
Profile::ready() const {
return _ready;
}
Containers::StringView
ProfileManager::lastError() {
Profile::lastError() {
return _lastError;
}
Containers::ArrayView<GameObjects::Profile>
ProfileManager::profiles() {
Profile::profiles() {
return _profiles;
}
bool
ProfileManager::refreshProfiles() {
Profile::refreshProfiles() {
LOG_INFO("Refreshing profiles.");
_profiles = Containers::Array<GameObjects::Profile>{};
@ -100,12 +100,12 @@ ProfileManager::refreshProfiles() {
}
GameObjects::Profile*
ProfileManager::getProfile(std::size_t index) {
Profile::getProfile(std::size_t index) {
return index <= _profiles.size() ? &(_profiles[index]) : nullptr;
}
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()))) {
_lastError = Utility::format("Couldn't delete {} (filename: {}).",
_profiles[index].companyName(),
@ -136,7 +136,7 @@ ProfileManager::deleteProfile(std::size_t index, bool delete_builds) {
}
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::tm* time = std::localtime(&timestamp);
auto& profile = _profiles[index];
@ -213,12 +213,12 @@ ProfileManager::backupProfile(std::size_t index, bool backup_builds) {
}
Containers::ArrayView<Backup>
ProfileManager::backups() {
Profile::backups() {
return _backups;
}
void
ProfileManager::refreshBackups() {
Profile::refreshBackups() {
_backups = Containers::Array<Backup>{};
using Utility::Path::ListFlag;
@ -303,7 +303,7 @@ ProfileManager::refreshBackups() {
}
bool
ProfileManager::deleteBackup(std::size_t index) {
Profile::deleteBackup(std::size_t index) {
if(!Utility::Path::remove(Utility::Path::join(_backupsDirectory, _backups[index].filename))) {
_lastError = "Couldn't delete " + _backups[index].filename;
LOG_ERROR(_lastError);
@ -321,7 +321,7 @@ ProfileManager::deleteBackup(std::size_t index) {
}
bool
ProfileManager::restoreBackup(std::size_t index) {
Profile::restoreBackup(std::size_t index) {
const Backup& backup = _backups[index];
auto error_format = "Extraction of file {} failed: {}"_s;
@ -380,4 +380,4 @@ ProfileManager::restoreBackup(std::size_t index) {
return true;
}
}
}}

View file

@ -23,11 +23,11 @@
#include <Corrade/Containers/Array.h>
#include <Corrade/Containers/String.h>
#include "../Profile/Profile.h"
#include "../GameObjects/Profile.h"
using namespace Corrade;
namespace mbst {
namespace mbst { namespace Managers {
struct Backup {
Containers::String filename;
@ -44,9 +44,9 @@ struct Backup {
Containers::Array<Containers::String> includedFiles;
};
class ProfileManager {
class Profile {
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 lastError() -> Containers::StringView;
@ -75,4 +75,4 @@ class ProfileManager {
Containers::Array<Backup> _backups;
};
}
}}

View file

@ -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"