Update coding style.
Magnum's type names are fine, but I'd rather limit what depends on Magnum as much as possible. Vector types are still allowed, though. No way I'll write my own.
This commit is contained in:
parent
3c2cb001ff
commit
9c074c24bd
100 changed files with 751 additions and 815 deletions
|
@ -25,8 +25,6 @@ using Utility::Debug;
|
||||||
using Utility::Warning;
|
using Utility::Warning;
|
||||||
using Utility::Error;
|
using Utility::Error;
|
||||||
|
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
Logger&
|
Logger&
|
||||||
Logger::instance() {
|
Logger::instance() {
|
||||||
static Logger logger;
|
static Logger logger;
|
||||||
|
@ -89,7 +87,7 @@ Logger::log(EntryType type, StringView location, StringView message) {
|
||||||
|
|
||||||
d << "["_s << Debug::nospace << location << Debug::nospace << "]";
|
d << "["_s << Debug::nospace << location << Debug::nospace << "]";
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _indentLevel; i++) {
|
for(auto i = 0u; i < _indentLevel; i++) {
|
||||||
d << Debug::nospace << " "_s << Debug::nospace;
|
d << Debug::nospace << " "_s << Debug::nospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,6 @@
|
||||||
#include <Corrade/Containers/ArrayView.h>
|
#include <Corrade/Containers/ArrayView.h>
|
||||||
#include <Corrade/Utility/Format.h>
|
#include <Corrade/Utility/Format.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "EntryType.h"
|
#include "EntryType.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
@ -37,8 +35,6 @@ using Containers::ArrayView;
|
||||||
using Containers::String;
|
using Containers::String;
|
||||||
using Containers::StringView;
|
using Containers::StringView;
|
||||||
|
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
|
|
||||||
class Logger {
|
class Logger {
|
||||||
|
@ -68,7 +64,7 @@ class Logger {
|
||||||
std::ofstream _logFile;
|
std::ofstream _logFile;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
UnsignedInt _indentLevel = 0;
|
std::uint32_t _indentLevel = 0;
|
||||||
|
|
||||||
std::mutex _logMutex{};
|
std::mutex _logMutex{};
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,15 +16,14 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
enum AccessorySize {
|
enum AccessorySize {
|
||||||
S,
|
S,
|
||||||
|
@ -38,7 +37,7 @@ struct AccessoryData{
|
||||||
AccessorySize size = AccessorySize::S;
|
AccessorySize size = AccessorySize::S;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, AccessoryData> accessories {
|
static const std::map<std::int32_t, AccessoryData> accessories {
|
||||||
// region Primitives
|
// region Primitives
|
||||||
{1, {"Cube"_s, AccessorySize::S}},
|
{1, {"Cube"_s, AccessorySize::S}},
|
||||||
{2, {"Pentagon"_s, AccessorySize::S}},
|
{2, {"Pentagon"_s, AccessorySize::S}},
|
||||||
|
|
|
@ -16,22 +16,21 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct ArmourSet {
|
struct ArmourSet {
|
||||||
Containers::StringView name;
|
Containers::StringView name;
|
||||||
bool neck_compatible;
|
bool neck_compatible;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, ArmourSet> armour_sets {
|
static const std::map<std::int32_t, ArmourSet> armour_sets {
|
||||||
{-1, {"<unequipped>"_s, true}},
|
{-1, {"<unequipped>"_s, true}},
|
||||||
{0, {"Vanguard"_s, true}},
|
{0, {"Vanguard"_s, true}},
|
||||||
{1, {"Assault Mk.I"_s, true}},
|
{1, {"Assault Mk.I"_s, true}},
|
||||||
|
|
|
@ -20,13 +20,10 @@
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
static const std::map<Int, Containers::StringView> mission_id_map {{
|
static const std::map<std::int32_t, Containers::StringView> mission_id_map {{
|
||||||
// Story missions
|
// Story missions
|
||||||
{0x0064, "Mission 1 - Training"_s},
|
{0x0064, "Mission 1 - Training"_s},
|
||||||
{0x0065, "Mission 2 - Patrol Operation"_s},
|
{0x0065, "Mission 2 - Patrol Operation"_s},
|
||||||
|
|
|
@ -19,14 +19,11 @@
|
||||||
#include <Corrade/Containers/Array.h>
|
#include <Corrade/Containers/Array.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct StoryProgressPoint {
|
struct StoryProgressPoint {
|
||||||
Int id;
|
std::int32_t id;
|
||||||
Containers::StringView chapter;
|
Containers::StringView chapter;
|
||||||
Containers::StringView point;
|
Containers::StringView point;
|
||||||
Containers::StringView after = nullptr;
|
Containers::StringView after = nullptr;
|
||||||
|
|
|
@ -16,17 +16,16 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Magnum.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
extern const std::map<Int, Containers::StringView> style_names
|
extern const std::map<std::int32_t, Containers::StringView> style_names
|
||||||
#ifdef STYLENAMES_DEFINITION
|
#ifdef STYLENAMES_DEFINITION
|
||||||
{
|
{
|
||||||
{0, "Custom Style 1"_s},
|
{0, "Custom Style 1"_s},
|
||||||
|
|
|
@ -15,19 +15,18 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
|
|
||||||
// region Melee
|
// region Melee
|
||||||
static const std::map<Int, Containers::StringView> melee_grips {
|
static const std::map<std::int32_t, Containers::StringView> melee_grips {
|
||||||
{0, "Combat Grip (1H)"_s},
|
{0, "Combat Grip (1H)"_s},
|
||||||
{1, "Knuckle Guard Grip (1H)"_s},
|
{1, "Knuckle Guard Grip (1H)"_s},
|
||||||
{2, "Dual Guard Grip (1H)"_s},
|
{2, "Dual Guard Grip (1H)"_s},
|
||||||
|
@ -78,7 +77,7 @@ static const std::map<Int, Containers::StringView> melee_grips {
|
||||||
{2404, "Arched Twin Blade (2H)"_s},
|
{2404, "Arched Twin Blade (2H)"_s},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, Containers::StringView> melee_assaulters {
|
static const std::map<std::int32_t, Containers::StringView> melee_assaulters {
|
||||||
{0, "Long Metal Blade"_s},
|
{0, "Long Metal Blade"_s},
|
||||||
{1, "Long Assault Blade"_s},
|
{1, "Long Assault Blade"_s},
|
||||||
{2, "Long Fin Blade"_s},
|
{2, "Long Fin Blade"_s},
|
||||||
|
@ -172,7 +171,7 @@ static const std::map<Int, Containers::StringView> melee_assaulters {
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region Shields
|
// region Shields
|
||||||
static const std::map<Int, Containers::StringView> shield_handles {
|
static const std::map<std::int32_t, Containers::StringView> shield_handles {
|
||||||
{0, "Balanced Handle"_s},
|
{0, "Balanced Handle"_s},
|
||||||
{1, "Expanded Handle"_s},
|
{1, "Expanded Handle"_s},
|
||||||
{2, "Lowguard Handle"_s},
|
{2, "Lowguard Handle"_s},
|
||||||
|
@ -191,7 +190,7 @@ static const std::map<Int, Containers::StringView> shield_handles {
|
||||||
{101, "Star Handle"_s},
|
{101, "Star Handle"_s},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, Containers::StringView> shield_shells {
|
static const std::map<std::int32_t, Containers::StringView> shield_shells {
|
||||||
{0, "Balanced Shell"_s},
|
{0, "Balanced Shell"_s},
|
||||||
{1, "Compass Shell"_s},
|
{1, "Compass Shell"_s},
|
||||||
{2, "Uppoint Shell"_s},
|
{2, "Uppoint Shell"_s},
|
||||||
|
@ -212,7 +211,7 @@ static const std::map<Int, Containers::StringView> shield_shells {
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region Bullet Shooters
|
// region Bullet Shooters
|
||||||
static const std::map<Int, Containers::StringView> bshooter_triggers {
|
static const std::map<std::int32_t, Containers::StringView> bshooter_triggers {
|
||||||
{0, "BL-Combat Trigger (1H)"_s},
|
{0, "BL-Combat Trigger (1H)"_s},
|
||||||
{1, "Light Machine Trigger (1H)"_s},
|
{1, "Light Machine Trigger (1H)"_s},
|
||||||
{2, "Tactical Trigger (1H)"_s},
|
{2, "Tactical Trigger (1H)"_s},
|
||||||
|
@ -230,7 +229,7 @@ static const std::map<Int, Containers::StringView> bshooter_triggers {
|
||||||
{199, "2H Base Trigger (2H)"_s},
|
{199, "2H Base Trigger (2H)"_s},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, Containers::StringView> bshooter_barrels {
|
static const std::map<std::int32_t, Containers::StringView> bshooter_barrels {
|
||||||
{0, "BL-Combat Barrel (1 shot)"_s},
|
{0, "BL-Combat Barrel (1 shot)"_s},
|
||||||
{1, "Shock Absorb Barrel (1 shot) (Motion)"_s},
|
{1, "Shock Absorb Barrel (1 shot) (Motion)"_s},
|
||||||
{2, "Muzzlemod Barrel (1 shot)"_s},
|
{2, "Muzzlemod Barrel (1 shot)"_s},
|
||||||
|
@ -267,7 +266,7 @@ static const std::map<Int, Containers::StringView> bshooter_barrels {
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
//region Energy Shooters
|
//region Energy Shooters
|
||||||
static const std::map<Int, Containers::StringView> eshooter_triggers {
|
static const std::map<std::int32_t, Containers::StringView> eshooter_triggers {
|
||||||
{0, "EN-Rifle Trigger (1H)"_s},
|
{0, "EN-Rifle Trigger (1H)"_s},
|
||||||
{1, "Underarm Trigger (1H)"_s},
|
{1, "Underarm Trigger (1H)"_s},
|
||||||
{2, "EN-Inverted Trigger (1H)"_s},
|
{2, "EN-Inverted Trigger (1H)"_s},
|
||||||
|
@ -285,7 +284,7 @@ static const std::map<Int, Containers::StringView> eshooter_triggers {
|
||||||
{199, "2H Base EnTrigger (2H)"_s},
|
{199, "2H Base EnTrigger (2H)"_s},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, Containers::StringView> eshooter_busters {
|
static const std::map<std::int32_t, Containers::StringView> eshooter_busters {
|
||||||
{0, "EN-Combat Buster (1 shot)"_s},
|
{0, "EN-Combat Buster (1 shot)"_s},
|
||||||
{1, "Delta Cycler (1 shot) (Motion)"_s},
|
{1, "Delta Cycler (1 shot) (Motion)"_s},
|
||||||
{2, "EN-Longbarrel Buster (1 shot)"_s},
|
{2, "EN-Longbarrel Buster (1 shot)"_s},
|
||||||
|
@ -321,7 +320,7 @@ static const std::map<Int, Containers::StringView> eshooter_busters {
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region Bullet Launchers
|
// region Bullet Launchers
|
||||||
static const std::map<Int, Containers::StringView> blauncher_pods {
|
static const std::map<std::int32_t, Containers::StringView> blauncher_pods {
|
||||||
{0, "BL-Delta Pack Launcher (Missile x12)"_s},
|
{0, "BL-Delta Pack Launcher (Missile x12)"_s},
|
||||||
{1, "BL-Twin Pack Launcher (Missile x12)"_s},
|
{1, "BL-Twin Pack Launcher (Missile x12)"_s},
|
||||||
{2, "Detector Launcher (Missile x12)"_s},
|
{2, "Detector Launcher (Missile x12)"_s},
|
||||||
|
@ -351,7 +350,7 @@ static const std::map<Int, Containers::StringView> blauncher_pods {
|
||||||
{399, "C Base Pod (Cluster x40)"_s},
|
{399, "C Base Pod (Cluster x40)"_s},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, Containers::StringView> blauncher_projectiles {
|
static const std::map<std::int32_t, Containers::StringView> blauncher_projectiles {
|
||||||
{0, "Flathead Missile"_s},
|
{0, "Flathead Missile"_s},
|
||||||
{1, "Warhead Missile"_s},
|
{1, "Warhead Missile"_s},
|
||||||
{2, "Pointhead Missile"_s},
|
{2, "Pointhead Missile"_s},
|
||||||
|
@ -361,7 +360,7 @@ static const std::map<Int, Containers::StringView> blauncher_projectiles {
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region Energy Launchers
|
// region Energy Launchers
|
||||||
static const std::map<Int, Containers::StringView> elauncher_generators {
|
static const std::map<std::int32_t, Containers::StringView> elauncher_generators {
|
||||||
{0, "Fly Unit"_s},
|
{0, "Fly Unit"_s},
|
||||||
{1, "Assault Unit (Motion)"_s},
|
{1, "Assault Unit (Motion)"_s},
|
||||||
{2, "Falcon Unit"_s},
|
{2, "Falcon Unit"_s},
|
||||||
|
@ -393,7 +392,7 @@ static const std::map<Int, Containers::StringView> elauncher_generators {
|
||||||
{99, "Base Generator"},
|
{99, "Base Generator"},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::map<Int, Containers::StringView> elauncher_pods {
|
static const std::map<std::int32_t, Containers::StringView> elauncher_pods {
|
||||||
{0, "EN-Dual Claw Launcher (Echo) (Motion)"_s},
|
{0, "EN-Dual Claw Launcher (Echo) (Motion)"_s},
|
||||||
{1, "EN-Assault Launcher (Echo)"_s},
|
{1, "EN-Assault Launcher (Echo)"_s},
|
||||||
{2, "EN-Tactical Launcher (Echo)"_s},
|
{2, "EN-Tactical Launcher (Echo)"_s},
|
||||||
|
|
|
@ -25,9 +25,9 @@ using namespace Corrade;
|
||||||
using namespace Magnum;
|
using namespace Magnum;
|
||||||
|
|
||||||
struct Accessory {
|
struct Accessory {
|
||||||
Int attachIndex = -1;
|
std::int32_t attachIndex = -1;
|
||||||
Int id = -1;
|
std::int32_t id = -1;
|
||||||
Containers::StaticArray<2, Int> styles{ValueInit};
|
Containers::StaticArray<2, std::int32_t> styles{ValueInit};
|
||||||
Vector3 relativePosition{0.0f};
|
Vector3 relativePosition{0.0f};
|
||||||
Vector3 relativePositionOffset{0.0f};
|
Vector3 relativePositionOffset{0.0f};
|
||||||
Vector3 relativeRotation{0.0f};
|
Vector3 relativeRotation{0.0f};
|
||||||
|
|
|
@ -19,13 +19,10 @@
|
||||||
#include <Corrade/Containers/Array.h>
|
#include <Corrade/Containers/Array.h>
|
||||||
#include <Corrade/Containers/StaticArray.h>
|
#include <Corrade/Containers/StaticArray.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "Decal.h"
|
#include "Decal.h"
|
||||||
#include "Accessory.h"
|
#include "Accessory.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
enum class ArmourSlot {
|
enum class ArmourSlot {
|
||||||
#define c(enumerator, enumstr, name) enumerator,
|
#define c(enumerator, enumstr, name) enumerator,
|
||||||
|
@ -35,8 +32,8 @@ enum class ArmourSlot {
|
||||||
|
|
||||||
struct ArmourPart {
|
struct ArmourPart {
|
||||||
ArmourSlot slot = ArmourSlot::Face;
|
ArmourSlot slot = ArmourSlot::Face;
|
||||||
Int id = 0;
|
std::int32_t id = 0;
|
||||||
Containers::StaticArray<4, Int> styles{ValueInit};
|
Containers::StaticArray<4, std::int32_t> styles{ValueInit};
|
||||||
Containers::Array<Decal> decals;
|
Containers::Array<Decal> decals;
|
||||||
Containers::Array<Accessory> accessories;
|
Containers::Array<Accessory> accessories;
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,13 +28,13 @@ using namespace Magnum;
|
||||||
struct CustomStyle {
|
struct CustomStyle {
|
||||||
Containers::String name;
|
Containers::String name;
|
||||||
Color4 colour{0.0f};
|
Color4 colour{0.0f};
|
||||||
Float metallic = 0.5f;
|
float metallic = 0.5f;
|
||||||
Float gloss = 0.5f;
|
float gloss = 0.5f;
|
||||||
bool glow = false;
|
bool glow = false;
|
||||||
|
|
||||||
Int patternId = 0;
|
std::int32_t patternId = 0;
|
||||||
Float opacity = 0.5f;
|
float opacity = 0.5f;
|
||||||
Vector2 offset{0.5f};
|
Vector2 offset{0.5f};
|
||||||
Float rotation = 0.0f;
|
float rotation = 0.0f;
|
||||||
Float scale = 0.5f;
|
float scale = 0.5f;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,18 +19,19 @@
|
||||||
#include <Magnum/Magnum.h>
|
#include <Magnum/Magnum.h>
|
||||||
#include <Magnum/Math/Color.h>
|
#include <Magnum/Math/Color.h>
|
||||||
#include <Magnum/Math/Vector2.h>
|
#include <Magnum/Math/Vector2.h>
|
||||||
|
#include <Magnum/Math/Vector3.h>
|
||||||
|
|
||||||
using namespace Magnum;
|
using namespace Magnum;
|
||||||
|
|
||||||
struct Decal {
|
struct Decal {
|
||||||
Int id = -1;
|
std::int32_t id = -1;
|
||||||
Color4 colour{0.0f};
|
Color4 colour{0.0f};
|
||||||
Vector3 position{0.0f};
|
Vector3 position{0.0f};
|
||||||
Vector3 uAxis{0.0f};
|
Vector3 uAxis{0.0f};
|
||||||
Vector3 vAxis{0.0f};
|
Vector3 vAxis{0.0f};
|
||||||
Vector2 offset{0.5f};
|
Vector2 offset{0.5f};
|
||||||
Float scale = 0.5f;
|
float scale = 0.5f;
|
||||||
Float rotation = 0.0f;
|
float rotation = 0.0f;
|
||||||
bool flip = false;
|
bool flip = false;
|
||||||
bool wrap = false;
|
bool wrap = false;
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,17 +16,13 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct Joints {
|
struct Joints {
|
||||||
Float neck = 0.0f;
|
float neck = 0.0f;
|
||||||
Float body = 0.0f;
|
float body = 0.0f;
|
||||||
Float shoulders = 0.0f;
|
float shoulders = 0.0f;
|
||||||
Float hips = 0.0f;
|
float hips = 0.0f;
|
||||||
Float upperArms = 0.0f;
|
float upperArms = 0.0f;
|
||||||
Float lowerArms = 0.0f;
|
float lowerArms = 0.0f;
|
||||||
Float upperLegs = 0.0f;
|
float upperLegs = 0.0f;
|
||||||
Float lowerLegs = 0.0f;
|
float lowerLegs = 0.0f;
|
||||||
};
|
};
|
||||||
|
|
|
@ -308,32 +308,32 @@ Mass::getTuning() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Int&
|
std::int32_t&
|
||||||
Mass::engine() {
|
Mass::engine() {
|
||||||
return _tuning.engineId;
|
return _tuning.engineId;
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::ArrayView<Int>
|
Containers::ArrayView<std::int32_t>
|
||||||
Mass::gears() {
|
Mass::gears() {
|
||||||
return _tuning.gearIds;
|
return _tuning.gearIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int&
|
std::int32_t&
|
||||||
Mass::os() {
|
Mass::os() {
|
||||||
return _tuning.osId;
|
return _tuning.osId;
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::ArrayView<Int>
|
Containers::ArrayView<std::int32_t>
|
||||||
Mass::modules() {
|
Mass::modules() {
|
||||||
return _tuning.moduleIds;
|
return _tuning.moduleIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int&
|
std::int32_t&
|
||||||
Mass::architecture() {
|
Mass::architecture() {
|
||||||
return _tuning.archId;
|
return _tuning.archId;
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::ArrayView<Int>
|
Containers::ArrayView<std::int32_t>
|
||||||
Mass::techs() {
|
Mass::techs() {
|
||||||
return _tuning.techIds;
|
return _tuning.techIds;
|
||||||
}
|
}
|
||||||
|
@ -365,8 +365,9 @@ Mass::updateAccount(Containers::StringView new_account) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Mass::getTuningCategory(Containers::StringView big_node_prop_name, Int& big_node_id,
|
Mass::getTuningCategory(Containers::StringView big_node_prop_name, std::int32_t& big_node_id,
|
||||||
Containers::StringView small_nodes_prop_name, Containers::ArrayView<Int> small_nodes_ids)
|
Containers::StringView small_nodes_prop_name,
|
||||||
|
Containers::ArrayView<std::int32_t> small_nodes_ids)
|
||||||
{
|
{
|
||||||
LOG_INFO_FORMAT("Getting tuning data ({}, {}).", big_node_prop_name, small_nodes_prop_name);
|
LOG_INFO_FORMAT("Getting tuning data ({}, {}).", big_node_prop_name, small_nodes_prop_name);
|
||||||
|
|
||||||
|
@ -392,7 +393,7 @@ Mass::getTuningCategory(Containers::StringView big_node_prop_name, Int& big_node
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < small_nodes_ids.size(); i++) {
|
for(std::uint32_t i = 0; i < small_nodes_ids.size(); i++) {
|
||||||
auto small_node_id = node_ids->at<IntProperty>(i);
|
auto small_node_id = node_ids->at<IntProperty>(i);
|
||||||
CORRADE_INTERNAL_ASSERT(small_node_id);
|
CORRADE_INTERNAL_ASSERT(small_node_id);
|
||||||
small_nodes_ids[i] = small_node_id->value;
|
small_nodes_ids[i] = small_node_id->value;
|
||||||
|
|
|
@ -64,7 +64,7 @@ class Mass {
|
||||||
Containers::StringView name();
|
Containers::StringView name();
|
||||||
bool setName(Containers::StringView new_name);
|
bool setName(Containers::StringView new_name);
|
||||||
|
|
||||||
enum class State : UnsignedByte {
|
enum class State: std::uint8_t {
|
||||||
Empty, Invalid, Valid
|
Empty, Invalid, Valid
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ class Mass {
|
||||||
void getJointSliders();
|
void getJointSliders();
|
||||||
bool writeJointSliders();
|
bool writeJointSliders();
|
||||||
|
|
||||||
Containers::ArrayView<Int> frameStyles();
|
Containers::ArrayView<std::int32_t> frameStyles();
|
||||||
void getFrameStyles();
|
void getFrameStyles();
|
||||||
bool writeFrameStyles();
|
bool writeFrameStyles();
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ class Mass {
|
||||||
|
|
||||||
Containers::ArrayView<CustomStyle> frameCustomStyles();
|
Containers::ArrayView<CustomStyle> frameCustomStyles();
|
||||||
void getFrameCustomStyles();
|
void getFrameCustomStyles();
|
||||||
bool writeFrameCustomStyle(UnsignedLong index);
|
bool writeFrameCustomStyle(std::size_t index);
|
||||||
|
|
||||||
Containers::ArrayView<ArmourPart> armourParts();
|
Containers::ArrayView<ArmourPart> armourParts();
|
||||||
void getArmourParts();
|
void getArmourParts();
|
||||||
|
@ -100,7 +100,7 @@ class Mass {
|
||||||
|
|
||||||
Containers::ArrayView<CustomStyle> armourCustomStyles();
|
Containers::ArrayView<CustomStyle> armourCustomStyles();
|
||||||
void getArmourCustomStyles();
|
void getArmourCustomStyles();
|
||||||
bool writeArmourCustomStyle(UnsignedLong index);
|
bool writeArmourCustomStyle(std::size_t index);
|
||||||
|
|
||||||
Containers::ArrayView<Weapon> meleeWeapons();
|
Containers::ArrayView<Weapon> meleeWeapons();
|
||||||
void getMeleeWeapons();
|
void getMeleeWeapons();
|
||||||
|
@ -128,25 +128,25 @@ class Mass {
|
||||||
|
|
||||||
Containers::ArrayView<CustomStyle> globalStyles();
|
Containers::ArrayView<CustomStyle> globalStyles();
|
||||||
void getGlobalStyles();
|
void getGlobalStyles();
|
||||||
bool writeGlobalStyle(UnsignedLong index);
|
bool writeGlobalStyle(std::size_t index);
|
||||||
|
|
||||||
void getTuning();
|
void getTuning();
|
||||||
|
|
||||||
Int& engine();
|
std::int32_t& engine();
|
||||||
Containers::ArrayView<Int> gears();
|
Containers::ArrayView<std::int32_t> gears();
|
||||||
|
|
||||||
Int& os();
|
std::int32_t& os();
|
||||||
Containers::ArrayView<Int> modules();
|
Containers::ArrayView<std::int32_t> modules();
|
||||||
|
|
||||||
Int& architecture();
|
std::int32_t& architecture();
|
||||||
Containers::ArrayView<Int> techs();
|
Containers::ArrayView<std::int32_t> techs();
|
||||||
|
|
||||||
Containers::StringView account();
|
Containers::StringView account();
|
||||||
bool updateAccount(Containers::StringView new_account);
|
bool updateAccount(Containers::StringView new_account);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void getCustomStyles(Containers::ArrayView<CustomStyle> styles, ArrayProperty* style_array);
|
void getCustomStyles(Containers::ArrayView<CustomStyle> styles, ArrayProperty* style_array);
|
||||||
bool writeCustomStyle(const CustomStyle& style, UnsignedLong index, ArrayProperty* style_array);
|
bool writeCustomStyle(const CustomStyle& style, std::size_t index, ArrayProperty* style_array);
|
||||||
|
|
||||||
void getDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array);
|
void getDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array);
|
||||||
void writeDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array);
|
void writeDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array);
|
||||||
|
@ -157,8 +157,9 @@ class Mass {
|
||||||
void getWeaponType(Containers::StringView prop_name, Containers::ArrayView<Weapon> weapon_array);
|
void getWeaponType(Containers::StringView prop_name, Containers::ArrayView<Weapon> weapon_array);
|
||||||
bool writeWeaponType(Containers::StringView prop_name, Containers::ArrayView<Weapon> weapon_array);
|
bool writeWeaponType(Containers::StringView prop_name, Containers::ArrayView<Weapon> weapon_array);
|
||||||
|
|
||||||
void getTuningCategory(Containers::StringView big_node_prop_name, Int& big_node_id,
|
void getTuningCategory(Containers::StringView big_node_prop_name, std::int32_t& big_node_id,
|
||||||
Containers::StringView small_nodes_prop_name, Containers::ArrayView<Int> small_nodes_ids);
|
Containers::StringView small_nodes_prop_name,
|
||||||
|
Containers::ArrayView<std::int32_t> small_nodes_ids);
|
||||||
|
|
||||||
Containers::Optional<UESaveFile> _mass;
|
Containers::Optional<UESaveFile> _mass;
|
||||||
|
|
||||||
|
@ -174,7 +175,7 @@ class Mass {
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
Joints joints{};
|
Joints joints{};
|
||||||
Containers::StaticArray<4, Int> styles{ValueInit};
|
Containers::StaticArray<4, std::int32_t> styles{ValueInit};
|
||||||
Color4 eyeFlare{0.0f};
|
Color4 eyeFlare{0.0f};
|
||||||
Containers::StaticArray<16, CustomStyle> customStyles;
|
Containers::StaticArray<16, CustomStyle> customStyles;
|
||||||
} _frame;
|
} _frame;
|
||||||
|
@ -198,14 +199,14 @@ class Mass {
|
||||||
Containers::Array<CustomStyle> _globalStyles;
|
Containers::Array<CustomStyle> _globalStyles;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
Int engineId;
|
std::int32_t engineId;
|
||||||
Containers::StaticArray<7, Int> gearIds;
|
Containers::StaticArray<7, std::int32_t> gearIds;
|
||||||
|
|
||||||
Int osId;
|
std::int32_t osId;
|
||||||
Containers::StaticArray<7, Int> moduleIds;
|
Containers::StaticArray<7, std::int32_t> moduleIds;
|
||||||
|
|
||||||
Int archId;
|
std::int32_t archId;
|
||||||
Containers::StaticArray<7, Int> techIds;
|
Containers::StaticArray<7, std::int32_t> techIds;
|
||||||
} _tuning;
|
} _tuning;
|
||||||
|
|
||||||
Containers::String _account;
|
Containers::String _account;
|
||||||
|
|
|
@ -59,7 +59,7 @@ Mass::getArmourParts() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < armour_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < armour_array->items.size(); i++) {
|
||||||
auto part_prop = armour_array->at<GenericStructProperty>(i);
|
auto part_prop = armour_array->at<GenericStructProperty>(i);
|
||||||
auto& part = _armour.parts[i];
|
auto& part = _armour.parts[i];
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ Mass::getArmourParts() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt j = 0; j < part_styles->items.size(); j++) {
|
for(std::uint32_t j = 0; j < part_styles->items.size(); j++) {
|
||||||
part.styles[j] = part_styles->at<IntProperty>(j)->value;
|
part.styles[j] = part_styles->at<IntProperty>(j)->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ Mass::writeArmourPart(ArmourSlot slot) {
|
||||||
|
|
||||||
GenericStructProperty* part_prop = nullptr;
|
GenericStructProperty* part_prop = nullptr;
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < armour_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < armour_array->items.size(); i++) {
|
||||||
part_prop = armour_array->at<GenericStructProperty>(i);
|
part_prop = armour_array->at<GenericStructProperty>(i);
|
||||||
if(slot_str == part_prop->at<ByteProperty>(MASS_ARMOUR_SLOT)->enumValue) {
|
if(slot_str == part_prop->at<ByteProperty>(MASS_ARMOUR_SLOT)->enumValue) {
|
||||||
break;
|
break;
|
||||||
|
@ -178,7 +178,7 @@ Mass::writeArmourPart(ArmourSlot slot) {
|
||||||
part_prop->at<IntProperty>(MASS_ARMOUR_ID)->value = part.id;
|
part_prop->at<IntProperty>(MASS_ARMOUR_ID)->value = part.id;
|
||||||
|
|
||||||
auto part_styles = part_prop->at<ArrayProperty>(MASS_ARMOUR_STYLES);
|
auto part_styles = part_prop->at<ArrayProperty>(MASS_ARMOUR_STYLES);
|
||||||
for(UnsignedInt i = 0; i < part.styles.size(); i++) {
|
for(std::uint32_t i = 0; i < part.styles.size(); i++) {
|
||||||
part_styles->at<IntProperty>(i)->value = part.styles[i];
|
part_styles->at<IntProperty>(i)->value = part.styles[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ Mass::getBulletLauncherAttachments() {
|
||||||
if(attach_array->items.size() == _weapons.bulletLaunchers.size() &&
|
if(attach_array->items.size() == _weapons.bulletLaunchers.size() &&
|
||||||
attach_array->items.size() == _armour.blAttachment.size())
|
attach_array->items.size() == _armour.blAttachment.size())
|
||||||
{
|
{
|
||||||
for(UnsignedInt i = 0; i < attach_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < attach_array->items.size(); i++) {
|
||||||
auto attachment_prop = attach_array->at<GenericStructProperty>(i);
|
auto attachment_prop = attach_array->at<GenericStructProperty>(i);
|
||||||
auto& attachment = _armour.blAttachment[i];
|
auto& attachment = _armour.blAttachment[i];
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ Mass::writeBulletLauncherAttachments() {
|
||||||
if(attach_array->items.size() == _weapons.bulletLaunchers.size() &&
|
if(attach_array->items.size() == _weapons.bulletLaunchers.size() &&
|
||||||
attach_array->items.size() == _armour.blAttachment.size())
|
attach_array->items.size() == _armour.blAttachment.size())
|
||||||
{
|
{
|
||||||
for(UnsignedInt i = 0; i < attach_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < attach_array->items.size(); i++) {
|
||||||
auto attachment_prop = attach_array->at<GenericStructProperty>(i);
|
auto attachment_prop = attach_array->at<GenericStructProperty>(i);
|
||||||
auto& attachment = _armour.blAttachment[i];
|
auto& attachment = _armour.blAttachment[i];
|
||||||
|
|
||||||
|
@ -414,7 +414,7 @@ Mass::getArmourCustomStyles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Mass::writeArmourCustomStyle(UnsignedLong index) {
|
Mass::writeArmourCustomStyle(std::size_t index) {
|
||||||
LOG_INFO_FORMAT("Writing custom armour style {}.", index);
|
LOG_INFO_FORMAT("Writing custom armour style {}.", index);
|
||||||
|
|
||||||
if(index > _armour.customStyles.size()) {
|
if(index > _armour.customStyles.size()) {
|
||||||
|
|
|
@ -31,7 +31,7 @@ using namespace Containers::Literals;
|
||||||
|
|
||||||
void
|
void
|
||||||
Mass::getDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array) {
|
Mass::getDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array) {
|
||||||
for(UnsignedInt i = 0; i < decal_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < decal_array->items.size(); i++) {
|
||||||
auto decal_prop = decal_array->at<GenericStructProperty>(i);
|
auto decal_prop = decal_array->at<GenericStructProperty>(i);
|
||||||
CORRADE_INTERNAL_ASSERT(decal_prop);
|
CORRADE_INTERNAL_ASSERT(decal_prop);
|
||||||
auto& decal = decals[i];
|
auto& decal = decals[i];
|
||||||
|
@ -56,7 +56,7 @@ Mass::getDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array)
|
||||||
|
|
||||||
void
|
void
|
||||||
Mass::writeDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array) {
|
Mass::writeDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_array) {
|
||||||
for(UnsignedInt i = 0; i < decal_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < decal_array->items.size(); i++) {
|
||||||
auto decal_prop = decal_array->at<GenericStructProperty>(i);
|
auto decal_prop = decal_array->at<GenericStructProperty>(i);
|
||||||
CORRADE_INTERNAL_ASSERT(decal_prop);
|
CORRADE_INTERNAL_ASSERT(decal_prop);
|
||||||
auto& decal = decals[i];
|
auto& decal = decals[i];
|
||||||
|
@ -91,7 +91,7 @@ Mass::writeDecals(Containers::ArrayView<Decal> decals, ArrayProperty* decal_arra
|
||||||
|
|
||||||
void
|
void
|
||||||
Mass::getAccessories(Containers::ArrayView<Accessory> accessories, ArrayProperty* accessory_array) {
|
Mass::getAccessories(Containers::ArrayView<Accessory> accessories, ArrayProperty* accessory_array) {
|
||||||
for(UnsignedInt i = 0; i < accessory_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < accessory_array->items.size(); i++) {
|
||||||
auto acc_prop = accessory_array->at<GenericStructProperty>(i);
|
auto acc_prop = accessory_array->at<GenericStructProperty>(i);
|
||||||
CORRADE_INTERNAL_ASSERT(acc_prop);
|
CORRADE_INTERNAL_ASSERT(acc_prop);
|
||||||
auto& accessory = accessories[i];
|
auto& accessory = accessories[i];
|
||||||
|
@ -99,7 +99,7 @@ Mass::getAccessories(Containers::ArrayView<Accessory> accessories, ArrayProperty
|
||||||
accessory.attachIndex = acc_prop->at<IntProperty>(MASS_ACCESSORY_ATTACH_INDEX)->value;
|
accessory.attachIndex = acc_prop->at<IntProperty>(MASS_ACCESSORY_ATTACH_INDEX)->value;
|
||||||
accessory.id = acc_prop->at<IntProperty>(MASS_ACCESSORY_ID)->value;
|
accessory.id = acc_prop->at<IntProperty>(MASS_ACCESSORY_ID)->value;
|
||||||
auto acc_styles = acc_prop->at<ArrayProperty>(MASS_ACCESSORY_STYLES);
|
auto acc_styles = acc_prop->at<ArrayProperty>(MASS_ACCESSORY_STYLES);
|
||||||
for(UnsignedInt j = 0; j < acc_styles->items.size(); j++) {
|
for(std::uint32_t j = 0; j < acc_styles->items.size(); j++) {
|
||||||
accessory.styles[j] = acc_styles->at<IntProperty>(j)->value;
|
accessory.styles[j] = acc_styles->at<IntProperty>(j)->value;
|
||||||
}
|
}
|
||||||
auto rel_pos_prop = acc_prop->at<VectorStructProperty>(MASS_ACCESSORY_RELPOS);
|
auto rel_pos_prop = acc_prop->at<VectorStructProperty>(MASS_ACCESSORY_RELPOS);
|
||||||
|
@ -117,7 +117,7 @@ Mass::getAccessories(Containers::ArrayView<Accessory> accessories, ArrayProperty
|
||||||
|
|
||||||
void
|
void
|
||||||
Mass::writeAccessories(Containers::ArrayView<Accessory> accessories, ArrayProperty* accs_array) {
|
Mass::writeAccessories(Containers::ArrayView<Accessory> accessories, ArrayProperty* accs_array) {
|
||||||
for(UnsignedInt i = 0; i < accs_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < accs_array->items.size(); i++) {
|
||||||
auto acc_prop = accs_array->at<GenericStructProperty>(i);
|
auto acc_prop = accs_array->at<GenericStructProperty>(i);
|
||||||
CORRADE_INTERNAL_ASSERT(acc_prop);
|
CORRADE_INTERNAL_ASSERT(acc_prop);
|
||||||
auto& accessory = accessories[i];
|
auto& accessory = accessories[i];
|
||||||
|
@ -125,7 +125,7 @@ Mass::writeAccessories(Containers::ArrayView<Accessory> accessories, ArrayProper
|
||||||
acc_prop->at<IntProperty>(MASS_ACCESSORY_ATTACH_INDEX)->value = accessory.attachIndex;
|
acc_prop->at<IntProperty>(MASS_ACCESSORY_ATTACH_INDEX)->value = accessory.attachIndex;
|
||||||
acc_prop->at<IntProperty>(MASS_ACCESSORY_ID)->value = accessory.id;
|
acc_prop->at<IntProperty>(MASS_ACCESSORY_ID)->value = accessory.id;
|
||||||
auto acc_styles = acc_prop->at<ArrayProperty>(MASS_ACCESSORY_STYLES);
|
auto acc_styles = acc_prop->at<ArrayProperty>(MASS_ACCESSORY_STYLES);
|
||||||
for(UnsignedInt j = 0; j < acc_styles->items.size(); j++) {
|
for(std::uint32_t j = 0; j < acc_styles->items.size(); j++) {
|
||||||
acc_styles->at<IntProperty>(j)->value = accessory.styles[j];
|
acc_styles->at<IntProperty>(j)->value = accessory.styles[j];
|
||||||
}
|
}
|
||||||
auto rel_pos_prop = acc_prop->at<VectorStructProperty>(MASS_ACCESSORY_RELPOS);
|
auto rel_pos_prop = acc_prop->at<VectorStructProperty>(MASS_ACCESSORY_RELPOS);
|
||||||
|
|
|
@ -184,7 +184,7 @@ Mass::writeJointSliders() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::ArrayView<Int>
|
Containers::ArrayView<std::int32_t>
|
||||||
Mass::frameStyles() {
|
Mass::frameStyles() {
|
||||||
return _frame.styles;
|
return _frame.styles;
|
||||||
}
|
}
|
||||||
|
@ -221,7 +221,7 @@ Mass::getFrameStyles() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < frame_styles->items.size(); i++) {
|
for(std::uint32_t i = 0; i < frame_styles->items.size(); i++) {
|
||||||
_frame.styles[i] = frame_styles->at<IntProperty>(i)->value;
|
_frame.styles[i] = frame_styles->at<IntProperty>(i)->value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -254,7 +254,7 @@ Mass::writeFrameStyles() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < frame_styles->items.size(); i++) {
|
for(std::uint32_t i = 0; i < frame_styles->items.size(); i++) {
|
||||||
frame_styles->at<IntProperty>(i)->value = _frame.styles[i];
|
frame_styles->at<IntProperty>(i)->value = _frame.styles[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,7 +374,7 @@ Mass::getFrameCustomStyles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Mass::writeFrameCustomStyle(UnsignedLong index) {
|
Mass::writeFrameCustomStyle(std::size_t index) {
|
||||||
LOG_INFO_FORMAT("Writing frame custom style number {}.", index);
|
LOG_INFO_FORMAT("Writing frame custom style number {}.", index);
|
||||||
|
|
||||||
if(index > _frame.customStyles.size()) {
|
if(index > _frame.customStyles.size()) {
|
||||||
|
|
|
@ -58,7 +58,7 @@ Mass::getGlobalStyles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Mass::writeGlobalStyle(UnsignedLong index) {
|
Mass::writeGlobalStyle(std::size_t index) {
|
||||||
LOG_INFO_FORMAT("Writing global style number {}.", index);
|
LOG_INFO_FORMAT("Writing global style number {}.", index);
|
||||||
|
|
||||||
if(index > _globalStyles.size()) {
|
if(index > _globalStyles.size()) {
|
||||||
|
@ -88,7 +88,7 @@ Mass::writeGlobalStyle(UnsignedLong index) {
|
||||||
|
|
||||||
void
|
void
|
||||||
Mass::getCustomStyles(Containers::ArrayView<CustomStyle> styles, ArrayProperty* style_array) {
|
Mass::getCustomStyles(Containers::ArrayView<CustomStyle> styles, ArrayProperty* style_array) {
|
||||||
for(UnsignedInt i = 0; i < style_array->items.size(); i++) {
|
for(std::uint32_t i = 0; i < style_array->items.size(); i++) {
|
||||||
auto style_prop = style_array->at<GenericStructProperty>(i);
|
auto style_prop = style_array->at<GenericStructProperty>(i);
|
||||||
auto& style = styles[i];
|
auto& style = styles[i];
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ Mass::getCustomStyles(Containers::ArrayView<CustomStyle> styles, ArrayProperty*
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Mass::writeCustomStyle(const CustomStyle& style, UnsignedLong index, ArrayProperty* style_array) {
|
Mass::writeCustomStyle(const CustomStyle& style, std::size_t index, ArrayProperty* style_array) {
|
||||||
if(!style_array) {
|
if(!style_array) {
|
||||||
_lastError = "style_array is null."_s;
|
_lastError = "style_array is null."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
|
|
@ -153,7 +153,7 @@ Mass::getWeaponType(Containers::StringView prop_name, Containers::ArrayView<Weap
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < weapon_array.size(); i++) {
|
for(std::uint32_t i = 0; i < weapon_array.size(); i++) {
|
||||||
auto weapon_prop = prop->at<GenericStructProperty>(i);
|
auto weapon_prop = prop->at<GenericStructProperty>(i);
|
||||||
auto& weapon = weapon_array[i];
|
auto& weapon = weapon_array[i];
|
||||||
|
|
||||||
|
@ -171,14 +171,14 @@ Mass::getWeaponType(Containers::StringView prop_name, Containers::ArrayView<Weap
|
||||||
auto parts_prop = weapon_prop->at<ArrayProperty>(MASS_WEAPON_ELEMENT);
|
auto parts_prop = weapon_prop->at<ArrayProperty>(MASS_WEAPON_ELEMENT);
|
||||||
weapon.parts = Containers::Array<WeaponPart>{ValueInit, parts_prop->items.size()};
|
weapon.parts = Containers::Array<WeaponPart>{ValueInit, parts_prop->items.size()};
|
||||||
|
|
||||||
for(UnsignedInt j = 0; j < parts_prop->items.size(); j++) {
|
for(std::uint32_t j = 0; j < parts_prop->items.size(); j++) {
|
||||||
auto part_prop = parts_prop->at<GenericStructProperty>(j);
|
auto part_prop = parts_prop->at<GenericStructProperty>(j);
|
||||||
auto& part = weapon.parts[j];
|
auto& part = weapon.parts[j];
|
||||||
|
|
||||||
part.id = part_prop->at<IntProperty>(MASS_WEAPON_PART_ID)->value;
|
part.id = part_prop->at<IntProperty>(MASS_WEAPON_PART_ID)->value;
|
||||||
|
|
||||||
auto part_styles = part_prop->at<ArrayProperty>(MASS_WEAPON_PART_STYLES);
|
auto part_styles = part_prop->at<ArrayProperty>(MASS_WEAPON_PART_STYLES);
|
||||||
for(UnsignedInt k = 0; k < part_styles->items.size(); k++) {
|
for(std::uint32_t k = 0; k < part_styles->items.size(); k++) {
|
||||||
part.styles[k] = part_styles->at<IntProperty>(k)->value;
|
part.styles[k] = part_styles->at<IntProperty>(k)->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ Mass::writeWeaponType(Containers::StringView prop_name, Containers::ArrayView<We
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < weapon_array.size(); i++) {
|
for(std::uint32_t i = 0; i < weapon_array.size(); i++) {
|
||||||
auto weapon_prop = prop->at<GenericStructProperty>(i);
|
auto weapon_prop = prop->at<GenericStructProperty>(i);
|
||||||
auto& weapon = weapon_array[i];
|
auto& weapon = weapon_array[i];
|
||||||
|
|
||||||
|
@ -292,14 +292,14 @@ Mass::writeWeaponType(Containers::StringView prop_name, Containers::ArrayView<We
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt j = 0; j < parts_prop->items.size(); j++) {
|
for(std::uint32_t j = 0; j < parts_prop->items.size(); j++) {
|
||||||
auto part_prop = parts_prop->at<GenericStructProperty>(j);
|
auto part_prop = parts_prop->at<GenericStructProperty>(j);
|
||||||
auto& part = weapon.parts[j];
|
auto& part = weapon.parts[j];
|
||||||
|
|
||||||
part_prop->at<IntProperty>(MASS_WEAPON_PART_ID)->value = part.id;
|
part_prop->at<IntProperty>(MASS_WEAPON_PART_ID)->value = part.id;
|
||||||
|
|
||||||
auto part_styles = part_prop->at<ArrayProperty>(MASS_WEAPON_PART_STYLES);
|
auto part_styles = part_prop->at<ArrayProperty>(MASS_WEAPON_PART_STYLES);
|
||||||
for(UnsignedInt k = 0; k < part_styles->items.size(); k++) {
|
for(std::uint32_t k = 0; k < part_styles->items.size(); k++) {
|
||||||
part_styles->at<IntProperty>(k)->value = part.styles[k];
|
part_styles->at<IntProperty>(k)->value = part.styles[k];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,7 +338,7 @@ Mass::writeWeaponType(Containers::StringView prop_name, Containers::ArrayView<We
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedInt j = 0; j < weapon.customStyles.size(); j++) {
|
for(std::uint32_t j = 0; j < weapon.customStyles.size(); j++) {
|
||||||
writeCustomStyle(weapon.customStyles[j], j, custom_styles);
|
writeCustomStyle(weapon.customStyles[j], j, custom_styles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ Weapon::Weapon(const Weapon& other) {
|
||||||
name = other.name;
|
name = other.name;
|
||||||
type = other.type;
|
type = other.type;
|
||||||
parts = Containers::Array<WeaponPart>{other.parts.size()};
|
parts = Containers::Array<WeaponPart>{other.parts.size()};
|
||||||
for(UnsignedInt i = 0; i < parts.size(); i++) {
|
for(std::uint32_t i = 0; i < parts.size(); i++) {
|
||||||
parts[i] = other.parts[i];
|
parts[i] = other.parts[i];
|
||||||
}
|
}
|
||||||
customStyles = other.customStyles;
|
customStyles = other.customStyles;
|
||||||
|
@ -35,7 +35,7 @@ Weapon& Weapon::operator=(const Weapon& other) {
|
||||||
name = other.name;
|
name = other.name;
|
||||||
type = other.type;
|
type = other.type;
|
||||||
parts = Containers::Array<WeaponPart>{other.parts.size()};
|
parts = Containers::Array<WeaponPart>{other.parts.size()};
|
||||||
for(UnsignedInt i = 0; i < parts.size(); i++) {
|
for(std::uint32_t i = 0; i < parts.size(); i++) {
|
||||||
parts[i] = other.parts[i];
|
parts[i] = other.parts[i];
|
||||||
}
|
}
|
||||||
customStyles = other.customStyles;
|
customStyles = other.customStyles;
|
||||||
|
|
|
@ -19,13 +19,10 @@
|
||||||
#include <Corrade/Containers/Array.h>
|
#include <Corrade/Containers/Array.h>
|
||||||
#include <Corrade/Containers/StaticArray.h>
|
#include <Corrade/Containers/StaticArray.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "Decal.h"
|
#include "Decal.h"
|
||||||
#include "Accessory.h"
|
#include "Accessory.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct WeaponPart {
|
struct WeaponPart {
|
||||||
WeaponPart() = default;
|
WeaponPart() = default;
|
||||||
|
@ -34,11 +31,11 @@ struct WeaponPart {
|
||||||
id = other.id;
|
id = other.id;
|
||||||
styles = other.styles;
|
styles = other.styles;
|
||||||
decals = Containers::Array<Decal>{other.decals.size()};
|
decals = Containers::Array<Decal>{other.decals.size()};
|
||||||
for(UnsignedInt i = 0; i < decals.size(); i++) {
|
for(auto i = 0u; i < decals.size(); i++) {
|
||||||
decals[i] = other.decals[i];
|
decals[i] = other.decals[i];
|
||||||
}
|
}
|
||||||
accessories = Containers::Array<Accessory>{other.accessories.size()};
|
accessories = Containers::Array<Accessory>{other.accessories.size()};
|
||||||
for(UnsignedInt i = 0; i < accessories.size(); i++) {
|
for(auto i = 0u; i < accessories.size(); i++) {
|
||||||
accessories[i] = other.accessories[i];
|
accessories[i] = other.accessories[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,11 +43,11 @@ struct WeaponPart {
|
||||||
id = other.id;
|
id = other.id;
|
||||||
styles = other.styles;
|
styles = other.styles;
|
||||||
decals = Containers::Array<Decal>{other.decals.size()};
|
decals = Containers::Array<Decal>{other.decals.size()};
|
||||||
for(UnsignedInt i = 0; i < decals.size(); i++) {
|
for(auto i = 0u; i < decals.size(); i++) {
|
||||||
decals[i] = other.decals[i];
|
decals[i] = other.decals[i];
|
||||||
}
|
}
|
||||||
accessories = Containers::Array<Accessory>{other.accessories.size()};
|
accessories = Containers::Array<Accessory>{other.accessories.size()};
|
||||||
for(UnsignedInt i = 0; i < accessories.size(); i++) {
|
for(auto i = 0u; i < accessories.size(); i++) {
|
||||||
accessories[i] = other.accessories[i];
|
accessories[i] = other.accessories[i];
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -59,8 +56,8 @@ struct WeaponPart {
|
||||||
WeaponPart(WeaponPart&& other) = default;
|
WeaponPart(WeaponPart&& other) = default;
|
||||||
WeaponPart& operator=(WeaponPart&& other) = default;
|
WeaponPart& operator=(WeaponPart&& other) = default;
|
||||||
|
|
||||||
Int id = 0;
|
std::int32_t id = 0;
|
||||||
Containers::StaticArray<4, Int> styles{ValueInit};
|
Containers::StaticArray<4, std::int32_t> styles{ValueInit};
|
||||||
Containers::Array<Decal> decals{};
|
Containers::Array<Decal> decals{};
|
||||||
Containers::Array<Accessory> accessories{};
|
Containers::Array<Accessory> accessories{};
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,7 +30,7 @@ MassManager::MassManager(Containers::StringView save_path, Containers::StringVie
|
||||||
_saveDirectory{save_path}, _account{account}, _demo{demo}, _stagingAreaDirectory{staging_dir}
|
_saveDirectory{save_path}, _account{account}, _demo{demo}, _stagingAreaDirectory{staging_dir}
|
||||||
{
|
{
|
||||||
Containers::String mass_filename = "";
|
Containers::String mass_filename = "";
|
||||||
for(UnsignedInt i = 0; i < _hangars.size(); i++) {
|
for(std::uint32_t i = 0; i < _hangars.size(); i++) {
|
||||||
mass_filename = Utility::Path::join(_saveDirectory,
|
mass_filename = Utility::Path::join(_saveDirectory,
|
||||||
Utility::format("{}Unit{:.2d}{}.sav", demo ? "Demo"_s : ""_s, i, _account));
|
Utility::format("{}Unit{:.2d}{}.sav", demo ? "Demo"_s : ""_s, i, _account));
|
||||||
new(&_hangars[i]) Mass{mass_filename};
|
new(&_hangars[i]) Mass{mass_filename};
|
||||||
|
@ -45,12 +45,12 @@ MassManager::lastError() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Mass&
|
Mass&
|
||||||
MassManager::hangar(Int hangar) {
|
MassManager::hangar(std::int32_t hangar) {
|
||||||
return _hangars[hangar];
|
return _hangars[hangar];
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MassManager::refreshHangar(Int hangar) {
|
MassManager::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);
|
||||||
|
@ -64,7 +64,7 @@ MassManager::refreshHangar(Int hangar) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::importMass(Containers::StringView staged_fn, Int hangar) {
|
MassManager::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);
|
||||||
|
@ -107,7 +107,7 @@ MassManager::importMass(Containers::StringView staged_fn, Int hangar) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::exportMass(Int hangar) {
|
MassManager::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);
|
||||||
|
@ -134,7 +134,7 @@ MassManager::exportMass(Int hangar) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::moveMass(Int source, Int destination) {
|
MassManager::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);
|
||||||
|
@ -172,7 +172,7 @@ MassManager::moveMass(Int source, Int destination) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MassManager::deleteMass(Int hangar) {
|
MassManager::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);
|
||||||
|
|
|
@ -189,24 +189,24 @@ Profile::renameCompany(Containers::StringView new_name) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::activeFrameSlot() const {
|
Profile::activeFrameSlot() const {
|
||||||
return _activeFrameSlot;
|
return _activeFrameSlot;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::credits() const {
|
Profile::credits() const {
|
||||||
return _credits;
|
return _credits;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setCredits(Int amount) {
|
Profile::setCredits(std::int32_t amount) {
|
||||||
auto credits_prop = _profile.at<IntProperty>(PROFILE_CREDITS);
|
auto credits_prop = _profile.at<IntProperty>(PROFILE_CREDITS);
|
||||||
|
|
||||||
if(!credits_prop) {
|
if(!credits_prop) {
|
||||||
credits_prop = new IntProperty;
|
credits_prop = new IntProperty;
|
||||||
credits_prop->name.emplace("Credit"_s);
|
credits_prop->name.emplace("Credit"_s);
|
||||||
credits_prop->valueLength = sizeof(Int);
|
credits_prop->valueLength = sizeof(std::int32_t);
|
||||||
_profile.appendProperty(IntProperty::ptr{credits_prop});
|
_profile.appendProperty(IntProperty::ptr{credits_prop});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,19 +220,19 @@ Profile::setCredits(Int amount) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::storyProgress() const {
|
Profile::storyProgress() const {
|
||||||
return _storyProgress;
|
return _storyProgress;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setStoryProgress(Int progress) {
|
Profile::setStoryProgress(std::int32_t progress) {
|
||||||
auto story_progress_prop = _profile.at<IntProperty>("StoryProgress"_s);
|
auto story_progress_prop = _profile.at<IntProperty>("StoryProgress"_s);
|
||||||
|
|
||||||
if(!story_progress_prop) {
|
if(!story_progress_prop) {
|
||||||
story_progress_prop = new IntProperty;
|
story_progress_prop = new IntProperty;
|
||||||
story_progress_prop->name.emplace("StoryProgress"_s);
|
story_progress_prop->name.emplace("StoryProgress"_s);
|
||||||
story_progress_prop->valueLength = sizeof(Int);
|
story_progress_prop->valueLength = sizeof(std::int32_t);
|
||||||
_profile.appendProperty(IntProperty::ptr{story_progress_prop});
|
_profile.appendProperty(IntProperty::ptr{story_progress_prop});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,252 +246,252 @@ Profile::setStoryProgress(Int progress) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::lastMissionId() const {
|
Profile::lastMissionId() const {
|
||||||
return _lastMissionId;
|
return _lastMissionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::verseSteel() const {
|
Profile::verseSteel() const {
|
||||||
return _verseSteel;
|
return _verseSteel;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setVerseSteel(Int amount) {
|
Profile::setVerseSteel(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, VerseSteel, amount);
|
return setResource(PROFILE_MATERIAL, VerseSteel, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::undinium() const {
|
Profile::undinium() const {
|
||||||
return _undinium;
|
return _undinium;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setUndinium(Int amount) {
|
Profile::setUndinium(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Undinium, amount);
|
return setResource(PROFILE_MATERIAL, Undinium, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::necriumAlloy() const {
|
Profile::necriumAlloy() const {
|
||||||
return _necriumAlloy;
|
return _necriumAlloy;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setNecriumAlloy(Int amount) {
|
Profile::setNecriumAlloy(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, NecriumAlloy, amount);
|
return setResource(PROFILE_MATERIAL, NecriumAlloy, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::lunarite() const {
|
Profile::lunarite() const {
|
||||||
return _lunarite;
|
return _lunarite;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setLunarite(Int amount) {
|
Profile::setLunarite(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Lunarite, amount);
|
return setResource(PROFILE_MATERIAL, Lunarite, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::asterite() const {
|
Profile::asterite() const {
|
||||||
return _asterite;
|
return _asterite;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setAsterite(Int amount) {
|
Profile::setAsterite(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Asterite, amount);
|
return setResource(PROFILE_MATERIAL, Asterite, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::halliteFragma() const {
|
Profile::halliteFragma() const {
|
||||||
return _halliteFragma;
|
return _halliteFragma;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setHalliteFragma(Int amount) {
|
Profile::setHalliteFragma(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, HalliteFragma, amount);
|
return setResource(PROFILE_MATERIAL, HalliteFragma, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::ednil() const {
|
Profile::ednil() const {
|
||||||
return _ednil;
|
return _ednil;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setEdnil(Int amount) {
|
Profile::setEdnil(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Ednil, amount);
|
return setResource(PROFILE_MATERIAL, Ednil, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::nuflalt() const {
|
Profile::nuflalt() const {
|
||||||
return _nuflalt;
|
return _nuflalt;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setNuflalt(Int amount) {
|
Profile::setNuflalt(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Nuflalt, amount);
|
return setResource(PROFILE_MATERIAL, Nuflalt, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::aurelene() const {
|
Profile::aurelene() const {
|
||||||
return _aurelene;
|
return _aurelene;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setAurelene(Int amount) {
|
Profile::setAurelene(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Aurelene, amount);
|
return setResource(PROFILE_MATERIAL, Aurelene, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::soldus() const {
|
Profile::soldus() const {
|
||||||
return _soldus;
|
return _soldus;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setSoldus(Int amount) {
|
Profile::setSoldus(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Soldus, amount);
|
return setResource(PROFILE_MATERIAL, Soldus, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::synthesisedN() const {
|
Profile::synthesisedN() const {
|
||||||
return _synthesisedN;
|
return _synthesisedN;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setSynthesisedN(Int amount) {
|
Profile::setSynthesisedN(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, SynthesisedN, amount);
|
return setResource(PROFILE_MATERIAL, SynthesisedN, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::nanoc() const {
|
Profile::nanoc() const {
|
||||||
return _nanoc;
|
return _nanoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setNanoc(Int amount) {
|
Profile::setNanoc(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Nanoc, amount);
|
return setResource(PROFILE_MATERIAL, Nanoc, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::alcarbonite() const {
|
Profile::alcarbonite() const {
|
||||||
return _alcarbonite;
|
return _alcarbonite;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setAlcarbonite(Int amount) {
|
Profile::setAlcarbonite(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Alcarbonite, amount);
|
return setResource(PROFILE_MATERIAL, Alcarbonite, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::keriphene() const {
|
Profile::keriphene() const {
|
||||||
return _keriphene;
|
return _keriphene;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setKeriphene(Int amount) {
|
Profile::setKeriphene(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Keriphene, amount);
|
return setResource(PROFILE_MATERIAL, Keriphene, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::nitinolCM() const {
|
Profile::nitinolCM() const {
|
||||||
return _nitinolCM;
|
return _nitinolCM;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setNitinolCM(Int amount) {
|
Profile::setNitinolCM(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, NitinolCM, amount);
|
return setResource(PROFILE_MATERIAL, NitinolCM, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::quarkium() const {
|
Profile::quarkium() const {
|
||||||
return _quarkium;
|
return _quarkium;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setQuarkium(Int amount) {
|
Profile::setQuarkium(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Quarkium, amount);
|
return setResource(PROFILE_MATERIAL, Quarkium, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::alterene() const {
|
Profile::alterene() const {
|
||||||
return _alterene;
|
return _alterene;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setAlterene(Int amount) {
|
Profile::setAlterene(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Alterene, amount);
|
return setResource(PROFILE_MATERIAL, Alterene, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::cosmium() const {
|
Profile::cosmium() const {
|
||||||
return _cosmium;
|
return _cosmium;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setCosmium(Int amount) {
|
Profile::setCosmium(std::int32_t amount) {
|
||||||
return setResource(PROFILE_MATERIAL, Cosmium, amount);
|
return setResource(PROFILE_MATERIAL, Cosmium, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::mixedComposition() const {
|
Profile::mixedComposition() const {
|
||||||
return _mixedComposition;
|
return _mixedComposition;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setMixedComposition(Int amount) {
|
Profile::setMixedComposition(std::int32_t amount) {
|
||||||
return setResource(PROFILE_QUARK_DATA, MixedComposition, amount);
|
return setResource(PROFILE_QUARK_DATA, MixedComposition, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::voidResidue() const {
|
Profile::voidResidue() const {
|
||||||
return _voidResidue;
|
return _voidResidue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setVoidResidue(Int amount) {
|
Profile::setVoidResidue(std::int32_t amount) {
|
||||||
return setResource(PROFILE_QUARK_DATA, VoidResidue, amount);
|
return setResource(PROFILE_QUARK_DATA, VoidResidue, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::muscularConstruction() const {
|
Profile::muscularConstruction() const {
|
||||||
return _muscularConstruction;
|
return _muscularConstruction;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setMuscularConstruction(Int amount) {
|
Profile::setMuscularConstruction(std::int32_t amount) {
|
||||||
return setResource(PROFILE_QUARK_DATA, MuscularConstruction, amount);
|
return setResource(PROFILE_QUARK_DATA, MuscularConstruction, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::mineralExoskeletology() const {
|
Profile::mineralExoskeletology() const {
|
||||||
return _mineralExoskeletology;
|
return _mineralExoskeletology;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setMineralExoskeletology(Int amount) {
|
Profile::setMineralExoskeletology(std::int32_t amount) {
|
||||||
return setResource(PROFILE_QUARK_DATA, MineralExoskeletology, amount);
|
return setResource(PROFILE_QUARK_DATA, MineralExoskeletology, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::carbonisedSkin() const {
|
Profile::carbonisedSkin() const {
|
||||||
return _carbonisedSkin;
|
return _carbonisedSkin;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setCarbonisedSkin(Int amount) {
|
Profile::setCarbonisedSkin(std::int32_t amount) {
|
||||||
return setResource(PROFILE_QUARK_DATA, CarbonisedSkin, amount);
|
return setResource(PROFILE_QUARK_DATA, CarbonisedSkin, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::isolatedVoidParticle() const {
|
Profile::isolatedVoidParticle() const {
|
||||||
return _isolatedVoidParticle;
|
return _isolatedVoidParticle;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setIsolatedVoidParticle(Int amount) {
|
Profile::setIsolatedVoidParticle(std::int32_t amount) {
|
||||||
return setResource(PROFILE_QUARK_DATA, IsolatedVoidParticle, amount);
|
return setResource(PROFILE_QUARK_DATA, IsolatedVoidParticle, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
Profile::getResource(Containers::StringView container, MaterialID id) {
|
Profile::getResource(Containers::StringView container, MaterialID id) {
|
||||||
auto mats_prop = _profile.at<ArrayProperty>(container);
|
auto mats_prop = _profile.at<ArrayProperty>(container);
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ Profile::getResource(Containers::StringView container, MaterialID id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Profile::setResource(Containers::StringView container, MaterialID id, Int amount) {
|
Profile::setResource(Containers::StringView container, MaterialID id, std::int32_t amount) {
|
||||||
auto mats_prop = _profile.at<ArrayProperty>(container);
|
auto mats_prop = _profile.at<ArrayProperty>(container);
|
||||||
|
|
||||||
if(!mats_prop) {
|
if(!mats_prop) {
|
||||||
|
|
|
@ -19,16 +19,13 @@
|
||||||
#include <Corrade/Containers/String.h>
|
#include <Corrade/Containers/String.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Magnum.h>
|
|
||||||
|
|
||||||
#include "../UESaveFile/UESaveFile.h"
|
#include "../UESaveFile/UESaveFile.h"
|
||||||
|
|
||||||
#include "ResourceIDs.h"
|
#include "ResourceIDs.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
enum class ProfileType : UnsignedByte {
|
enum class ProfileType: std::uint8_t {
|
||||||
Demo,
|
Demo,
|
||||||
FullGame
|
FullGame
|
||||||
};
|
};
|
||||||
|
@ -37,14 +34,14 @@ class Profile {
|
||||||
public:
|
public:
|
||||||
explicit Profile(Containers::StringView path);
|
explicit Profile(Containers::StringView path);
|
||||||
|
|
||||||
auto valid() const -> bool;
|
bool valid() const;
|
||||||
|
|
||||||
auto lastError() const -> Containers::StringView;
|
auto lastError() const -> Containers::StringView;
|
||||||
|
|
||||||
auto filename() const -> Containers::StringView;
|
auto filename() const -> Containers::StringView;
|
||||||
|
|
||||||
auto type() const -> ProfileType;
|
ProfileType type() const;
|
||||||
auto isDemo() const -> bool;
|
bool isDemo() const;
|
||||||
|
|
||||||
auto account() const -> Containers::StringView;
|
auto account() const -> Containers::StringView;
|
||||||
|
|
||||||
|
@ -53,91 +50,91 @@ class Profile {
|
||||||
auto companyName() const -> Containers::StringView;
|
auto companyName() const -> Containers::StringView;
|
||||||
bool renameCompany(Containers::StringView new_name);
|
bool renameCompany(Containers::StringView new_name);
|
||||||
|
|
||||||
auto activeFrameSlot() const -> Int;
|
std::int32_t activeFrameSlot() const;
|
||||||
|
|
||||||
auto credits() const -> Int;
|
std::int32_t credits() const;
|
||||||
bool setCredits(Int credits);
|
bool setCredits(std::int32_t credits);
|
||||||
|
|
||||||
auto storyProgress() const -> Int;
|
std::int32_t storyProgress() const;
|
||||||
bool setStoryProgress(Int progress);
|
bool setStoryProgress(std::int32_t progress);
|
||||||
|
|
||||||
auto lastMissionId() const -> Int;
|
std::int32_t lastMissionId() const;
|
||||||
|
|
||||||
auto verseSteel() const -> Int;
|
std::int32_t verseSteel() const;
|
||||||
bool setVerseSteel(Int amount);
|
bool setVerseSteel(std::int32_t amount);
|
||||||
|
|
||||||
auto undinium() const -> Int;
|
std::int32_t undinium() const;
|
||||||
bool setUndinium(Int amount);
|
bool setUndinium(std::int32_t amount);
|
||||||
|
|
||||||
auto necriumAlloy() const -> Int;
|
std::int32_t necriumAlloy() const;
|
||||||
bool setNecriumAlloy(Int amount);
|
bool setNecriumAlloy(std::int32_t amount);
|
||||||
|
|
||||||
auto lunarite() const -> Int;
|
std::int32_t lunarite() const;
|
||||||
bool setLunarite(Int amount);
|
bool setLunarite(std::int32_t amount);
|
||||||
|
|
||||||
auto asterite() const -> Int;
|
std::int32_t asterite() const;
|
||||||
bool setAsterite(Int amount);
|
bool setAsterite(std::int32_t amount);
|
||||||
|
|
||||||
Int halliteFragma() const;
|
std::int32_t halliteFragma() const;
|
||||||
bool setHalliteFragma(Int amount);
|
bool setHalliteFragma(std::int32_t amount);
|
||||||
|
|
||||||
auto ednil() const -> Int;
|
std::int32_t ednil() const;
|
||||||
bool setEdnil(Int amount);
|
bool setEdnil(std::int32_t amount);
|
||||||
|
|
||||||
auto nuflalt() const -> Int;
|
std::int32_t nuflalt() const;
|
||||||
bool setNuflalt(Int amount);
|
bool setNuflalt(std::int32_t amount);
|
||||||
|
|
||||||
auto aurelene() const -> Int;
|
std::int32_t aurelene() const;
|
||||||
bool setAurelene(Int amount);
|
bool setAurelene(std::int32_t amount);
|
||||||
|
|
||||||
auto soldus() const -> Int;
|
std::int32_t soldus() const;
|
||||||
bool setSoldus(Int amount);
|
bool setSoldus(std::int32_t amount);
|
||||||
|
|
||||||
auto synthesisedN() const -> Int;
|
std::int32_t synthesisedN() const;
|
||||||
bool setSynthesisedN(Int amount);
|
bool setSynthesisedN(std::int32_t amount);
|
||||||
|
|
||||||
Int nanoc() const;
|
std::int32_t nanoc() const;
|
||||||
bool setNanoc(Int amount);
|
bool setNanoc(std::int32_t amount);
|
||||||
|
|
||||||
auto alcarbonite() const -> Int;
|
std::int32_t alcarbonite() const;
|
||||||
bool setAlcarbonite(Int amount);
|
bool setAlcarbonite(std::int32_t amount);
|
||||||
|
|
||||||
auto keriphene() const -> Int;
|
std::int32_t keriphene() const;
|
||||||
bool setKeriphene(Int amount);
|
bool setKeriphene(std::int32_t amount);
|
||||||
|
|
||||||
auto nitinolCM() const -> Int;
|
std::int32_t nitinolCM() const;
|
||||||
bool setNitinolCM(Int amount);
|
bool setNitinolCM(std::int32_t amount);
|
||||||
|
|
||||||
auto quarkium() const -> Int;
|
std::int32_t quarkium() const;
|
||||||
bool setQuarkium(Int amount);
|
bool setQuarkium(std::int32_t amount);
|
||||||
|
|
||||||
auto alterene() const -> Int;
|
std::int32_t alterene() const;
|
||||||
bool setAlterene(Int amount);
|
bool setAlterene(std::int32_t amount);
|
||||||
|
|
||||||
Int cosmium() const;
|
std::int32_t cosmium() const;
|
||||||
bool setCosmium(Int amount);
|
bool setCosmium(std::int32_t amount);
|
||||||
|
|
||||||
auto mixedComposition() const -> Int;
|
std::int32_t mixedComposition() const;
|
||||||
bool setMixedComposition(Int amount);
|
bool setMixedComposition(std::int32_t amount);
|
||||||
|
|
||||||
auto voidResidue() const -> Int;
|
std::int32_t voidResidue() const;
|
||||||
bool setVoidResidue(Int amount);
|
bool setVoidResidue(std::int32_t amount);
|
||||||
|
|
||||||
auto muscularConstruction() const -> Int;
|
std::int32_t muscularConstruction() const;
|
||||||
bool setMuscularConstruction(Int amount);
|
bool setMuscularConstruction(std::int32_t amount);
|
||||||
|
|
||||||
auto mineralExoskeletology() const -> Int;
|
std::int32_t mineralExoskeletology() const;
|
||||||
bool setMineralExoskeletology(Int amount);
|
bool setMineralExoskeletology(std::int32_t amount);
|
||||||
|
|
||||||
auto carbonisedSkin() const -> Int;
|
std::int32_t carbonisedSkin() const;
|
||||||
bool setCarbonisedSkin(Int amount);
|
bool setCarbonisedSkin(std::int32_t amount);
|
||||||
|
|
||||||
Int isolatedVoidParticle() const;
|
std::int32_t isolatedVoidParticle() const;
|
||||||
bool setIsolatedVoidParticle(Int amount);
|
bool setIsolatedVoidParticle(std::int32_t amount);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Int getResource(Containers::StringView container, MaterialID id);
|
std::int32_t getResource(Containers::StringView container, MaterialID id);
|
||||||
bool setResource(Containers::StringView container, MaterialID id, Int amount);
|
bool setResource(Containers::StringView container, MaterialID id, std::int32_t amount);
|
||||||
|
|
||||||
Containers::String _filename;
|
Containers::String _filename;
|
||||||
|
|
||||||
|
@ -146,38 +143,38 @@ class Profile {
|
||||||
UESaveFile _profile;
|
UESaveFile _profile;
|
||||||
|
|
||||||
Containers::String _name;
|
Containers::String _name;
|
||||||
Int _activeFrameSlot = 0;
|
std::int32_t _activeFrameSlot = 0;
|
||||||
Int _credits = 0;
|
std::int32_t _credits = 0;
|
||||||
Int _storyProgress = 0;
|
std::int32_t _storyProgress = 0;
|
||||||
Int _lastMissionId = 0;
|
std::int32_t _lastMissionId = 0;
|
||||||
|
|
||||||
Int _verseSteel = 0;
|
std::int32_t _verseSteel = 0;
|
||||||
Int _undinium = 0;
|
std::int32_t _undinium = 0;
|
||||||
Int _necriumAlloy = 0;
|
std::int32_t _necriumAlloy = 0;
|
||||||
Int _lunarite = 0;
|
std::int32_t _lunarite = 0;
|
||||||
Int _asterite = 0;
|
std::int32_t _asterite = 0;
|
||||||
Int _halliteFragma = 0;
|
std::int32_t _halliteFragma = 0;
|
||||||
|
|
||||||
Int _ednil = 0;
|
std::int32_t _ednil = 0;
|
||||||
Int _nuflalt = 0;
|
std::int32_t _nuflalt = 0;
|
||||||
Int _aurelene = 0;
|
std::int32_t _aurelene = 0;
|
||||||
Int _soldus = 0;
|
std::int32_t _soldus = 0;
|
||||||
Int _synthesisedN = 0;
|
std::int32_t _synthesisedN = 0;
|
||||||
Int _nanoc = 0;
|
std::int32_t _nanoc = 0;
|
||||||
|
|
||||||
Int _alcarbonite = 0;
|
std::int32_t _alcarbonite = 0;
|
||||||
Int _keriphene = 0;
|
std::int32_t _keriphene = 0;
|
||||||
Int _nitinolCM = 0;
|
std::int32_t _nitinolCM = 0;
|
||||||
Int _quarkium = 0;
|
std::int32_t _quarkium = 0;
|
||||||
Int _alterene = 0;
|
std::int32_t _alterene = 0;
|
||||||
Int _cosmium = 0;
|
std::int32_t _cosmium = 0;
|
||||||
|
|
||||||
Int _mixedComposition = 0;
|
std::int32_t _mixedComposition = 0;
|
||||||
Int _voidResidue = 0;
|
std::int32_t _voidResidue = 0;
|
||||||
Int _muscularConstruction = 0;
|
std::int32_t _muscularConstruction = 0;
|
||||||
Int _mineralExoskeletology = 0;
|
std::int32_t _mineralExoskeletology = 0;
|
||||||
Int _carbonisedSkin = 0;
|
std::int32_t _carbonisedSkin = 0;
|
||||||
Int _isolatedVoidParticle = 0;
|
std::int32_t _isolatedVoidParticle = 0;
|
||||||
|
|
||||||
Containers::String _account;
|
Containers::String _account;
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,7 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <Magnum/Types.h>
|
enum MaterialID : std::int32_t {
|
||||||
|
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
enum MaterialID : Int {
|
|
||||||
VerseSteel = 0xC3500,
|
VerseSteel = 0xC3500,
|
||||||
Undinium = 0xC3501,
|
Undinium = 0xC3501,
|
||||||
NecriumAlloy = 0xC3502,
|
NecriumAlloy = 0xC3502,
|
||||||
|
|
|
@ -114,7 +114,7 @@ ProfileManager::deleteProfile(std::size_t index, bool delete_builds) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(delete_builds) {
|
if(delete_builds) {
|
||||||
for(UnsignedByte i = 0; i < 32; ++i) {
|
for(std::uint8_t i = 0; i < 32; ++i) {
|
||||||
auto filename = Utility::format("{}Unit{:.2d}{}.sav",
|
auto filename = Utility::format("{}Unit{:.2d}{}.sav",
|
||||||
_profiles[index].type() == ProfileType::Demo ? "Demo": "",
|
_profiles[index].type() == ProfileType::Demo ? "Demo": "",
|
||||||
i, _profiles[index].account());
|
i, _profiles[index].account());
|
||||||
|
@ -176,7 +176,7 @@ ProfileManager::backupProfile(std::size_t index, bool backup_builds) {
|
||||||
zip_set_archive_comment(zip, comment.data(), comment.size());
|
zip_set_archive_comment(zip, comment.data(), comment.size());
|
||||||
|
|
||||||
if(backup_builds) {
|
if(backup_builds) {
|
||||||
for(UnsignedByte i = 0; i < 32; ++i) {
|
for(std::uint8_t i = 0; i < 32; ++i) {
|
||||||
auto build_filename = Utility::format("{}Unit{:.2d}{}.sav",
|
auto build_filename = Utility::format("{}Unit{:.2d}{}.sav",
|
||||||
profile.isDemo() ? "Demo"_s : ""_s, i,
|
profile.isDemo() ? "Demo"_s : ""_s, i,
|
||||||
profile.account());
|
profile.account());
|
||||||
|
@ -247,7 +247,7 @@ ProfileManager::refreshBackups() {
|
||||||
|
|
||||||
Containers::ScopeGuard guard{zip, zip_close};
|
Containers::ScopeGuard guard{zip, zip_close};
|
||||||
|
|
||||||
Long num_entries = zip_get_num_entries(zip, ZIP_FL_UNCHANGED);
|
auto num_entries = zip_get_num_entries(zip, ZIP_FL_UNCHANGED);
|
||||||
|
|
||||||
if(num_entries == 0) {
|
if(num_entries == 0) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -291,7 +291,7 @@ ProfileManager::refreshBackups() {
|
||||||
|
|
||||||
arrayReserve(backup.includedFiles, num_entries);
|
arrayReserve(backup.includedFiles, num_entries);
|
||||||
|
|
||||||
for(Long i = 0; i < num_entries; i++) {
|
for(auto i = 0; i < num_entries; i++) {
|
||||||
arrayAppend(backup.includedFiles, InPlaceInit, zip_get_name(zip, i, ZIP_FL_UNCHANGED));
|
arrayAppend(backup.includedFiles, InPlaceInit, zip_get_name(zip, i, ZIP_FL_UNCHANGED));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,7 +358,7 @@ ProfileManager::restoreBackup(std::size_t index) {
|
||||||
|
|
||||||
Containers::StaticArray<8192, char> buf{ValueInit};
|
Containers::StaticArray<8192, char> buf{ValueInit};
|
||||||
|
|
||||||
Long bytes_read = 0;
|
auto bytes_read = 0l;
|
||||||
while((bytes_read = zip_fread(zf, buf.data(), buf.size())) > 0) {
|
while((bytes_read = zip_fread(zf, buf.data(), buf.size())) > 0) {
|
||||||
if(std::fwrite(buf.data(), sizeof(char), bytes_read, out) < static_cast<std::size_t>(bytes_read)) {
|
if(std::fwrite(buf.data(), sizeof(char), bytes_read, out) < static_cast<std::size_t>(bytes_read)) {
|
||||||
_lastError = Utility::format(error_format.data(), file, "not enough bytes written.");
|
_lastError = Utility::format(error_format.data(), file, "not enough bytes written.");
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <Corrade/Containers/Array.h>
|
#include <Corrade/Containers/Array.h>
|
||||||
|
@ -30,12 +32,12 @@ struct Backup {
|
||||||
Containers::String company;
|
Containers::String company;
|
||||||
ProfileType type;
|
ProfileType type;
|
||||||
struct {
|
struct {
|
||||||
int year;
|
std::int32_t year;
|
||||||
int month;
|
std::int32_t month;
|
||||||
int day;
|
std::int32_t day;
|
||||||
int hour;
|
std::int32_t hour;
|
||||||
int minute;
|
std::int32_t minute;
|
||||||
int second;
|
std::int32_t second;
|
||||||
} timestamp;
|
} timestamp;
|
||||||
Containers::Array<Containers::String> includedFiles;
|
Containers::Array<Containers::String> includedFiles;
|
||||||
};
|
};
|
||||||
|
|
|
@ -58,8 +58,6 @@ SaveTool::SaveTool(const Arguments& arguments):
|
||||||
LOG_INFO("Configuring OpenGL renderer.");
|
LOG_INFO("Configuring OpenGL renderer.");
|
||||||
GL::Renderer::enable(GL::Renderer::Feature::Blending);
|
GL::Renderer::enable(GL::Renderer::Feature::Blending);
|
||||||
GL::Renderer::enable(GL::Renderer::Feature::ScissorTest);
|
GL::Renderer::enable(GL::Renderer::Feature::ScissorTest);
|
||||||
GL::Renderer::disable(GL::Renderer::Feature::FaceCulling);
|
|
||||||
GL::Renderer::disable(GL::Renderer::Feature::DepthTest);
|
|
||||||
GL::Renderer::setBlendFunction(GL::Renderer::BlendFunction::SourceAlpha,
|
GL::Renderer::setBlendFunction(GL::Renderer::BlendFunction::SourceAlpha,
|
||||||
GL::Renderer::BlendFunction::OneMinusSourceAlpha);
|
GL::Renderer::BlendFunction::OneMinusSourceAlpha);
|
||||||
GL::Renderer::setBlendEquation(GL::Renderer::BlendEquation::Add,
|
GL::Renderer::setBlendEquation(GL::Renderer::BlendEquation::Add,
|
||||||
|
@ -79,7 +77,7 @@ SaveTool::SaveTool(const Arguments& arguments):
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LOG_INFO("Registering custom events.");
|
LOG_INFO("Registering custom events.");
|
||||||
if((_initEventId = SDL_RegisterEvents(3)) == UnsignedInt(-1)) {
|
if((_initEventId = SDL_RegisterEvents(3)) == std::uint32_t(-1)) {
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error",
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error",
|
||||||
"SDL_RegisterEvents() failed in SaveTool::SaveTool(). Exiting...", window());
|
"SDL_RegisterEvents() failed in SaveTool::SaveTool(). Exiting...", window());
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
@ -116,7 +114,7 @@ SaveTool::SaveTool(const Arguments& arguments):
|
||||||
|
|
||||||
checkGameState();
|
checkGameState();
|
||||||
_gameCheckTimerId = SDL_AddTimer(2000,
|
_gameCheckTimerId = SDL_AddTimer(2000,
|
||||||
[](UnsignedInt interval, void* param)->UnsignedInt{
|
[](std::uint32_t interval, void* param)->std::uint32_t{
|
||||||
static_cast<SaveTool*>(param)->checkGameState();
|
static_cast<SaveTool*>(param)->checkGameState();
|
||||||
return interval;
|
return interval;
|
||||||
}, this);
|
}, this);
|
||||||
|
@ -405,13 +403,13 @@ SaveTool::drawGameState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SaveTool::drawHelpMarker(Containers::StringView text, Float wrap_pos) {
|
SaveTool::drawHelpMarker(Containers::StringView text, float wrap_pos) {
|
||||||
ImGui::TextUnformatted(ICON_FA_QUESTION_CIRCLE);
|
ImGui::TextUnformatted(ICON_FA_QUESTION_CIRCLE);
|
||||||
drawTooltip(text, wrap_pos);
|
drawTooltip(text, wrap_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SaveTool::drawTooltip(Containers::StringView text, Float wrap_pos) {
|
SaveTool::drawTooltip(Containers::StringView text, float wrap_pos) {
|
||||||
if(ImGui::IsItemHovered()){
|
if(ImGui::IsItemHovered()){
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
if(wrap_pos > 0.0f) {
|
if(wrap_pos > 0.0f) {
|
||||||
|
|
|
@ -77,20 +77,20 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
|
|
||||||
void anyEvent(SDL_Event& event) override;
|
void anyEvent(SDL_Event& event) override;
|
||||||
|
|
||||||
enum InitStatus: Int {
|
enum InitStatus: std::int32_t {
|
||||||
InitSuccess,
|
InitSuccess,
|
||||||
ProfileManagerFailure
|
ProfileManagerFailure
|
||||||
};
|
};
|
||||||
void initEvent(SDL_Event& event);
|
void initEvent(SDL_Event& event);
|
||||||
|
|
||||||
enum UpdateCheckStatus : Int {
|
enum UpdateCheckStatus : std::int32_t {
|
||||||
CurlInitFailed = 0,
|
CurlInitFailed = 0,
|
||||||
CurlError = 1,
|
CurlError = 1,
|
||||||
CurlTimeout = 2,
|
CurlTimeout = 2,
|
||||||
};
|
};
|
||||||
void updateCheckEvent(SDL_Event& event);
|
void updateCheckEvent(SDL_Event& event);
|
||||||
|
|
||||||
enum FileEventType: Int {
|
enum FileEventType: std::int32_t {
|
||||||
FileAdded = efsw::Action::Add,
|
FileAdded = efsw::Action::Add,
|
||||||
FileDeleted = efsw::Action::Delete,
|
FileDeleted = efsw::Action::Delete,
|
||||||
FileModified = efsw::Action::Modified,
|
FileModified = efsw::Action::Modified,
|
||||||
|
@ -126,8 +126,8 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
void drawGeneralInfo();
|
void drawGeneralInfo();
|
||||||
void drawResearchInventory();
|
void drawResearchInventory();
|
||||||
template<typename Getter, typename Setter>
|
template<typename Getter, typename Setter>
|
||||||
void drawMaterialRow(Containers::StringView name, Int tier, Getter getter, Setter setter);
|
void drawMaterialRow(Containers::StringView name, std::int32_t tier, Getter getter, Setter setter);
|
||||||
void drawUnavailableMaterialRow(Containers::StringView name, Int tier);
|
void drawUnavailableMaterialRow(Containers::StringView name, std::int32_t tier);
|
||||||
void drawMassManager();
|
void drawMassManager();
|
||||||
ImGuiID drawDeleteMassPopup(int mass_index);
|
ImGuiID drawDeleteMassPopup(int mass_index);
|
||||||
ImGuiID drawDeleteStagedMassPopup(Containers::StringView filename);
|
ImGuiID drawDeleteStagedMassPopup(Containers::StringView filename);
|
||||||
|
@ -148,7 +148,7 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
void drawTuning();
|
void drawTuning();
|
||||||
void drawDecalEditor(Decal& decal);
|
void drawDecalEditor(Decal& decal);
|
||||||
void drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<CustomStyle> style_view);
|
void drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<CustomStyle> style_view);
|
||||||
Containers::StringView getStyleName(Int id, Containers::ArrayView<CustomStyle> view);
|
Containers::StringView getStyleName(std::int32_t id, Containers::ArrayView<CustomStyle> view);
|
||||||
|
|
||||||
enum DCSResult {
|
enum DCSResult {
|
||||||
DCS_Fail,
|
DCS_Fail,
|
||||||
|
@ -161,8 +161,8 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
void drawGameState();
|
void drawGameState();
|
||||||
|
|
||||||
// Convenience wrappers over ImGui stuff
|
// Convenience wrappers over ImGui stuff
|
||||||
void drawHelpMarker(Containers::StringView text, Float wrap_pos = 0.0f);
|
void drawHelpMarker(Containers::StringView text, float wrap_pos = 0.0f);
|
||||||
void drawTooltip(Containers::StringView text, Float wrap_pos = 0.0f);
|
void drawTooltip(Containers::StringView text, float wrap_pos = 0.0f);
|
||||||
bool drawCheckbox(Containers::StringView label, bool value);
|
bool drawCheckbox(Containers::StringView label, bool value);
|
||||||
|
|
||||||
template<typename Functor, typename... Args>
|
template<typename Functor, typename... Args>
|
||||||
|
@ -222,9 +222,9 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
std::thread _initThread;
|
std::thread _initThread;
|
||||||
std::thread _updateThread;
|
std::thread _updateThread;
|
||||||
|
|
||||||
UnsignedInt _initEventId;
|
std::uint32_t _initEventId;
|
||||||
UnsignedInt _updateEventId;
|
std::uint32_t _updateEventId;
|
||||||
UnsignedInt _fileEventId;
|
std::uint32_t _fileEventId;
|
||||||
|
|
||||||
Containers::String _lastError;
|
Containers::String _lastError;
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
//Containers::String _weaponsDir;
|
//Containers::String _weaponsDir;
|
||||||
//Containers::String _stylesDir;
|
//Containers::String _stylesDir;
|
||||||
|
|
||||||
enum class GameState : UnsignedByte {
|
enum class GameState : std::uint8_t {
|
||||||
Unknown, NotRunning, Running
|
Unknown, NotRunning, Running
|
||||||
} _gameState{GameState::Unknown};
|
} _gameState{GameState::Unknown};
|
||||||
|
|
||||||
|
@ -270,12 +270,12 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
bool _jointsDirty{false};
|
bool _jointsDirty{false};
|
||||||
bool _stylesDirty{false};
|
bool _stylesDirty{false};
|
||||||
bool _eyeFlareDirty{false};
|
bool _eyeFlareDirty{false};
|
||||||
Containers::StaticArray<38, Int> _selectedArmourDecals{ValueInit};
|
Containers::StaticArray<38, std::int32_t> _selectedArmourDecals{ValueInit};
|
||||||
Containers::StaticArray<38, Int> _selectedArmourAccessories{ValueInit};
|
Containers::StaticArray<38, std::int32_t> _selectedArmourAccessories{ValueInit};
|
||||||
Int _selectedBLPlacement{0};
|
std::int32_t _selectedBLPlacement{0};
|
||||||
Int _selectedWeaponPart{0};
|
std::int32_t _selectedWeaponPart{0};
|
||||||
Int _selectedWeaponDecal{0};
|
std::int32_t _selectedWeaponDecal{0};
|
||||||
Int _selectedWeaponAccessory{0};
|
std::int32_t _selectedWeaponAccessory{0};
|
||||||
bool _meleeDirty{false};
|
bool _meleeDirty{false};
|
||||||
bool _shieldsDirty{false};
|
bool _shieldsDirty{false};
|
||||||
bool _bShootersDirty{false};
|
bool _bShootersDirty{false};
|
||||||
|
|
|
@ -73,8 +73,8 @@ SaveTool::fileUpdateEvent(SDL_Event& event) {
|
||||||
|
|
||||||
Containers::String old_filename;
|
Containers::String old_filename;
|
||||||
|
|
||||||
Int index = 0;
|
std::int32_t index = 0;
|
||||||
Int old_index = 0;
|
std::int32_t old_index = 0;
|
||||||
bool is_current_profile = filename == _currentProfile->filename();
|
bool is_current_profile = filename == _currentProfile->filename();
|
||||||
bool is_unit = filename.hasPrefix(_currentProfile->isDemo() ? "DemoUnit"_s : "Unit"_s);
|
bool is_unit = filename.hasPrefix(_currentProfile->isDemo() ? "DemoUnit"_s : "Unit"_s);
|
||||||
if(is_unit) {
|
if(is_unit) {
|
||||||
|
|
|
@ -73,7 +73,7 @@ SaveTool::initialiseGui() {
|
||||||
font_config.FontDataOwnedByAtlas = false;
|
font_config.FontDataOwnedByAtlas = false;
|
||||||
std::strcpy(font_config.Name, "Source Sans Pro");
|
std::strcpy(font_config.Name, "Source Sans Pro");
|
||||||
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(reg_font.data()), int(reg_font.size()),
|
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(reg_font.data()), int(reg_font.size()),
|
||||||
20.0f * Float(framebufferSize().x()) / size.x(), &font_config);
|
20.0f * float(framebufferSize().x()) / size.x(), &font_config);
|
||||||
|
|
||||||
auto icon_font = _rs.getRaw(FONT_ICON_FILE_NAME_FAS);
|
auto icon_font = _rs.getRaw(FONT_ICON_FILE_NAME_FAS);
|
||||||
static const ImWchar icon_range[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
|
static const ImWchar icon_range[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
|
||||||
|
@ -84,12 +84,12 @@ SaveTool::initialiseGui() {
|
||||||
icon_config.OversampleH = icon_config.OversampleV = 1;
|
icon_config.OversampleH = icon_config.OversampleV = 1;
|
||||||
icon_config.GlyphMinAdvanceX = 18.0f;
|
icon_config.GlyphMinAdvanceX = 18.0f;
|
||||||
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(icon_font.data()), int(icon_font.size()),
|
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(icon_font.data()), int(icon_font.size()),
|
||||||
16.0f * Float(framebufferSize().x()) / size.x(), &icon_config, icon_range);
|
16.0f * float(framebufferSize().x()) / size.x(), &icon_config, icon_range);
|
||||||
|
|
||||||
auto brand_font = _rs.getRaw(FONT_ICON_FILE_NAME_FAB);
|
auto brand_font = _rs.getRaw(FONT_ICON_FILE_NAME_FAB);
|
||||||
static const ImWchar brand_range[] = { ICON_MIN_FAB, ICON_MAX_FAB, 0 };
|
static const ImWchar brand_range[] = { ICON_MIN_FAB, ICON_MAX_FAB, 0 };
|
||||||
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(brand_font.data()), int(brand_font.size()),
|
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(brand_font.data()), int(brand_font.size()),
|
||||||
16.0f * Float(framebufferSize().x()) / size.x(), &icon_config, brand_range);
|
16.0f * float(framebufferSize().x()) / size.x(), &icon_config, brand_range);
|
||||||
|
|
||||||
auto mono_font = _rs.getRaw("SourceCodePro-Regular.ttf"_s);
|
auto mono_font = _rs.getRaw("SourceCodePro-Regular.ttf"_s);
|
||||||
ImVector<ImWchar> range;
|
ImVector<ImWchar> range;
|
||||||
|
@ -98,7 +98,7 @@ SaveTool::initialiseGui() {
|
||||||
builder.AddChar(u'š'); // This allows displaying Vladimír Vondruš' name in Corrade's and Magnum's licences.
|
builder.AddChar(u'š'); // This allows displaying Vladimír Vondruš' name in Corrade's and Magnum's licences.
|
||||||
builder.BuildRanges(&range);
|
builder.BuildRanges(&range);
|
||||||
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(mono_font.data()), int(mono_font.size()),
|
io.Fonts->AddFontFromMemoryTTF(const_cast<char*>(mono_font.data()), int(mono_font.size()),
|
||||||
18.0f * Float(framebufferSize().x()) / size.x(), &font_config, range.Data);
|
18.0f * float(framebufferSize().x()) / size.x(), &font_config, range.Data);
|
||||||
|
|
||||||
_imgui = ImGuiIntegration::Context(*ImGui::GetCurrentContext(), windowSize());
|
_imgui = ImGuiIntegration::Context(*ImGui::GetCurrentContext(), windowSize());
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
void
|
void
|
||||||
SaveTool::drawManager() {
|
SaveTool::drawManager() {
|
||||||
ImGui::SetNextWindowPos({0.0f, ImGui::GetItemRectSize().y}, ImGuiCond_Always);
|
ImGui::SetNextWindowPos({0.0f, ImGui::GetItemRectSize().y}, ImGuiCond_Always);
|
||||||
ImGui::SetNextWindowSize({Float(windowSize().x()), Float(windowSize().y()) - ImGui::GetItemRectSize().y},
|
ImGui::SetNextWindowSize({float(windowSize().x()), float(windowSize().y()) - ImGui::GetItemRectSize().y},
|
||||||
ImGuiCond_Always);
|
ImGuiCond_Always);
|
||||||
if(!ImGui::Begin("##MainWindow", nullptr,
|
if(!ImGui::Begin("##MainWindow", nullptr,
|
||||||
ImGuiWindowFlags_NoDecoration|ImGuiWindowFlags_NoMove|
|
ImGuiWindowFlags_NoDecoration|ImGuiWindowFlags_NoMove|
|
||||||
|
@ -210,7 +210,7 @@ SaveTool::drawGeneralInfo() {
|
||||||
drawTooltip("This is the last mission selected in the mission selection screen, not the last mission played.",
|
drawTooltip("This is the last mission selected in the mission selection screen, not the last mission played.",
|
||||||
float(windowSize().x()) * 0.35f);
|
float(windowSize().x()) * 0.35f);
|
||||||
|
|
||||||
const Float footer_height_to_reserve = ImGui::GetStyle().ItemSpacing.y + ImGui::GetFrameHeightWithSpacing();
|
const float footer_height_to_reserve = ImGui::GetStyle().ItemSpacing.y + ImGui::GetFrameHeightWithSpacing();
|
||||||
ImGui::Dummy({ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y - footer_height_to_reserve});
|
ImGui::Dummy({ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y - footer_height_to_reserve});
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
@ -235,7 +235,7 @@ SaveTool::drawGeneralInfo() {
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|
||||||
static Int credits;
|
static std::int32_t credits;
|
||||||
if(drawUnsafeWidget([]{ return ImGui::Button("Edit credits"); })) {
|
if(drawUnsafeWidget([]{ return ImGui::Button("Edit credits"); })) {
|
||||||
credits = _currentProfile->credits();
|
credits = _currentProfile->credits();
|
||||||
ImGui::OpenPopup("int_edit");
|
ImGui::OpenPopup("int_edit");
|
||||||
|
@ -302,22 +302,22 @@ SaveTool::drawResearchInventory() {
|
||||||
|
|
||||||
drawMaterialRow("Verse steel", 1,
|
drawMaterialRow("Verse steel", 1,
|
||||||
[this]{ return _currentProfile->verseSteel(); },
|
[this]{ return _currentProfile->verseSteel(); },
|
||||||
[this](Int amount){ return _currentProfile->setVerseSteel(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setVerseSteel(amount); });
|
||||||
drawMaterialRow("Undinium", 2,
|
drawMaterialRow("Undinium", 2,
|
||||||
[this]{ return _currentProfile->undinium(); },
|
[this]{ return _currentProfile->undinium(); },
|
||||||
[this](Int amount){ return _currentProfile->setUndinium(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setUndinium(amount); });
|
||||||
drawMaterialRow("Necrium alloy", 3,
|
drawMaterialRow("Necrium alloy", 3,
|
||||||
[this]{ return _currentProfile->necriumAlloy(); },
|
[this]{ return _currentProfile->necriumAlloy(); },
|
||||||
[this](Int amount){ return _currentProfile->setNecriumAlloy(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setNecriumAlloy(amount); });
|
||||||
drawMaterialRow("Lunarite", 4,
|
drawMaterialRow("Lunarite", 4,
|
||||||
[this]{ return _currentProfile->lunarite(); },
|
[this]{ return _currentProfile->lunarite(); },
|
||||||
[this](Int amount){ return _currentProfile->setLunarite(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setLunarite(amount); });
|
||||||
drawMaterialRow("Asterite", 5,
|
drawMaterialRow("Asterite", 5,
|
||||||
[this]{ return _currentProfile->asterite(); },
|
[this]{ return _currentProfile->asterite(); },
|
||||||
[this](Int amount){ return _currentProfile->setAsterite(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setAsterite(amount); });
|
||||||
drawMaterialRow("Hallite fragma", 6,
|
drawMaterialRow("Hallite fragma", 6,
|
||||||
[this]{ return _currentProfile->halliteFragma(); },
|
[this]{ return _currentProfile->halliteFragma(); },
|
||||||
[this](Int amount){ return _currentProfile->setHalliteFragma(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setHalliteFragma(amount); });
|
||||||
drawUnavailableMaterialRow("Unnoctinium", 7);
|
drawUnavailableMaterialRow("Unnoctinium", 7);
|
||||||
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
|
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
|
||||||
|
@ -326,22 +326,22 @@ SaveTool::drawResearchInventory() {
|
||||||
|
|
||||||
drawMaterialRow("Ednil", 1,
|
drawMaterialRow("Ednil", 1,
|
||||||
[this]{ return _currentProfile->ednil(); },
|
[this]{ return _currentProfile->ednil(); },
|
||||||
[this](Int amount){ return _currentProfile->setEdnil(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setEdnil(amount); });
|
||||||
drawMaterialRow("Nuflalt", 2,
|
drawMaterialRow("Nuflalt", 2,
|
||||||
[this]{ return _currentProfile->nuflalt(); },
|
[this]{ return _currentProfile->nuflalt(); },
|
||||||
[this](Int amount){ return _currentProfile->setNuflalt(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setNuflalt(amount); });
|
||||||
drawMaterialRow("Aurelene", 3,
|
drawMaterialRow("Aurelene", 3,
|
||||||
[this]{ return _currentProfile->aurelene(); },
|
[this]{ return _currentProfile->aurelene(); },
|
||||||
[this](Int amount){ return _currentProfile->setAurelene(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setAurelene(amount); });
|
||||||
drawMaterialRow("Soldus", 4,
|
drawMaterialRow("Soldus", 4,
|
||||||
[this]{ return _currentProfile->soldus(); },
|
[this]{ return _currentProfile->soldus(); },
|
||||||
[this](Int amount){ return _currentProfile->setSoldus(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setSoldus(amount); });
|
||||||
drawMaterialRow("Synthesized N", 5,
|
drawMaterialRow("Synthesized N", 5,
|
||||||
[this]{ return _currentProfile->synthesisedN(); },
|
[this]{ return _currentProfile->synthesisedN(); },
|
||||||
[this](Int amount){ return _currentProfile->setSynthesisedN(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setSynthesisedN(amount); });
|
||||||
drawMaterialRow("Nanoc", 6,
|
drawMaterialRow("Nanoc", 6,
|
||||||
[this]{ return _currentProfile->nanoc(); },
|
[this]{ return _currentProfile->nanoc(); },
|
||||||
[this](Int amount){ return _currentProfile->setNanoc(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setNanoc(amount); });
|
||||||
drawUnavailableMaterialRow("Abyssillite", 7);
|
drawUnavailableMaterialRow("Abyssillite", 7);
|
||||||
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
|
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
|
||||||
|
@ -350,22 +350,22 @@ SaveTool::drawResearchInventory() {
|
||||||
|
|
||||||
drawMaterialRow("Alcarbonite", 1,
|
drawMaterialRow("Alcarbonite", 1,
|
||||||
[this]{ return _currentProfile->alcarbonite(); },
|
[this]{ return _currentProfile->alcarbonite(); },
|
||||||
[this](Int amount){ return _currentProfile->setAlcarbonite(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setAlcarbonite(amount); });
|
||||||
drawMaterialRow("Keripehene", 2,
|
drawMaterialRow("Keripehene", 2,
|
||||||
[this]{ return _currentProfile->keriphene(); },
|
[this]{ return _currentProfile->keriphene(); },
|
||||||
[this](Int amount){ return _currentProfile->setKeriphene(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setKeriphene(amount); });
|
||||||
drawMaterialRow("Nitinol-CM", 3,
|
drawMaterialRow("Nitinol-CM", 3,
|
||||||
[this]{ return _currentProfile->nitinolCM(); },
|
[this]{ return _currentProfile->nitinolCM(); },
|
||||||
[this](Int amount){ return _currentProfile->setNitinolCM(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setNitinolCM(amount); });
|
||||||
drawMaterialRow("Quarkium", 4,
|
drawMaterialRow("Quarkium", 4,
|
||||||
[this]{ return _currentProfile->quarkium(); },
|
[this]{ return _currentProfile->quarkium(); },
|
||||||
[this](Int amount){ return _currentProfile->setQuarkium(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setQuarkium(amount); });
|
||||||
drawMaterialRow("Alterene", 5,
|
drawMaterialRow("Alterene", 5,
|
||||||
[this]{ return _currentProfile->alterene(); },
|
[this]{ return _currentProfile->alterene(); },
|
||||||
[this](Int amount){ return _currentProfile->setAlterene(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setAlterene(amount); });
|
||||||
drawMaterialRow("Cosmium", 6,
|
drawMaterialRow("Cosmium", 6,
|
||||||
[this]{ return _currentProfile->cosmium(); },
|
[this]{ return _currentProfile->cosmium(); },
|
||||||
[this](Int amount){ return _currentProfile->setCosmium(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setCosmium(amount); });
|
||||||
drawUnavailableMaterialRow("Purified quarkium", 7);
|
drawUnavailableMaterialRow("Purified quarkium", 7);
|
||||||
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
|
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
|
||||||
|
@ -374,22 +374,22 @@ SaveTool::drawResearchInventory() {
|
||||||
|
|
||||||
drawMaterialRow("Mixed composition", 1,
|
drawMaterialRow("Mixed composition", 1,
|
||||||
[this]{ return _currentProfile->mixedComposition(); },
|
[this]{ return _currentProfile->mixedComposition(); },
|
||||||
[this](Int amount){ return _currentProfile->setMixedComposition(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setMixedComposition(amount); });
|
||||||
drawMaterialRow("Void residue", 2,
|
drawMaterialRow("Void residue", 2,
|
||||||
[this]{ return _currentProfile->voidResidue(); },
|
[this]{ return _currentProfile->voidResidue(); },
|
||||||
[this](Int amount){ return _currentProfile->setVoidResidue(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setVoidResidue(amount); });
|
||||||
drawMaterialRow("Muscular construction", 3,
|
drawMaterialRow("Muscular construction", 3,
|
||||||
[this]{ return _currentProfile->muscularConstruction(); },
|
[this]{ return _currentProfile->muscularConstruction(); },
|
||||||
[this](Int amount){ return _currentProfile->setMuscularConstruction(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setMuscularConstruction(amount); });
|
||||||
drawMaterialRow("Mineral exoskeletology", 4,
|
drawMaterialRow("Mineral exoskeletology", 4,
|
||||||
[this]{ return _currentProfile->mineralExoskeletology(); },
|
[this]{ return _currentProfile->mineralExoskeletology(); },
|
||||||
[this](Int amount){ return _currentProfile->setMineralExoskeletology(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setMineralExoskeletology(amount); });
|
||||||
drawMaterialRow("Carbonized skin", 5,
|
drawMaterialRow("Carbonized skin", 5,
|
||||||
[this]{ return _currentProfile->carbonisedSkin(); },
|
[this]{ return _currentProfile->carbonisedSkin(); },
|
||||||
[this](Int amount){ return _currentProfile->setCarbonisedSkin(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setCarbonisedSkin(amount); });
|
||||||
drawMaterialRow("Isolated void particle", 6,
|
drawMaterialRow("Isolated void particle", 6,
|
||||||
[this]{ return _currentProfile->isolatedVoidParticle(); },
|
[this]{ return _currentProfile->isolatedVoidParticle(); },
|
||||||
[this](Int amount){ return _currentProfile->setIsolatedVoidParticle(amount); });
|
[this](std::int32_t amount){ return _currentProfile->setIsolatedVoidParticle(amount); });
|
||||||
drawUnavailableMaterialRow("Weaponised physiology", 7);
|
drawUnavailableMaterialRow("Weaponised physiology", 7);
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
|
@ -398,9 +398,9 @@ SaveTool::drawResearchInventory() {
|
||||||
|
|
||||||
template<typename Getter, typename Setter>
|
template<typename Getter, typename Setter>
|
||||||
void
|
void
|
||||||
SaveTool::drawMaterialRow(Containers::StringView name, Int tier, Getter getter, Setter setter) {
|
SaveTool::drawMaterialRow(Containers::StringView name, std::int32_t tier, Getter getter, Setter setter) {
|
||||||
static_assert(std::is_same<decltype(getter()), Int>::value, "getter doesn't return an Int, and/or doesn't take zero arguments.");
|
static_assert(std::is_same<decltype(getter()), std::int32_t>::value, "getter doesn't return an std::int32_t, and/or doesn't take zero arguments.");
|
||||||
static_assert(std::is_same<decltype(setter(0)), bool>::value, "setter doesn't return a bool, and/or doesn't take a single Int as an argument.");
|
static_assert(std::is_same<decltype(setter(0)), bool>::value, "setter doesn't return a bool, and/or doesn't take a single std::int32_t as an argument.");
|
||||||
|
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableSetColumnIndex(0);
|
ImGui::TableSetColumnIndex(0);
|
||||||
|
@ -413,7 +413,7 @@ SaveTool::drawMaterialRow(Containers::StringView name, Int tier, Getter getter,
|
||||||
if(conf().cheatMode()) {
|
if(conf().cheatMode()) {
|
||||||
ImGui::TableSetColumnIndex(3);
|
ImGui::TableSetColumnIndex(3);
|
||||||
ImGui::PushID(name.data());
|
ImGui::PushID(name.data());
|
||||||
static Int var = 0;
|
static std::int32_t var = 0;
|
||||||
if(drawUnsafeWidget(ImGui::SmallButton, ICON_FA_EDIT)) {
|
if(drawUnsafeWidget(ImGui::SmallButton, ICON_FA_EDIT)) {
|
||||||
(var) = getter();
|
(var) = getter();
|
||||||
ImGui::OpenPopup("int_edit");
|
ImGui::OpenPopup("int_edit");
|
||||||
|
@ -433,7 +433,7 @@ SaveTool::drawMaterialRow(Containers::StringView name, Int tier, Getter getter,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SaveTool::drawUnavailableMaterialRow(Containers::StringView name, Int tier) {
|
SaveTool::drawUnavailableMaterialRow(Containers::StringView name, std::int32_t tier) {
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableSetColumnIndex(0);
|
ImGui::TableSetColumnIndex(0);
|
||||||
ImGui::Text("T%i", tier);
|
ImGui::Text("T%i", tier);
|
||||||
|
|
|
@ -38,7 +38,7 @@ SaveTool::drawMassViewer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SetNextWindowPos({0.0f, ImGui::GetItemRectSize().y}, ImGuiCond_Always);
|
ImGui::SetNextWindowPos({0.0f, ImGui::GetItemRectSize().y}, ImGuiCond_Always);
|
||||||
ImGui::SetNextWindowSize({Float(windowSize().x()), Float(windowSize().y()) - ImGui::GetItemRectSize().y},
|
ImGui::SetNextWindowSize({float(windowSize().x()), float(windowSize().y()) - ImGui::GetItemRectSize().y},
|
||||||
ImGuiCond_Always);
|
ImGuiCond_Always);
|
||||||
if(!ImGui::Begin("##MassViewer", nullptr,
|
if(!ImGui::Begin("##MassViewer", nullptr,
|
||||||
ImGuiWindowFlags_NoDecoration|ImGuiWindowFlags_NoMove|
|
ImGuiWindowFlags_NoDecoration|ImGuiWindowFlags_NoMove|
|
||||||
|
@ -86,8 +86,8 @@ SaveTool::drawMassViewer() {
|
||||||
_jointsDirty = false;
|
_jointsDirty = false;
|
||||||
_stylesDirty = false;
|
_stylesDirty = false;
|
||||||
_eyeFlareDirty = false;
|
_eyeFlareDirty = false;
|
||||||
_selectedArmourDecals = Containers::StaticArray<38, Int>{ValueInit};
|
_selectedArmourDecals = Containers::StaticArray<38, std::int32_t>{ValueInit};
|
||||||
_selectedArmourAccessories = Containers::StaticArray<38, Int>{ValueInit};
|
_selectedArmourAccessories = Containers::StaticArray<38, std::int32_t>{ValueInit};
|
||||||
_selectedBLPlacement = 0;
|
_selectedBLPlacement = 0;
|
||||||
_selectedWeaponPart = 0;
|
_selectedWeaponPart = 0;
|
||||||
_selectedWeaponDecal = 0;
|
_selectedWeaponDecal = 0;
|
||||||
|
@ -168,7 +168,7 @@ SaveTool::drawGlobalStyles() {
|
||||||
|
|
||||||
ImGui::TextWrapped("In-game values are multiplied by 100. For example, 0.500 here is equal to 50 in-game.");
|
ImGui::TextWrapped("In-game values are multiplied by 100. For example, 0.500 here is equal to 50 in-game.");
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _currentMass->globalStyles().size(); i++) {
|
for(std::uint32_t i = 0; i < _currentMass->globalStyles().size(); i++) {
|
||||||
ImGui::PushID(int(i));
|
ImGui::PushID(int(i));
|
||||||
DCSResult result;
|
DCSResult result;
|
||||||
result = drawCustomStyle(_currentMass->globalStyles()[i]);
|
result = drawCustomStyle(_currentMass->globalStyles()[i]);
|
||||||
|
@ -225,7 +225,7 @@ SaveTool::drawTuning() {
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::TextUnformatted("Gears");
|
ImGui::TextUnformatted("Gears");
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _currentMass->gears().size(); i++) {
|
for(std::uint32_t i = 0; i < _currentMass->gears().size(); i++) {
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("%i", _currentMass->gears()[i]);
|
ImGui::Text("%i", _currentMass->gears()[i]);
|
||||||
|
@ -251,7 +251,7 @@ SaveTool::drawTuning() {
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::TextUnformatted("Modules");
|
ImGui::TextUnformatted("Modules");
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _currentMass->modules().size(); i++) {
|
for(std::uint32_t i = 0; i < _currentMass->modules().size(); i++) {
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("%i", _currentMass->modules()[i]);
|
ImGui::Text("%i", _currentMass->modules()[i]);
|
||||||
|
@ -277,7 +277,7 @@ SaveTool::drawTuning() {
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::TextUnformatted("Techs");
|
ImGui::TextUnformatted("Techs");
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _currentMass->techs().size(); i++) {
|
for(std::uint32_t i = 0; i < _currentMass->techs().size(); i++) {
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("%i", _currentMass->techs()[i]);
|
ImGui::Text("%i", _currentMass->techs()[i]);
|
||||||
|
@ -515,7 +515,7 @@ SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<Custom
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|
||||||
static Int tab = 0;
|
static std::int32_t tab = 0;
|
||||||
static Containers::Optional<AccessorySize> size = Containers::NullOpt;
|
static Containers::Optional<AccessorySize> size = Containers::NullOpt;
|
||||||
if(ImGui::SmallButton("Change")) {
|
if(ImGui::SmallButton("Change")) {
|
||||||
ImGui::OpenPopup("##AccessoryPopup");
|
ImGui::OpenPopup("##AccessoryPopup");
|
||||||
|
@ -539,7 +539,7 @@ SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<Custom
|
||||||
"L",
|
"L",
|
||||||
"XL"
|
"XL"
|
||||||
};
|
};
|
||||||
static const Float selectable_width = 90.0f;
|
static const float selectable_width = 90.0f;
|
||||||
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, {0.5f, 0.0f});
|
ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, {0.5f, 0.0f});
|
||||||
if(ImGui::Selectable("Primitives", tab == 0, ImGuiSelectableFlags_DontClosePopups, {selectable_width, 0.0f})) {
|
if(ImGui::Selectable("Primitives", tab == 0, ImGuiSelectableFlags_DontClosePopups, {selectable_width, 0.0f})) {
|
||||||
|
@ -740,7 +740,7 @@ SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<Custom
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::StringView
|
Containers::StringView
|
||||||
SaveTool::getStyleName(Int id, Containers::ArrayView<CustomStyle> view) {
|
SaveTool::getStyleName(std::int32_t id, Containers::ArrayView<CustomStyle> view) {
|
||||||
if(id >= 0 && id <= 15) {
|
if(id >= 0 && id <= 15) {
|
||||||
return view[id].name;
|
return view[id].name;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ SaveTool::drawArmour() {
|
||||||
#undef c
|
#undef c
|
||||||
};
|
};
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _currentMass->armourParts().size(); i++) {
|
for(std::uint32_t i = 0; i < _currentMass->armourParts().size(); i++) {
|
||||||
ImGui::PushID(int(i));
|
ImGui::PushID(int(i));
|
||||||
|
|
||||||
auto& part = _currentMass->armourParts()[i];
|
auto& part = _currentMass->armourParts()[i];
|
||||||
|
@ -53,10 +53,10 @@ SaveTool::drawArmour() {
|
||||||
std::memset(header, '\0', 129);
|
std::memset(header, '\0', 129);
|
||||||
|
|
||||||
if(armour_sets.find(part.id) != armour_sets.cend()) {
|
if(armour_sets.find(part.id) != armour_sets.cend()) {
|
||||||
std::snprintf(header, 128, "%s: %s###%u", slot_labels[UnsignedInt(part.slot)].data(), armour_sets.at(part.id).name.data(), UnsignedInt(part.slot));
|
std::snprintf(header, 128, "%s: %s###%u", slot_labels[std::uint32_t(part.slot)].data(), armour_sets.at(part.id).name.data(), std::uint32_t(part.slot));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
std::snprintf(header, 128, "%s: %i###%u", slot_labels[UnsignedInt(part.slot)].data(), part.id, UnsignedInt(part.slot));
|
std::snprintf(header, 128, "%s: %i###%u", slot_labels[std::uint32_t(part.slot)].data(), part.id, std::uint32_t(part.slot));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ImGui::CollapsingHeader(header)) {
|
if(ImGui::CollapsingHeader(header)) {
|
||||||
|
@ -64,7 +64,7 @@ SaveTool::drawArmour() {
|
||||||
|
|
||||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x * 0.491f);
|
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x * 0.491f);
|
||||||
if(ImGui::BeginListBox("##ChangePart")) {
|
if(ImGui::BeginListBox("##ChangePart")) {
|
||||||
if(std::strncmp("Neck", slot_labels[UnsignedInt(part.slot)].data(), 4) != 0) {
|
if(std::strncmp("Neck", slot_labels[std::uint32_t(part.slot)].data(), 4) != 0) {
|
||||||
for(auto& set : armour_sets) {
|
for(auto& set : armour_sets) {
|
||||||
if(ImGui::Selectable(set.second.name.data(), set.first == part.id, ImGuiSelectableFlags_SpanAvailWidth)) {
|
if(ImGui::Selectable(set.second.name.data(), set.first == part.id, ImGuiSelectableFlags_SpanAvailWidth)) {
|
||||||
part.id = set.first;
|
part.id = set.first;
|
||||||
|
@ -97,7 +97,7 @@ SaveTool::drawArmour() {
|
||||||
|
|
||||||
ImGui::TextUnformatted("Styles:");
|
ImGui::TextUnformatted("Styles:");
|
||||||
|
|
||||||
for(Int j = 0; j < 4; j++) {
|
for(std::int32_t j = 0; j < 4; j++) {
|
||||||
drawAlignedText("Slot %d:", j + 1);
|
drawAlignedText("Slot %d:", j + 1);
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
@ -125,7 +125,7 @@ SaveTool::drawArmour() {
|
||||||
ImGui::PushID("Decal");
|
ImGui::PushID("Decal");
|
||||||
|
|
||||||
drawAlignedText("Showing/editing decal");
|
drawAlignedText("Showing/editing decal");
|
||||||
for(UnsignedInt j = 0; j < part.decals.size(); j++) {
|
for(std::uint32_t j = 0; j < part.decals.size(); j++) {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::RadioButton(std::to_string(j + 1).c_str(), &_selectedArmourDecals[i], int(j));
|
ImGui::RadioButton(std::to_string(j + 1).c_str(), &_selectedArmourDecals[i], int(j));
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ SaveTool::drawArmour() {
|
||||||
ImGui::PushID("Accessory");
|
ImGui::PushID("Accessory");
|
||||||
|
|
||||||
drawAlignedText("Showing/editing accessory");
|
drawAlignedText("Showing/editing accessory");
|
||||||
for(UnsignedInt j = 0; j < part.accessories.size(); j++) {
|
for(std::uint32_t j = 0; j < part.accessories.size(); j++) {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::RadioButton(std::string{char(65 + j)}.c_str(), &_selectedArmourAccessories[i], int(j));
|
ImGui::RadioButton(std::string{char(65 + j)}.c_str(), &_selectedArmourAccessories[i], int(j));
|
||||||
}
|
}
|
||||||
|
@ -200,9 +200,9 @@ SaveTool::drawArmour() {
|
||||||
|
|
||||||
drawAlignedText("Socket:");
|
drawAlignedText("Socket:");
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if(ImGui::BeginCombo("##Socket", socket_labels[UnsignedInt(placement.socket)].data())) {
|
if(ImGui::BeginCombo("##Socket", socket_labels[std::uint32_t(placement.socket)].data())) {
|
||||||
for(UnsignedInt i = 0; i < (sizeof(socket_labels) / sizeof(socket_labels[0])); i++) {
|
for(std::uint32_t i = 0; i < (sizeof(socket_labels) / sizeof(socket_labels[0])); i++) {
|
||||||
if(ImGui::Selectable(socket_labels[i].data(), i == UnsignedInt(placement.socket), ImGuiSelectableFlags_SpanAvailWidth)) {
|
if(ImGui::Selectable(socket_labels[i].data(), i == std::uint32_t(placement.socket), ImGuiSelectableFlags_SpanAvailWidth)) {
|
||||||
placement.socket = static_cast<BulletLauncherSocket>(i);
|
placement.socket = static_cast<BulletLauncherSocket>(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,7 +302,7 @@ SaveTool::drawCustomArmourStyles() {
|
||||||
|
|
||||||
ImGui::TextWrapped("In-game values are multiplied by 100. For example, 0.500 here is equal to 50 in-game.");
|
ImGui::TextWrapped("In-game values are multiplied by 100. For example, 0.500 here is equal to 50 in-game.");
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _currentMass->armourCustomStyles().size(); i++) {
|
for(std::uint32_t i = 0; i < _currentMass->armourCustomStyles().size(); i++) {
|
||||||
ImGui::PushID(int(i));
|
ImGui::PushID(int(i));
|
||||||
DCSResult result;
|
DCSResult result;
|
||||||
result = drawCustomStyle(_currentMass->armourCustomStyles()[i]);
|
result = drawCustomStyle(_currentMass->armourCustomStyles()[i]);
|
||||||
|
|
|
@ -202,7 +202,7 @@ SaveTool::drawFrameStyles() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Int i = 0; i < 4; i++) {
|
for(std::int32_t i = 0; i < 4; i++) {
|
||||||
drawAlignedText("Slot %d:", i + 1);
|
drawAlignedText("Slot %d:", i + 1);
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
@ -294,7 +294,7 @@ SaveTool::drawCustomFrameStyles() {
|
||||||
|
|
||||||
ImGui::TextWrapped("In-game values are multiplied by 100. For example, 0.500 here is equal to 50 in-game.");
|
ImGui::TextWrapped("In-game values are multiplied by 100. For example, 0.500 here is equal to 50 in-game.");
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _currentMass->frameCustomStyles().size(); i++) {
|
for(std::uint32_t i = 0; i < _currentMass->frameCustomStyles().size(); i++) {
|
||||||
ImGui::PushID(int(i));
|
ImGui::PushID(int(i));
|
||||||
DCSResult result;
|
DCSResult result;
|
||||||
result = drawCustomStyle(_currentMass->frameCustomStyles()[i]);
|
result = drawCustomStyle(_currentMass->frameCustomStyles()[i]);
|
||||||
|
|
|
@ -28,7 +28,7 @@ SaveTool::drawWeapons() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Float footer_height_to_reserve = ImGui::GetStyle().ItemSpacing.y + ImGui::GetFrameHeightWithSpacing();
|
const float footer_height_to_reserve = ImGui::GetStyle().ItemSpacing.y + ImGui::GetFrameHeightWithSpacing();
|
||||||
|
|
||||||
ImGui::BeginGroup();
|
ImGui::BeginGroup();
|
||||||
|
|
||||||
|
@ -265,7 +265,7 @@ SaveTool::drawWeaponCategory(Containers::StringView name, Containers::ArrayView<
|
||||||
|
|
||||||
ImGui::PushID(payload_type.data());
|
ImGui::PushID(payload_type.data());
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < weapons_view.size(); i++) {
|
for(std::uint32_t i = 0; i < weapons_view.size(); i++) {
|
||||||
auto& weapon = weapons_view[i];
|
auto& weapon = weapons_view[i];
|
||||||
|
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
|
@ -277,7 +277,7 @@ SaveTool::drawWeaponCategory(Containers::StringView name, Containers::ArrayView<
|
||||||
_currentWeapon = &weapon;
|
_currentWeapon = &weapon;
|
||||||
}
|
}
|
||||||
if(ImGui::BeginDragDropSource()) {
|
if(ImGui::BeginDragDropSource()) {
|
||||||
ImGui::SetDragDropPayload(payload_type.data(), &i, sizeof(UnsignedInt));
|
ImGui::SetDragDropPayload(payload_type.data(), &i, sizeof(std::uint32_t));
|
||||||
if(ImGui::GetIO().KeyCtrl) {
|
if(ImGui::GetIO().KeyCtrl) {
|
||||||
ImGui::Text("%s %i - %s (copy)", payload_tooltip.data(), i + 1, weapon.name.data());
|
ImGui::Text("%s %i - %s (copy)", payload_tooltip.data(), i + 1, weapon.name.data());
|
||||||
}
|
}
|
||||||
|
@ -331,7 +331,7 @@ SaveTool::drawWeaponEditor(Weapon& weapon) {
|
||||||
#undef c
|
#undef c
|
||||||
};
|
};
|
||||||
|
|
||||||
drawAlignedText("%s: %s", labels[UnsignedInt(weapon.type)].data(), weapon.name.data());
|
drawAlignedText("%s: %s", labels[std::uint32_t(weapon.type)].data(), weapon.name.data());
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|
||||||
|
@ -428,8 +428,8 @@ SaveTool::drawWeaponEditor(Weapon& weapon) {
|
||||||
|
|
||||||
if(ImGui::CollapsingHeader("Weapon parts")) {
|
if(ImGui::CollapsingHeader("Weapon parts")) {
|
||||||
drawAlignedText("Viewing/editing part:");
|
drawAlignedText("Viewing/editing part:");
|
||||||
for(Int i = 0; UnsignedLong(i) < weapon.parts.size(); i++) {
|
for(std::int32_t i = 0; std::size_t(i) < weapon.parts.size(); i++) {
|
||||||
if(UnsignedLong(_selectedWeaponPart) >= weapon.parts.size()) {
|
if(std::size_t(_selectedWeaponPart) >= weapon.parts.size()) {
|
||||||
_selectedWeaponPart = 0;
|
_selectedWeaponPart = 0;
|
||||||
}
|
}
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
@ -438,7 +438,7 @@ SaveTool::drawWeaponEditor(Weapon& weapon) {
|
||||||
|
|
||||||
auto& part = weapon.parts[_selectedWeaponPart];
|
auto& part = weapon.parts[_selectedWeaponPart];
|
||||||
|
|
||||||
const auto* map = [this, &weapon]()-> const std::map<Int, Containers::StringView>* {
|
const auto* map = [this, &weapon]()-> const std::map<std::int32_t, Containers::StringView>* {
|
||||||
switch(weapon.type) {
|
switch(weapon.type) {
|
||||||
case WeaponType::Melee:
|
case WeaponType::Melee:
|
||||||
return _selectedWeaponPart == 0 ? &melee_grips : &melee_assaulters;
|
return _selectedWeaponPart == 0 ? &melee_grips : &melee_assaulters;
|
||||||
|
@ -511,7 +511,7 @@ SaveTool::drawWeaponEditor(Weapon& weapon) {
|
||||||
if(ImGui::BeginChild("##PartDetails", {0.0f, 0.0f}, true)) {
|
if(ImGui::BeginChild("##PartDetails", {0.0f, 0.0f}, true)) {
|
||||||
ImGui::TextUnformatted("Styles:");
|
ImGui::TextUnformatted("Styles:");
|
||||||
|
|
||||||
for(Int i = 0; i < 4; i++) {
|
for(std::int32_t i = 0; i < 4; i++) {
|
||||||
drawAlignedText("Slot %d:", i + 1);
|
drawAlignedText("Slot %d:", i + 1);
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
@ -537,7 +537,7 @@ SaveTool::drawWeaponEditor(Weapon& weapon) {
|
||||||
ImGui::PushID("Decal");
|
ImGui::PushID("Decal");
|
||||||
|
|
||||||
drawAlignedText("Showing/editing decal");
|
drawAlignedText("Showing/editing decal");
|
||||||
for(UnsignedLong i = 0; i < part.decals.size(); i++) {
|
for(std::size_t i = 0; i < part.decals.size(); i++) {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::RadioButton(std::to_string(i + 1).c_str(), &_selectedWeaponDecal, int(i));
|
ImGui::RadioButton(std::to_string(i + 1).c_str(), &_selectedWeaponDecal, int(i));
|
||||||
}
|
}
|
||||||
|
@ -552,7 +552,7 @@ SaveTool::drawWeaponEditor(Weapon& weapon) {
|
||||||
ImGui::PushID("Accessory");
|
ImGui::PushID("Accessory");
|
||||||
|
|
||||||
drawAlignedText("Showing/editing accessory");
|
drawAlignedText("Showing/editing accessory");
|
||||||
for(UnsignedLong i = 0; i < part.accessories.size(); i++) {
|
for(std::size_t i = 0; i < part.accessories.size(); i++) {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::RadioButton(std::string{char(65 + i)}.c_str(), &_selectedWeaponAccessory, int(i));
|
ImGui::RadioButton(std::string{char(65 + i)}.c_str(), &_selectedWeaponAccessory, int(i));
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,10 +73,10 @@ SaveTool::updateCheckEvent(SDL_Event& event) {
|
||||||
prerelease = true;
|
prerelease = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Int fullVersion;
|
std::int32_t fullVersion;
|
||||||
Int major = 0;
|
std::int32_t major = 0;
|
||||||
Int minor = 0;
|
std::int32_t minor = 0;
|
||||||
Int patch = 0;
|
std::int32_t patch = 0;
|
||||||
bool prerelease = false;
|
bool prerelease = false;
|
||||||
|
|
||||||
bool operator==(const Version& other) const {
|
bool operator==(const Version& other) const {
|
||||||
|
@ -161,7 +161,7 @@ SaveTool::checkForUpdates() {
|
||||||
if(code == CURLE_OK) {
|
if(code == CURLE_OK) {
|
||||||
long status = 0;
|
long status = 0;
|
||||||
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &status);
|
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &status);
|
||||||
event.user.code = Int(status);
|
event.user.code = std::int32_t(status);
|
||||||
event.user.data1 = response_body.release();
|
event.user.data1 = response_body.release();
|
||||||
}
|
}
|
||||||
else if(code == CURLE_OPERATION_TIMEDOUT) {
|
else if(code == CURLE_OPERATION_TIMEDOUT) {
|
||||||
|
|
|
@ -113,7 +113,7 @@ SaveTool::drawMainMenu() {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::AlignTextToFramePadding();
|
ImGui::AlignTextToFramePadding();
|
||||||
drawHelpMarker("This gives access to save edition features that can be considered cheats.",
|
drawHelpMarker("This gives access to save edition features that can be considered cheats.",
|
||||||
Float(windowSize().x()) * 0.4f);
|
float(windowSize().x()) * 0.4f);
|
||||||
|
|
||||||
if(drawCheckbox("Advanced mode", conf().advancedMode())) {
|
if(drawCheckbox("Advanced mode", conf().advancedMode())) {
|
||||||
conf().setAdvancedMode(!conf().advancedMode());
|
conf().setAdvancedMode(!conf().advancedMode());
|
||||||
|
@ -121,7 +121,7 @@ SaveTool::drawMainMenu() {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::AlignTextToFramePadding();
|
ImGui::AlignTextToFramePadding();
|
||||||
drawHelpMarker("This gives access to editing values that have unknown purposes or are undocumented.",
|
drawHelpMarker("This gives access to editing values that have unknown purposes or are undocumented.",
|
||||||
Float(windowSize().x()) * 0.4f);
|
float(windowSize().x()) * 0.4f);
|
||||||
|
|
||||||
if(drawCheckbox("Check for updates on startup", conf().checkUpdatesOnStartup())) {
|
if(drawCheckbox("Check for updates on startup", conf().checkUpdatesOnStartup())) {
|
||||||
conf().setCheckUpdatesOnStartup(!conf().checkUpdatesOnStartup());
|
conf().setCheckUpdatesOnStartup(!conf().checkUpdatesOnStartup());
|
||||||
|
|
|
@ -26,15 +26,15 @@
|
||||||
|
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
|
|
||||||
constexpr UnsignedInt success_colour = 0xff67d23bu;
|
constexpr std::uint32_t success_colour = 0xff67d23bu;
|
||||||
constexpr UnsignedInt info_colour = 0xffcc832fu;
|
constexpr std::uint32_t info_colour = 0xffcc832fu;
|
||||||
constexpr UnsignedInt warning_colour = 0xff2fcfc7u;
|
constexpr std::uint32_t warning_colour = 0xff2fcfc7u;
|
||||||
constexpr UnsignedInt error_colour = 0xff3134cdu;
|
constexpr std::uint32_t error_colour = 0xff3134cdu;
|
||||||
|
|
||||||
constexpr UnsignedInt fade_time = 150;
|
constexpr std::uint32_t fade_time = 150;
|
||||||
constexpr Float base_opacity = 1.0f;
|
constexpr float base_opacity = 1.0f;
|
||||||
constexpr Vector2 padding{20.0f, 20.0f};
|
constexpr Vector2 padding{20.0f, 20.0f};
|
||||||
constexpr Float toast_spacing = 10.0f;
|
constexpr float toast_spacing = 10.0f;
|
||||||
|
|
||||||
Toast::Toast(Type type, Containers::StringView message, std::chrono::milliseconds timeout):
|
Toast::Toast(Type type, Containers::StringView message, std::chrono::milliseconds timeout):
|
||||||
_type{type},
|
_type{type},
|
||||||
|
@ -42,7 +42,7 @@ Toast::Toast(Type type, Containers::StringView message, std::chrono::millisecond
|
||||||
_timeout{timeout},
|
_timeout{timeout},
|
||||||
_creationTime{std::chrono::steady_clock::now()}
|
_creationTime{std::chrono::steady_clock::now()}
|
||||||
{
|
{
|
||||||
_phaseTrack = Animation::Track<UnsignedInt, Phase>{{
|
_phaseTrack = Animation::Track<std::uint32_t, Phase>{{
|
||||||
{0, Phase::FadeIn},
|
{0, Phase::FadeIn},
|
||||||
{fade_time, Phase::Wait},
|
{fade_time, Phase::Wait},
|
||||||
{fade_time + timeout.count(), Phase::FadeOut},
|
{fade_time + timeout.count(), Phase::FadeOut},
|
||||||
|
@ -80,16 +80,16 @@ Toast::phase() {
|
||||||
return _phaseTrack.at(elapsedTime().count());
|
return _phaseTrack.at(elapsedTime().count());
|
||||||
}
|
}
|
||||||
|
|
||||||
Float
|
float
|
||||||
Toast::opacity() {
|
Toast::opacity() {
|
||||||
Phase phase = this->phase();
|
Phase phase = this->phase();
|
||||||
Long elapsed_time = elapsedTime().count();
|
std::int64_t elapsed_time = elapsedTime().count();
|
||||||
|
|
||||||
if(phase == Phase::FadeIn) {
|
if(phase == Phase::FadeIn) {
|
||||||
return Float(elapsed_time) / Float(fade_time);
|
return float(elapsed_time) / float(fade_time);
|
||||||
}
|
}
|
||||||
else if(phase == Phase::FadeOut) {
|
else if(phase == Phase::FadeOut) {
|
||||||
return 1.0f - ((Float(elapsed_time) - Float(fade_time) - Float(_timeout.count())) / Float(fade_time));
|
return 1.0f - ((float(elapsed_time) - float(fade_time) - float(_timeout.count())) / float(fade_time));
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1.0f;
|
return 1.0f;
|
||||||
|
@ -107,9 +107,9 @@ ToastQueue::addToast(Toast::Type type, Containers::StringView message, std::chro
|
||||||
|
|
||||||
void
|
void
|
||||||
ToastQueue::draw(Vector2i viewport_size) {
|
ToastQueue::draw(Vector2i viewport_size) {
|
||||||
Float height = 0.0f;
|
float height = 0.0f;
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < _toasts.size(); i++) {
|
for(std::uint32_t i = 0; i < _toasts.size(); i++) {
|
||||||
Toast* current = &_toasts[i];
|
Toast* current = &_toasts[i];
|
||||||
|
|
||||||
if(current->phase() == Toast::Phase::TimedOut) {
|
if(current->phase() == Toast::Phase::TimedOut) {
|
||||||
|
@ -119,11 +119,12 @@ ToastQueue::draw(Vector2i viewport_size) {
|
||||||
|
|
||||||
Containers::String win_id = Utility::format("##Toast{}", i);
|
Containers::String win_id = Utility::format("##Toast{}", i);
|
||||||
|
|
||||||
Float opacity = base_opacity * current->opacity();
|
float opacity = base_opacity * current->opacity();
|
||||||
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, opacity);
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, opacity);
|
||||||
|
|
||||||
ImGui::SetNextWindowPos({viewport_size.x() - padding.x(), viewport_size.y() - padding.y() - height}, ImGuiCond_Always, {1.0f, 1.0f});
|
ImGui::SetNextWindowPos({float(viewport_size.x()) - padding.x(), float(viewport_size.y()) - padding.y() - height},
|
||||||
|
ImGuiCond_Always, {1.0f, 1.0f});
|
||||||
if(ImGui::Begin(win_id.data(), nullptr,
|
if(ImGui::Begin(win_id.data(), nullptr,
|
||||||
ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoDecoration|
|
ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoDecoration|
|
||||||
ImGuiWindowFlags_NoInputs|ImGuiWindowFlags_NoNav|ImGuiWindowFlags_NoFocusOnAppearing))
|
ImGuiWindowFlags_NoInputs|ImGuiWindowFlags_NoNav|ImGuiWindowFlags_NoFocusOnAppearing))
|
||||||
|
@ -168,6 +169,6 @@ ToastQueue::draw(Vector2i viewport_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToastQueue::removeToast(Long index) {
|
ToastQueue::removeToast(std::int64_t index) {
|
||||||
_toasts.erase(_toasts.begin() + index);
|
_toasts.erase(_toasts.begin() + index);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ using namespace Magnum;
|
||||||
|
|
||||||
class Toast {
|
class Toast {
|
||||||
public:
|
public:
|
||||||
enum class Type : UnsignedByte {
|
enum class Type: std::uint8_t {
|
||||||
Default, Success, Info, Warning, Error
|
Default, Success, Info, Warning, Error
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class Phase : UnsignedByte {
|
enum class Phase: std::uint8_t {
|
||||||
FadeIn, Wait, FadeOut, TimedOut
|
FadeIn, Wait, FadeOut, TimedOut
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -58,14 +58,14 @@ class Toast {
|
||||||
|
|
||||||
Phase phase();
|
Phase phase();
|
||||||
|
|
||||||
Float opacity();
|
float opacity();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Type _type{Type::Default};
|
Type _type{Type::Default};
|
||||||
Containers::String _message;
|
Containers::String _message;
|
||||||
std::chrono::milliseconds _timeout;
|
std::chrono::milliseconds _timeout;
|
||||||
std::chrono::steady_clock::time_point _creationTime;
|
std::chrono::steady_clock::time_point _creationTime;
|
||||||
Animation::Track<UnsignedInt, Phase> _phaseTrack;
|
Animation::Track<std::uint32_t, Phase> _phaseTrack;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ToastQueue {
|
class ToastQueue {
|
||||||
|
@ -78,7 +78,7 @@ class ToastQueue {
|
||||||
void draw(Vector2i viewport_size);
|
void draw(Vector2i viewport_size);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void removeToast(Long index);
|
void removeToast(std::int64_t index);
|
||||||
|
|
||||||
std::vector<Toast> _toasts;
|
std::vector<Toast> _toasts;
|
||||||
};
|
};
|
||||||
|
|
|
@ -45,13 +45,13 @@ BinaryReader::eof() {
|
||||||
return std::feof(_file) != 0;
|
return std::feof(_file) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Long
|
std::int64_t
|
||||||
BinaryReader::position() {
|
BinaryReader::position() {
|
||||||
return _ftelli64(_file);
|
return _ftelli64(_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::seek(Long position) {
|
BinaryReader::seek(std::int64_t position) {
|
||||||
return _fseeki64(_file, position, SEEK_SET) == 0;
|
return _fseeki64(_file, position, SEEK_SET) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,53 +67,53 @@ BinaryReader::readChar(char& value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readByte(Byte& value) {
|
BinaryReader::readInt8(std::int8_t& value) {
|
||||||
return std::fread(&value, sizeof(Byte), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::int8_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readUnsignedByte(UnsignedByte& value) {
|
BinaryReader::readUint8(std::uint8_t& value) {
|
||||||
return std::fread(&value, sizeof(UnsignedByte), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::uint8_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readShort(Short& value) {
|
BinaryReader::readInt16(std::int16_t& value) {
|
||||||
return std::fread(&value, sizeof(Short), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::int16_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readUnsignedShort(UnsignedShort& value) {
|
BinaryReader::readUint16(std::uint16_t& value) {
|
||||||
return std::fread(&value, sizeof(UnsignedShort), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::uint16_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readInt(Int& value) {
|
BinaryReader::readInt32(std::int32_t& value) {
|
||||||
return std::fread(&value, sizeof(Int), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::int32_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readUnsignedInt(UnsignedInt& value) {
|
BinaryReader::readUint32(std::uint32_t& value) {
|
||||||
return std::fread(&value, sizeof(UnsignedInt), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::uint32_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readLong(Long& value) {
|
BinaryReader::readInt64(std::int64_t& value) {
|
||||||
return std::fread(&value, sizeof(Long), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::int64_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readUnsignedLong(UnsignedLong& value) {
|
BinaryReader::readUint64(std::uint64_t& value) {
|
||||||
return std::fread(&value, sizeof(UnsignedLong), 1, _file) == 1;
|
return std::fread(&value, sizeof(std::uint64_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readFloat(Float& value) {
|
BinaryReader::readFloat(float& value) {
|
||||||
return std::fread(&value, sizeof(Float), 1, _file) == 1;
|
return std::fread(&value, sizeof(float), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readDouble(Double& value) {
|
BinaryReader::readDouble(double& value) {
|
||||||
return std::fread(&value, sizeof(Double), 1, _file) == 1;
|
return std::fread(&value, sizeof(double), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -127,8 +127,8 @@ BinaryReader::readArray(Containers::Array<char>& array, std::size_t count) {
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryReader::readUEString(Containers::String& str) {
|
BinaryReader::readUEString(Containers::String& str) {
|
||||||
UnsignedInt length = 0;
|
std::uint32_t length = 0;
|
||||||
if(!readUnsignedInt(length) || length == 0) {
|
if(!readUint32(length) || length == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,9 +137,9 @@ BinaryReader::readUEString(Containers::String& str) {
|
||||||
return std::fread(str.data(), sizeof(char), length, _file) == length;
|
return std::fread(str.data(), sizeof(char), length, _file) == length;
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
std::int32_t
|
||||||
BinaryReader::peekChar() {
|
BinaryReader::peekChar() {
|
||||||
Int c;
|
std::int32_t c;
|
||||||
c = std::fgetc(_file);
|
c = std::fgetc(_file);
|
||||||
std::ungetc(c, _file);
|
std::ungetc(c, _file);
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -16,16 +16,14 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
#include <Corrade/Containers/Containers.h>
|
#include <Corrade/Containers/Containers.h>
|
||||||
#include <Corrade/Containers/StaticArray.h>
|
#include <Corrade/Containers/StaticArray.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
class BinaryReader {
|
class BinaryReader {
|
||||||
public:
|
public:
|
||||||
|
@ -34,23 +32,23 @@ class BinaryReader {
|
||||||
|
|
||||||
bool open();
|
bool open();
|
||||||
bool eof();
|
bool eof();
|
||||||
Long position();
|
std::int64_t position();
|
||||||
|
|
||||||
bool seek(Long position);
|
bool seek(std::int64_t position);
|
||||||
|
|
||||||
void closeFile();
|
void closeFile();
|
||||||
|
|
||||||
bool readChar(char& value);
|
bool readChar(char& value);
|
||||||
bool readByte(Byte& value);
|
bool readInt8(std::int8_t& value);
|
||||||
bool readUnsignedByte(UnsignedByte& value);
|
bool readUint8(std::uint8_t& value);
|
||||||
bool readShort(Short& value);
|
bool readInt16(std::int16_t& value);
|
||||||
bool readUnsignedShort(UnsignedShort& value);
|
bool readUint16(std::uint16_t& value);
|
||||||
bool readInt(Int& value);
|
bool readInt32(std::int32_t& value);
|
||||||
bool readUnsignedInt(UnsignedInt& value);
|
bool readUint32(std::uint32_t& value);
|
||||||
bool readLong(Long& value);
|
bool readInt64(std::int64_t& value);
|
||||||
bool readUnsignedLong(UnsignedLong& value);
|
bool readUint64(std::uint64_t& value);
|
||||||
bool readFloat(Float& value);
|
bool readFloat(float& value);
|
||||||
bool readDouble(Double& value);
|
bool readDouble(double& value);
|
||||||
bool readArray(Containers::Array<char>& array, std::size_t count);
|
bool readArray(Containers::Array<char>& array, std::size_t count);
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -65,7 +63,7 @@ class BinaryReader {
|
||||||
|
|
||||||
bool readUEString(Containers::String& str);
|
bool readUEString(Containers::String& str);
|
||||||
|
|
||||||
Int peekChar();
|
std::int32_t peekChar();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::FILE* _file = nullptr;
|
std::FILE* _file = nullptr;
|
||||||
|
|
|
@ -45,7 +45,7 @@ BinaryWriter::closeFile() {
|
||||||
_file = nullptr;
|
_file = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Long
|
std::int64_t
|
||||||
BinaryWriter::position() {
|
BinaryWriter::position() {
|
||||||
return _ftelli64(_file);
|
return _ftelli64(_file);
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ BinaryWriter::array() const {
|
||||||
return _data;
|
return _data;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedLong
|
std::size_t
|
||||||
BinaryWriter::arrayPosition() const {
|
BinaryWriter::arrayPosition() const {
|
||||||
return _index;
|
return _index;
|
||||||
}
|
}
|
||||||
|
@ -75,53 +75,53 @@ BinaryWriter::writeChar(char value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeByte(Byte value) {
|
BinaryWriter::writeInt8(std::int8_t value) {
|
||||||
return std::fwrite(&value, sizeof(Byte), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::int8_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeUnsignedByte(UnsignedByte value) {
|
BinaryWriter::writeUint8(std::uint8_t value) {
|
||||||
return std::fwrite(&value, sizeof(UnsignedByte), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::uint8_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeShort(Short value) {
|
BinaryWriter::writeInt16(std::int16_t value) {
|
||||||
return std::fwrite(&value, sizeof(Short), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::int16_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeUnsignedShort(UnsignedShort value) {
|
BinaryWriter::writeUint16(std::uint16_t value) {
|
||||||
return std::fwrite(&value, sizeof(UnsignedShort), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::uint16_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeInt(Int value) {
|
BinaryWriter::writeInt32(std::int32_t value) {
|
||||||
return std::fwrite(&value, sizeof(Int), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::int32_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeUnsignedInt(UnsignedInt value) {
|
BinaryWriter::writeUint32(std::uint32_t value) {
|
||||||
return std::fwrite(&value, sizeof(UnsignedInt), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::uint32_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeLong(Long value) {
|
BinaryWriter::writeInt64(std::int64_t value) {
|
||||||
return std::fwrite(&value, sizeof(Long), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::int64_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeUnsignedLong(UnsignedLong value) {
|
BinaryWriter::writeUint64(std::uint64_t value) {
|
||||||
return std::fwrite(&value, sizeof(UnsignedLong), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(std::uint64_t), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeFloat(Float value) {
|
BinaryWriter::writeFloat(float value) {
|
||||||
return std::fwrite(&value, sizeof(Float), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(float), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BinaryWriter::writeDouble(Double value) {
|
BinaryWriter::writeDouble(double value) {
|
||||||
return std::fwrite(&value, sizeof(Double), 1, _file) == 1;
|
return std::fwrite(&value, sizeof(double), 1, _file) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -140,7 +140,7 @@ BinaryWriter::writeUEString(Containers::StringView str) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
writeUnsignedInt(static_cast<UnsignedInt>(str.size()) + 1);
|
writeUint32(static_cast<std::uint32_t>(str.size()) + 1);
|
||||||
|
|
||||||
if(str.size() > 0) {
|
if(str.size() > 0) {
|
||||||
std::size_t count = std::fwrite(str.data(), sizeof(char), str.size(), _file);
|
std::size_t count = std::fwrite(str.data(), sizeof(char), str.size(), _file);
|
||||||
|
@ -151,9 +151,9 @@ BinaryWriter::writeUEString(Containers::StringView str) {
|
||||||
return writeChar('\0');
|
return writeChar('\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedLong
|
std::size_t
|
||||||
BinaryWriter::writeUEStringToArray(Containers::StringView value) {
|
BinaryWriter::writeUEStringToArray(Containers::StringView value) {
|
||||||
return writeValueToArray<UnsignedInt>(UnsignedInt(value.size()) + 1u) +
|
return writeValueToArray<std::uint32_t>(std::uint32_t(value.size()) + 1u) +
|
||||||
writeDataToArray(Containers::ArrayView<const char>{value}) +
|
writeDataToArray(Containers::ArrayView<const char>{value}) +
|
||||||
writeValueToArray<char>('\0');
|
writeValueToArray<char>('\0');
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
#include <Corrade/Containers/ArrayView.h>
|
#include <Corrade/Containers/ArrayView.h>
|
||||||
|
@ -23,10 +24,7 @@
|
||||||
#include <Corrade/Containers/StaticArray.h>
|
#include <Corrade/Containers/StaticArray.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
class BinaryWriter {
|
class BinaryWriter {
|
||||||
public:
|
public:
|
||||||
|
@ -43,23 +41,23 @@ class BinaryWriter {
|
||||||
|
|
||||||
void closeFile();
|
void closeFile();
|
||||||
|
|
||||||
Long position();
|
std::int64_t position();
|
||||||
|
|
||||||
Containers::ArrayView<const char> array() const;
|
Containers::ArrayView<const char> array() const;
|
||||||
UnsignedLong arrayPosition() const;
|
std::size_t arrayPosition() const;
|
||||||
bool flushToFile();
|
bool flushToFile();
|
||||||
|
|
||||||
bool writeByte(Byte value);
|
|
||||||
bool writeChar(char value);
|
bool writeChar(char value);
|
||||||
bool writeUnsignedByte(UnsignedByte value);
|
bool writeInt8(std::int8_t value);
|
||||||
bool writeShort(Short value);
|
bool writeUint8(std::uint8_t value);
|
||||||
bool writeUnsignedShort(UnsignedShort value);
|
bool writeInt16(std::int16_t value);
|
||||||
bool writeInt(Int value);
|
bool writeUint16(std::uint16_t value);
|
||||||
bool writeUnsignedInt(UnsignedInt value);
|
bool writeInt32(std::int32_t value);
|
||||||
bool writeLong(Long value);
|
bool writeUint32(std::uint32_t value);
|
||||||
bool writeUnsignedLong(UnsignedLong value);
|
bool writeInt64(std::int64_t value);
|
||||||
bool writeFloat(Float value);
|
bool writeUint64(std::uint64_t value);
|
||||||
bool writeDouble(Double value);
|
bool writeFloat(float value);
|
||||||
|
bool writeDouble(double value);
|
||||||
bool writeArray(Containers::ArrayView<const char> array);
|
bool writeArray(Containers::ArrayView<const char> array);
|
||||||
template<std::size_t size>
|
template<std::size_t size>
|
||||||
bool writeString(const char(&str)[size]) {
|
bool writeString(const char(&str)[size]) {
|
||||||
|
@ -74,30 +72,30 @@ class BinaryWriter {
|
||||||
bool writeUEString(Containers::StringView str);
|
bool writeUEString(Containers::StringView str);
|
||||||
|
|
||||||
template<typename T, typename U = std::conditional_t<std::is_trivially_copyable<T>::value, T, T&>>
|
template<typename T, typename U = std::conditional_t<std::is_trivially_copyable<T>::value, T, T&>>
|
||||||
UnsignedLong writeValueToArray(U value) {
|
std::size_t writeValueToArray(U value) {
|
||||||
Containers::ArrayView<T> view{&value, 1};
|
Containers::ArrayView<T> view{&value, 1};
|
||||||
return writeDataToArray(view);
|
return writeDataToArray(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedLong writeUEStringToArray(Containers::StringView value);
|
std::size_t writeUEStringToArray(Containers::StringView value);
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void writeValueToArrayAt(T& value, UnsignedLong position) {
|
void writeValueToArrayAt(T& value, std::size_t position) {
|
||||||
Containers::ArrayView<T> view{&value, 1};
|
Containers::ArrayView<T> view{&value, 1};
|
||||||
writeDataToArrayAt(view, position);
|
writeDataToArrayAt(view, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
UnsignedLong writeDataToArray(Containers::ArrayView<T> view) {
|
std::size_t writeDataToArray(Containers::ArrayView<T> view) {
|
||||||
arrayAppend(_data, Containers::arrayCast<const char>(view));
|
arrayAppend(_data, Containers::arrayCast<const char>(view));
|
||||||
_index += sizeof(T) * view.size();
|
_index += sizeof(T) * view.size();
|
||||||
return sizeof(T) * view.size();
|
return sizeof(T) * view.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void writeDataToArrayAt(Containers::ArrayView<T> view, UnsignedLong position) {
|
void writeDataToArrayAt(Containers::ArrayView<T> view, std::size_t position) {
|
||||||
auto casted_view = Containers::arrayCast<const char>(view);
|
auto casted_view = Containers::arrayCast<const char>(view);
|
||||||
for(UnsignedLong i = 0; i < casted_view.size(); i++) {
|
for(std::size_t i = 0; i < casted_view.size(); i++) {
|
||||||
_data[position + i] = casted_view[i];
|
_data[position + i] = casted_view[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -106,5 +104,5 @@ class BinaryWriter {
|
||||||
FILE* _file = nullptr;
|
FILE* _file = nullptr;
|
||||||
|
|
||||||
Containers::Array<char> _data;
|
Containers::Array<char> _data;
|
||||||
UnsignedLong _index = 0;
|
std::size_t _index = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -93,8 +93,8 @@ PropertySerialiser::read(BinaryReader& reader) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedLong value_length;
|
std::size_t value_length;
|
||||||
if(!reader.readUnsignedLong(value_length)) {
|
if(!reader.readUint64(value_length)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ PropertySerialiser::read(BinaryReader& reader) {
|
||||||
}
|
}
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
PropertySerialiser::readItem(BinaryReader& reader, Containers::String type, UnsignedLong value_length,
|
PropertySerialiser::readItem(BinaryReader& reader, Containers::String type, std::size_t value_length,
|
||||||
Containers::String name)
|
Containers::String name)
|
||||||
{
|
{
|
||||||
if(reader.peekChar() < 0 || reader.eof()) {
|
if(reader.peekChar() < 0 || reader.eof()) {
|
||||||
|
@ -113,7 +113,7 @@ PropertySerialiser::readItem(BinaryReader& reader, Containers::String type, Unsi
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::Array<UnrealPropertyBase::ptr>
|
Containers::Array<UnrealPropertyBase::ptr>
|
||||||
PropertySerialiser::readSet(BinaryReader& reader, Containers::StringView item_type, UnsignedInt count) {
|
PropertySerialiser::readSet(BinaryReader& reader, Containers::StringView item_type, std::uint32_t count) {
|
||||||
if(reader.peekChar() < 0 || reader.eof()) {
|
if(reader.peekChar() < 0 || reader.eof()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -133,8 +133,8 @@ PropertySerialiser::readSet(BinaryReader& reader, Containers::StringView item_ty
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedLong value_length;
|
std::size_t value_length;
|
||||||
if(!reader.readUnsignedLong(value_length)) {
|
if(!reader.readUint64(value_length)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,8 +147,8 @@ PropertySerialiser::readSet(BinaryReader& reader, Containers::StringView item_ty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for(UnsignedInt i = 0; i < count; i++) {
|
for(std::uint32_t i = 0; i < count; i++) {
|
||||||
auto item = readItem(reader, item_type, UnsignedLong(-1), "");
|
auto item = readItem(reader, item_type, std::size_t(-1), "");
|
||||||
arrayAppend(array, std::move(item));
|
arrayAppend(array, std::move(item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ PropertySerialiser::readSet(BinaryReader& reader, Containers::StringView item_ty
|
||||||
}
|
}
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
PropertySerialiser::deserialise(Containers::String name, Containers::String type, UnsignedLong value_length,
|
PropertySerialiser::deserialise(Containers::String name, Containers::String type, std::size_t value_length,
|
||||||
BinaryReader& reader)
|
BinaryReader& reader)
|
||||||
{
|
{
|
||||||
UnrealPropertyBase::ptr prop;
|
UnrealPropertyBase::ptr prop;
|
||||||
|
@ -181,7 +181,7 @@ PropertySerialiser::deserialise(Containers::String name, Containers::String type
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, Containers::StringView item_type,
|
bool PropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, Containers::StringView item_type,
|
||||||
UnsignedLong& bytes_written, BinaryWriter& writer)
|
std::size_t& bytes_written, BinaryWriter& writer)
|
||||||
{
|
{
|
||||||
auto serialiser = getSerialiser(item_type);
|
auto serialiser = getSerialiser(item_type);
|
||||||
if(!serialiser) {
|
if(!serialiser) {
|
||||||
|
@ -191,7 +191,7 @@ bool PropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, Containers::St
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
PropertySerialiser::write(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer) {
|
PropertySerialiser::write(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer) {
|
||||||
if(prop->name == "None" && prop->propertyType == "NoneProperty" && dynamic_cast<NoneProperty*>(prop.get())) {
|
if(prop->name == "None" && prop->propertyType == "NoneProperty" && dynamic_cast<NoneProperty*>(prop.get())) {
|
||||||
bytes_written += writer.writeUEStringToArray(*prop->name);
|
bytes_written += writer.writeUEStringToArray(*prop->name);
|
||||||
return true;
|
return true;
|
||||||
|
@ -200,10 +200,10 @@ PropertySerialiser::write(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_wri
|
||||||
bytes_written += writer.writeUEStringToArray(*prop->name);
|
bytes_written += writer.writeUEStringToArray(*prop->name);
|
||||||
bytes_written += writer.writeUEStringToArray(prop->propertyType);
|
bytes_written += writer.writeUEStringToArray(prop->propertyType);
|
||||||
|
|
||||||
UnsignedLong value_length = 0;
|
std::size_t value_length = 0;
|
||||||
UnsignedLong vl_position = writer.arrayPosition();
|
std::size_t vl_position = writer.arrayPosition();
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<UnsignedLong>(value_length);
|
bytes_written += writer.writeValueToArray<std::size_t>(value_length);
|
||||||
|
|
||||||
bool ret = serialise(prop, prop->propertyType, value_length, writer);
|
bool ret = serialise(prop, prop->propertyType, value_length, writer);
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ PropertySerialiser::write(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_wri
|
||||||
|
|
||||||
bool
|
bool
|
||||||
PropertySerialiser::writeItem(UnrealPropertyBase::ptr& prop, Containers::StringView item_type,
|
PropertySerialiser::writeItem(UnrealPropertyBase::ptr& prop, Containers::StringView item_type,
|
||||||
UnsignedLong& bytes_written, BinaryWriter& writer)
|
std::size_t& bytes_written, BinaryWriter& writer)
|
||||||
{
|
{
|
||||||
if(prop->name == "None" && prop->propertyType == "NoneProperty" && dynamic_cast<NoneProperty*>(prop.get())) {
|
if(prop->name == "None" && prop->propertyType == "NoneProperty" && dynamic_cast<NoneProperty*>(prop.get())) {
|
||||||
bytes_written += writer.writeUEStringToArray(*prop->name);
|
bytes_written += writer.writeUEStringToArray(*prop->name);
|
||||||
|
@ -227,7 +227,7 @@ PropertySerialiser::writeItem(UnrealPropertyBase::ptr& prop, Containers::StringV
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PropertySerialiser::writeSet(Containers::ArrayView<UnrealPropertyBase::ptr> props,
|
bool PropertySerialiser::writeSet(Containers::ArrayView<UnrealPropertyBase::ptr> props,
|
||||||
Containers::StringView item_type, UnsignedLong& bytes_written, BinaryWriter& writer)
|
Containers::StringView item_type, std::size_t& bytes_written, BinaryWriter& writer)
|
||||||
{
|
{
|
||||||
auto serialiser = getCollectionSerialiser(item_type);
|
auto serialiser = getCollectionSerialiser(item_type);
|
||||||
if(serialiser) {
|
if(serialiser) {
|
||||||
|
|
|
@ -35,20 +35,20 @@ class PropertySerialiser {
|
||||||
static PropertySerialiser& instance();
|
static PropertySerialiser& instance();
|
||||||
|
|
||||||
UnrealPropertyBase::ptr read(BinaryReader& reader);
|
UnrealPropertyBase::ptr read(BinaryReader& reader);
|
||||||
UnrealPropertyBase::ptr readItem(BinaryReader& reader, Containers::String type, UnsignedLong value_length,
|
UnrealPropertyBase::ptr readItem(BinaryReader& reader, Containers::String type, std::size_t value_length,
|
||||||
Containers::String name);
|
Containers::String name);
|
||||||
Containers::Array<UnrealPropertyBase::ptr> readSet(BinaryReader& reader, Containers::StringView item_type,
|
Containers::Array<UnrealPropertyBase::ptr> readSet(BinaryReader& reader, Containers::StringView item_type,
|
||||||
UnsignedInt count);
|
std::uint32_t count);
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::String name, Containers::String type, UnsignedLong value_length,
|
UnrealPropertyBase::ptr deserialise(Containers::String name, Containers::String type, std::size_t value_length,
|
||||||
BinaryReader& reader);
|
BinaryReader& reader);
|
||||||
|
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, Containers::StringView item_type, UnsignedLong& bytes_written,
|
bool serialise(UnrealPropertyBase::ptr& prop, Containers::StringView item_type, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer);
|
BinaryWriter& writer);
|
||||||
bool write(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer);
|
bool write(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer);
|
||||||
bool writeItem(UnrealPropertyBase::ptr& prop, Containers::StringView item_type, UnsignedLong& bytes_written,
|
bool writeItem(UnrealPropertyBase::ptr& prop, Containers::StringView item_type, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer);
|
BinaryWriter& writer);
|
||||||
bool writeSet(Containers::ArrayView<UnrealPropertyBase::ptr> props, Containers::StringView item_type,
|
bool writeSet(Containers::ArrayView<UnrealPropertyBase::ptr> props, Containers::StringView item_type,
|
||||||
UnsignedLong& bytes_written, BinaryWriter& writer);
|
std::size_t& bytes_written, BinaryWriter& writer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PropertySerialiser();
|
PropertySerialiser();
|
||||||
|
|
|
@ -21,12 +21,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "../Types/UnrealPropertyBase.h"
|
#include "../Types/UnrealPropertyBase.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
class BinaryReader;
|
class BinaryReader;
|
||||||
class BinaryWriter;
|
class BinaryWriter;
|
||||||
|
@ -44,9 +41,9 @@ class AbstractUnrealCollectionPropertySerialiser {
|
||||||
virtual StringArrayView types() = 0;
|
virtual StringArrayView types() = 0;
|
||||||
|
|
||||||
virtual PropertyArray deserialise(Containers::StringView name, Containers::StringView type,
|
virtual PropertyArray deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, UnsignedInt count, BinaryReader& reader,
|
std::size_t value_length, std::uint32_t count, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) = 0;
|
PropertySerialiser& serialiser) = 0;
|
||||||
|
|
||||||
virtual auto serialise(Containers::ArrayView<UnrealPropertyBase::ptr> props, Containers::StringView item_type,
|
virtual bool serialise(Containers::ArrayView<UnrealPropertyBase::ptr> props, Containers::StringView item_type,
|
||||||
UnsignedLong& bytes_written, BinaryWriter& writer, PropertySerialiser& serialiser) -> bool = 0;
|
std::size_t& bytes_written, BinaryWriter& writer, PropertySerialiser& serialiser) = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,12 +20,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "../Types/UnrealPropertyBase.h"
|
#include "../Types/UnrealPropertyBase.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
class BinaryReader;
|
class BinaryReader;
|
||||||
class BinaryWriter;
|
class BinaryWriter;
|
||||||
|
@ -42,9 +39,9 @@ class AbstractUnrealPropertySerialiser {
|
||||||
virtual StringArrayView types() = 0;
|
virtual StringArrayView types() = 0;
|
||||||
|
|
||||||
virtual UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
virtual UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) = 0;
|
PropertySerialiser& serialiser) = 0;
|
||||||
|
|
||||||
virtual bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
virtual bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) = 0;
|
PropertySerialiser& serialiser) = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,12 +21,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "../Types/UnrealPropertyBase.h"
|
#include "../Types/UnrealPropertyBase.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
class BinaryReader;
|
class BinaryReader;
|
||||||
class BinaryWriter;
|
class BinaryWriter;
|
||||||
|
@ -41,6 +38,5 @@ class AbstractUnrealStructSerialiser {
|
||||||
|
|
||||||
virtual UnrealPropertyBase::ptr deserialise(BinaryReader& reader) = 0;
|
virtual UnrealPropertyBase::ptr deserialise(BinaryReader& reader) = 0;
|
||||||
|
|
||||||
virtual bool serialise(UnrealPropertyBase::ptr& structProp, BinaryWriter& writer,
|
virtual bool serialise(UnrealPropertyBase::ptr& structProp, BinaryWriter& writer, std::size_t& bytes_written) = 0;
|
||||||
UnsignedLong& bytes_written) = 0;
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
ArrayPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
ArrayPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
Containers::String item_type;
|
Containers::String item_type;
|
||||||
|
@ -40,8 +40,8 @@ ArrayPropertySerialiser::deserialiseProperty(Containers::StringView name, Contai
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedInt item_count;
|
std::uint32_t item_count;
|
||||||
if(!reader.readUnsignedInt(item_count)) {
|
if(!reader.readUint32(item_count)) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read array property {}'s item count.", name);
|
LOG_ERROR_FORMAT("Couldn't read array property {}'s item count.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ ArrayPropertySerialiser::deserialiseProperty(Containers::StringView name, Contai
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ArrayPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
ArrayPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto array_prop = dynamic_cast<ArrayProperty*>(prop.get());
|
auto array_prop = dynamic_cast<ArrayProperty*>(prop.get());
|
||||||
|
@ -65,10 +65,10 @@ ArrayPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Unsign
|
||||||
|
|
||||||
writer.writeUEStringToArray(array_prop->itemType);
|
writer.writeUEStringToArray(array_prop->itemType);
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
bytes_written += writer.writeValueToArray<UnsignedInt>(UnsignedInt(array_prop->items.size()));
|
bytes_written += writer.writeValueToArray<std::uint32_t>(std::uint32_t(array_prop->items.size()));
|
||||||
|
|
||||||
UnsignedLong start_pos = writer.arrayPosition();
|
std::size_t start_pos = writer.arrayPosition();
|
||||||
UnsignedLong dummy_bytes_written = 0;
|
std::size_t dummy_bytes_written = 0;
|
||||||
bool ret = serialiser.writeSet(array_prop->items, array_prop->itemType, dummy_bytes_written, writer);
|
bool ret = serialiser.writeSet(array_prop->items, array_prop->itemType, dummy_bytes_written, writer);
|
||||||
bytes_written += writer.arrayPosition() - start_pos;
|
bytes_written += writer.arrayPosition() - start_pos;
|
||||||
|
|
||||||
|
|
|
@ -18,14 +18,11 @@
|
||||||
|
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "UnrealPropertySerialiser.h"
|
#include "UnrealPropertySerialiser.h"
|
||||||
|
|
||||||
#include "../Types/ArrayProperty.h"
|
#include "../Types/ArrayProperty.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
class ArrayPropertySerialiser : public UnrealPropertySerialiser<ArrayProperty> {
|
class ArrayPropertySerialiser : public UnrealPropertySerialiser<ArrayProperty> {
|
||||||
public:
|
public:
|
||||||
|
@ -33,8 +30,8 @@ class ArrayPropertySerialiser : public UnrealPropertySerialiser<ArrayProperty> {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,7 +28,7 @@ BoolPropertySerialiser::types() {
|
||||||
}
|
}
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
BoolPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type, UnsignedLong value_length,
|
BoolPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type, std::size_t value_length,
|
||||||
BinaryReader& reader, PropertySerialiser& serialiser)
|
BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
if(value_length != 0) {
|
if(value_length != 0) {
|
||||||
|
@ -36,8 +36,8 @@ BoolPropertySerialiser::deserialise(Containers::StringView name, Containers::Str
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Short value;
|
std::int16_t value;
|
||||||
if(!reader.readShort(value)) {
|
if(!reader.readInt16(value)) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read bool property {}'s value.", name);
|
LOG_ERROR_FORMAT("Couldn't read bool property {}'s value.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ BoolPropertySerialiser::deserialise(Containers::StringView name, Containers::Str
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BoolPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
BoolPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto bool_prop = dynamic_cast<BoolProperty*>(prop.get());
|
auto bool_prop = dynamic_cast<BoolProperty*>(prop.get());
|
||||||
|
@ -63,7 +63,7 @@ BoolPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& b
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.writeValueToArray<Short>(Short(bool_prop->value));
|
writer.writeValueToArray<std::int16_t>(std::int16_t(bool_prop->value));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,9 +32,9 @@ class BoolPropertySerialiser : public AbstractUnrealPropertySerialiser {
|
||||||
StringArrayView types() override;
|
StringArrayView types() override;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
|
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,12 +28,12 @@ BytePropertySerialiser::types() {
|
||||||
}
|
}
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
BytePropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type, UnsignedLong value_length,
|
BytePropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type, std::size_t value_length,
|
||||||
BinaryReader& reader, PropertySerialiser& serialiser)
|
BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<ByteProperty>();
|
auto prop = Containers::pointer<ByteProperty>();
|
||||||
|
|
||||||
if(value_length != UnsignedLong(-1)) {
|
if(value_length != std::size_t(-1)) {
|
||||||
if(!reader.readUEString(prop->enumType)) {
|
if(!reader.readUEString(prop->enumType)) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read byte property {}'s enum type.", name);
|
LOG_ERROR_FORMAT("Couldn't read byte property {}'s enum type.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -53,8 +53,8 @@ BytePropertySerialiser::deserialise(Containers::StringView name, Containers::Str
|
||||||
|
|
||||||
prop->valueLength = value_length;
|
prop->valueLength = value_length;
|
||||||
|
|
||||||
//UnsignedInt count = 0;
|
//std::uint32_t count = 0;
|
||||||
//if(!reader.readUnsignedInt(count)) {
|
//if(!reader.readstd::uint32_t(count)) {
|
||||||
// return nullptr;
|
// return nullptr;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ BytePropertySerialiser::deserialise(Containers::StringView name, Containers::Str
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BytePropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
BytePropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto byte_prop = dynamic_cast<ByteProperty*>(prop.get());
|
auto byte_prop = dynamic_cast<ByteProperty*>(prop.get());
|
||||||
|
@ -76,10 +76,10 @@ BytePropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& b
|
||||||
}
|
}
|
||||||
|
|
||||||
//writer.writeValueToArray<char>('\0');
|
//writer.writeValueToArray<char>('\0');
|
||||||
//bytes_written += writer.writeValueToArray<UnsignedInt>(byte_prop->value.size());
|
//bytes_written += writer.writeValueToArray<std::uint32_t>(byte_prop->value.size());
|
||||||
//bytes_written += writer.writeDataToArray<char>(byte_prop->value);
|
//bytes_written += writer.writeDataToArray<char>(byte_prop->value);
|
||||||
|
|
||||||
if(byte_prop->valueLength != UnsignedLong(-1)) {
|
if(byte_prop->valueLength != std::size_t(-1)) {
|
||||||
writer.writeUEStringToArray(byte_prop->enumType);
|
writer.writeUEStringToArray(byte_prop->enumType);
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,9 +30,9 @@ class BytePropertySerialiser : public AbstractUnrealPropertySerialiser {
|
||||||
StringArrayView types() override;
|
StringArrayView types() override;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
|
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
ColourPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
ColourPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<ColourStructProperty>();
|
auto prop = Containers::pointer<ColourStructProperty>();
|
||||||
|
@ -38,7 +38,7 @@ ColourPropertySerialiser::deserialiseProperty(Containers::StringView name, Conta
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ColourPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
ColourPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto colour_prop = dynamic_cast<ColourStructProperty*>(prop.get());
|
auto colour_prop = dynamic_cast<ColourStructProperty*>(prop.get());
|
||||||
|
@ -47,10 +47,10 @@ ColourPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Unsig
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<Float>(colour_prop->r) +
|
bytes_written += writer.writeValueToArray<float>(colour_prop->r) +
|
||||||
writer.writeValueToArray<Float>(colour_prop->g) +
|
writer.writeValueToArray<float>(colour_prop->g) +
|
||||||
writer.writeValueToArray<Float>(colour_prop->b) +
|
writer.writeValueToArray<float>(colour_prop->b) +
|
||||||
writer.writeValueToArray<Float>(colour_prop->a);
|
writer.writeValueToArray<float>(colour_prop->a);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,8 @@ class ColourPropertySerialiser : public UnrealPropertySerialiser<ColourStructPro
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,12 +22,12 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
DateTimePropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
DateTimePropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<DateTimeStructProperty>();
|
auto prop = Containers::pointer<DateTimeStructProperty>();
|
||||||
|
|
||||||
if(!reader.readUnsignedLong(prop->timestamp)) {
|
if(!reader.readInt64(prop->timestamp)) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read date/time property {}'s value.", name);
|
LOG_ERROR_FORMAT("Couldn't read date/time property {}'s value.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ DateTimePropertySerialiser::deserialiseProperty(Containers::StringView name, Con
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DateTimePropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
DateTimePropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto dt_prop = dynamic_cast<DateTimeStructProperty*>(prop.get());
|
auto dt_prop = dynamic_cast<DateTimeStructProperty*>(prop.get());
|
||||||
|
@ -45,7 +45,7 @@ DateTimePropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Uns
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<UnsignedLong>(dt_prop->timestamp);
|
bytes_written += writer.writeValueToArray<std::int64_t>(dt_prop->timestamp);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@ class DateTimePropertySerialiser : public UnrealPropertySerialiser<DateTimeStruc
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,7 +28,7 @@ EnumPropertySerialiser::types() {
|
||||||
}
|
}
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
EnumPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type, UnsignedLong value_length,
|
EnumPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type, std::size_t value_length,
|
||||||
BinaryReader& reader, PropertySerialiser& serialiser)
|
BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<EnumProperty>();
|
auto prop = Containers::pointer<EnumProperty>();
|
||||||
|
@ -53,7 +53,7 @@ EnumPropertySerialiser::deserialise(Containers::StringView name, Containers::Str
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
EnumPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
EnumPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto enum_prop = dynamic_cast<EnumProperty*>(prop.get());
|
auto enum_prop = dynamic_cast<EnumProperty*>(prop.get());
|
||||||
|
|
|
@ -30,9 +30,9 @@ class EnumPropertySerialiser : public AbstractUnrealPropertySerialiser {
|
||||||
StringArrayView types() override;
|
StringArrayView types() override;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
|
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,7 +29,7 @@ FloatPropertySerialiser::types() {
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
FloatPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type,
|
FloatPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader, PropertySerialiser& serialiser)
|
std::size_t value_length, BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<FloatProperty>();
|
auto prop = Containers::pointer<FloatProperty>();
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ FloatPropertySerialiser::deserialise(Containers::StringView name, Containers::St
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
FloatPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
FloatPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto float_prop = dynamic_cast<FloatProperty*>(prop.get());
|
auto float_prop = dynamic_cast<FloatProperty*>(prop.get());
|
||||||
|
@ -58,7 +58,7 @@ FloatPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong&
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
bytes_written += writer.writeValueToArray<Float>(float_prop->value);
|
bytes_written += writer.writeValueToArray<float>(float_prop->value);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,9 +30,9 @@ class FloatPropertySerialiser : public AbstractUnrealPropertySerialiser {
|
||||||
StringArrayView types() override;
|
StringArrayView types() override;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
|
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,7 +24,7 @@ using namespace Containers::Literals;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
GuidPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
GuidPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<GuidStructProperty>();
|
auto prop = Containers::pointer<GuidStructProperty>();
|
||||||
|
@ -38,7 +38,7 @@ GuidPropertySerialiser::deserialiseProperty(Containers::StringView name, Contain
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
GuidPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
GuidPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto guid_prop = dynamic_cast<GuidStructProperty*>(prop.get());
|
auto guid_prop = dynamic_cast<GuidStructProperty*>(prop.get());
|
||||||
|
|
|
@ -28,8 +28,8 @@ class GuidPropertySerialiser : public UnrealPropertySerialiser<GuidStructPropert
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,18 +22,18 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
IntPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
IntPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<IntProperty>();
|
auto prop = Containers::pointer<IntProperty>();
|
||||||
|
|
||||||
if(value_length == UnsignedLong(-1)) {
|
if(value_length == std::size_t(-1)) {
|
||||||
if(!reader.readInt(prop->value)) {
|
if(!reader.readInt32(prop->value)) {
|
||||||
LOG_ERROR("Couldn't read int property's value.");
|
LOG_ERROR("Couldn't read int property's value.");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
prop->valueLength = UnsignedLong(-1);
|
prop->valueLength = std::size_t(-1);
|
||||||
return prop;
|
return prop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ IntPropertySerialiser::deserialiseProperty(Containers::StringView name, Containe
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!reader.readInt(prop->value)) {
|
if(!reader.readInt32(prop->value)) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read int property {}'s value.", name);
|
LOG_ERROR_FORMAT("Couldn't read int property {}'s value.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ IntPropertySerialiser::deserialiseProperty(Containers::StringView name, Containe
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
IntPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
IntPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto int_prop = dynamic_cast<IntProperty*>(prop.get());
|
auto int_prop = dynamic_cast<IntProperty*>(prop.get());
|
||||||
|
@ -63,11 +63,11 @@ IntPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Unsigned
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(prop->valueLength != UnsignedLong(-1)) {
|
if(prop->valueLength != std::size_t(-1)) {
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<Int>(int_prop->value);
|
bytes_written += writer.writeValueToArray<std::int32_t>(int_prop->value);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@ class IntPropertySerialiser : public UnrealPropertySerialiser<IntProperty> {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,7 +26,7 @@ using namespace Containers::Literals;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
MapPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
MapPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<MapProperty>();
|
auto prop = Containers::pointer<MapProperty>();
|
||||||
|
@ -47,14 +47,14 @@ MapPropertySerialiser::deserialiseProperty(Containers::StringView name, Containe
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedInt null;
|
std::uint32_t null;
|
||||||
if(!reader.readUnsignedInt(null) || null != 0u) {
|
if(!reader.readUint32(null) || null != 0u) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read a null int in map property {}.", name);
|
LOG_ERROR_FORMAT("Couldn't read a null int in map property {}.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedInt count;
|
std::uint32_t count;
|
||||||
if(!reader.readUnsignedInt(count)) {
|
if(!reader.readUint32(count)) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read map property {}'s item count.", name);
|
LOG_ERROR_FORMAT("Couldn't read map property {}'s item count.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ MapPropertySerialiser::deserialiseProperty(Containers::StringView name, Containe
|
||||||
|
|
||||||
arrayReserve(prop->map, count);
|
arrayReserve(prop->map, count);
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < count; i++) {
|
for(std::uint32_t i = 0; i < count; i++) {
|
||||||
MapProperty::KeyValuePair pair;
|
MapProperty::KeyValuePair pair;
|
||||||
|
|
||||||
if(prop->keyType == "IntProperty"_s || prop->keyType == "StrProperty"_s) {
|
if(prop->keyType == "IntProperty"_s || prop->keyType == "StrProperty"_s) {
|
||||||
|
@ -109,7 +109,7 @@ MapPropertySerialiser::deserialiseProperty(Containers::StringView name, Containe
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MapPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
MapPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto map_prop = dynamic_cast<MapProperty*>(prop.get());
|
auto map_prop = dynamic_cast<MapProperty*>(prop.get());
|
||||||
|
@ -122,12 +122,12 @@ MapPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Unsigned
|
||||||
writer.writeUEStringToArray(map_prop->valueType);
|
writer.writeUEStringToArray(map_prop->valueType);
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
|
|
||||||
UnsignedLong value_start = writer.arrayPosition();
|
std::size_t value_start = writer.arrayPosition();
|
||||||
writer.writeValueToArray<UnsignedInt>(0u);
|
writer.writeValueToArray<std::uint32_t>(0u);
|
||||||
|
|
||||||
writer.writeValueToArray<UnsignedInt>(UnsignedInt(map_prop->map.size()));
|
writer.writeValueToArray<std::uint32_t>(std::uint32_t(map_prop->map.size()));
|
||||||
|
|
||||||
UnsignedLong dummy_bytes_written = 0;
|
std::size_t dummy_bytes_written = 0;
|
||||||
for(auto& pair : map_prop->map) {
|
for(auto& pair : map_prop->map) {
|
||||||
if(!serialiser.writeItem(pair.key, map_prop->keyType, dummy_bytes_written, writer)) {
|
if(!serialiser.writeItem(pair.key, map_prop->keyType, dummy_bytes_written, writer)) {
|
||||||
LOG_ERROR("Couldn't write a key.");
|
LOG_ERROR("Couldn't write a key.");
|
||||||
|
|
|
@ -28,8 +28,8 @@ class MapPropertySerialiser : public UnrealPropertySerialiser<MapProperty> {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,7 +27,7 @@ using namespace Containers::Literals;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
ResourcePropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
ResourcePropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<ResourceItemValue>();
|
auto prop = Containers::pointer<ResourceItemValue>();
|
||||||
|
@ -79,7 +79,7 @@ ResourcePropertySerialiser::deserialiseProperty(Containers::StringView name, Con
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ResourcePropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
ResourcePropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto res_prop = dynamic_cast<ResourceItemValue*>(prop.get());
|
auto res_prop = dynamic_cast<ResourceItemValue*>(prop.get());
|
||||||
|
@ -90,15 +90,15 @@ ResourcePropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Uns
|
||||||
|
|
||||||
bytes_written += writer.writeUEStringToArray("ID_4_AAE08F17428E229EC7A2209F51081A21"_s) +
|
bytes_written += writer.writeUEStringToArray("ID_4_AAE08F17428E229EC7A2209F51081A21"_s) +
|
||||||
writer.writeUEStringToArray("IntProperty"_s) +
|
writer.writeUEStringToArray("IntProperty"_s) +
|
||||||
writer.writeValueToArray<UnsignedLong>(4ull) +
|
writer.writeValueToArray<std::size_t>(4ull) +
|
||||||
writer.writeValueToArray<char>('\0') +
|
writer.writeValueToArray<char>('\0') +
|
||||||
writer.writeValueToArray<Int>(res_prop->id);
|
writer.writeValueToArray<std::int32_t>(res_prop->id);
|
||||||
|
|
||||||
bytes_written += writer.writeUEStringToArray("Quantity_3_560F09B5485C365D3041888910019CE3"_s) +
|
bytes_written += writer.writeUEStringToArray("Quantity_3_560F09B5485C365D3041888910019CE3"_s) +
|
||||||
writer.writeUEStringToArray("IntProperty"_s) +
|
writer.writeUEStringToArray("IntProperty"_s) +
|
||||||
writer.writeValueToArray<UnsignedLong>(4ull) +
|
writer.writeValueToArray<std::size_t>(4ull) +
|
||||||
writer.writeValueToArray<char>('\0') +
|
writer.writeValueToArray<char>('\0') +
|
||||||
writer.writeValueToArray<Int>(res_prop->quantity);
|
writer.writeValueToArray<std::int32_t>(res_prop->quantity);
|
||||||
|
|
||||||
bytes_written += writer.writeUEStringToArray("None"_s);
|
bytes_written += writer.writeUEStringToArray("None"_s);
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,8 @@ class ResourcePropertySerialiser : public UnrealPropertySerialiser<ResourceItemV
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
RotatorPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
RotatorPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<RotatorStructProperty>();
|
auto prop = Containers::pointer<RotatorStructProperty>();
|
||||||
|
@ -36,7 +36,7 @@ RotatorPropertySerialiser::deserialiseProperty(Containers::StringView name, Cont
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
RotatorPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
RotatorPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto rotator = dynamic_cast<RotatorStructProperty*>(prop.get());
|
auto rotator = dynamic_cast<RotatorStructProperty*>(prop.get());
|
||||||
|
@ -45,8 +45,8 @@ RotatorPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Unsi
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<Float>(rotator->x) + writer.writeValueToArray<Float>(rotator->y) +
|
bytes_written += writer.writeValueToArray<float>(rotator->x) + writer.writeValueToArray<float>(rotator->y) +
|
||||||
writer.writeValueToArray<Float>(rotator->z);
|
writer.writeValueToArray<float>(rotator->z);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@ class RotatorPropertySerialiser : public UnrealPropertySerialiser<RotatorStructP
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
SetPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
SetPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
Containers::String item_type;
|
Containers::String item_type;
|
||||||
|
@ -38,14 +38,14 @@ SetPropertySerialiser::deserialiseProperty(Containers::StringView name, Containe
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedInt four_bytes;
|
std::uint32_t four_bytes;
|
||||||
if(!reader.readUnsignedInt(four_bytes) || four_bytes != 0u) {
|
if(!reader.readUint32(four_bytes) || four_bytes != 0u) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read four null bytes in set property {}.", name);
|
LOG_ERROR_FORMAT("Couldn't read four null bytes in set property {}.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedInt item_count;
|
std::uint32_t item_count;
|
||||||
if(!reader.readUnsignedInt(item_count)) {
|
if(!reader.readUint32(item_count)) {
|
||||||
LOG_ERROR_FORMAT("Couldn't read set property {}'s item count.", name);
|
LOG_ERROR_FORMAT("Couldn't read set property {}'s item count.", name);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ SetPropertySerialiser::deserialiseProperty(Containers::StringView name, Containe
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
SetPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
SetPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto set_prop = dynamic_cast<SetProperty*>(prop.get());
|
auto set_prop = dynamic_cast<SetProperty*>(prop.get());
|
||||||
|
@ -70,11 +70,11 @@ SetPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Unsigned
|
||||||
writer.writeUEStringToArray(set_prop->itemType);
|
writer.writeUEStringToArray(set_prop->itemType);
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<UnsignedInt>(0u);
|
bytes_written += writer.writeValueToArray<std::uint32_t>(0u);
|
||||||
bytes_written += writer.writeValueToArray<UnsignedInt>(UnsignedInt(set_prop->items.size()));
|
bytes_written += writer.writeValueToArray<std::uint32_t>(std::uint32_t(set_prop->items.size()));
|
||||||
|
|
||||||
UnsignedLong start_pos = writer.arrayPosition();
|
std::size_t start_pos = writer.arrayPosition();
|
||||||
UnsignedLong dummy_bytes_written = 0;
|
std::size_t dummy_bytes_written = 0;
|
||||||
serialiser.writeSet(set_prop->items, set_prop->itemType, dummy_bytes_written, writer);
|
serialiser.writeSet(set_prop->items, set_prop->itemType, dummy_bytes_written, writer);
|
||||||
bytes_written += writer.arrayPosition() - start_pos;
|
bytes_written += writer.arrayPosition() - start_pos;
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,8 @@ class SetPropertySerialiser : public UnrealPropertySerialiser<SetProperty> {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,11 +31,11 @@ StringPropertySerialiser::types() {
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
StringPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type,
|
StringPropertySerialiser::deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader, PropertySerialiser& serialiser)
|
std::size_t value_length, BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<StringProperty>(type);
|
auto prop = Containers::pointer<StringProperty>(type);
|
||||||
|
|
||||||
if(value_length != UnsignedLong(-1)) {
|
if(value_length != std::size_t(-1)) {
|
||||||
char terminator;
|
char terminator;
|
||||||
if(!reader.readChar(terminator) || terminator != '\0') {
|
if(!reader.readChar(terminator) || terminator != '\0') {
|
||||||
LOG_ERROR_FORMAT("Couldn't read a null byte in string property {}.", name);
|
LOG_ERROR_FORMAT("Couldn't read a null byte in string property {}.", name);
|
||||||
|
@ -54,7 +54,7 @@ StringPropertySerialiser::deserialise(Containers::StringView name, Containers::S
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
StringPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
StringPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto str_prop = dynamic_cast<StringProperty*>(prop.get());
|
auto str_prop = dynamic_cast<StringProperty*>(prop.get());
|
||||||
|
@ -63,7 +63,7 @@ StringPropertySerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong&
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(str_prop->valueLength != UnsignedLong(-1)) {
|
if(str_prop->valueLength != std::size_t(-1)) {
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,9 @@ class StringPropertySerialiser : public AbstractUnrealPropertySerialiser {
|
||||||
StringArrayView types() override;
|
StringArrayView types() override;
|
||||||
|
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
|
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,8 +33,8 @@ StructSerialiser::types() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Containers::Array<UnrealPropertyBase::ptr>
|
Containers::Array<UnrealPropertyBase::ptr>
|
||||||
StructSerialiser::deserialise(Containers::StringView name, Containers::StringView type, UnsignedLong value_length,
|
StructSerialiser::deserialise(Containers::StringView name, Containers::StringView type, std::size_t value_length,
|
||||||
UnsignedInt count, BinaryReader& reader, PropertySerialiser& serialiser)
|
std::uint32_t count, BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
Containers::String item_type;
|
Containers::String item_type;
|
||||||
if(!reader.readUEString(item_type)) {
|
if(!reader.readUEString(item_type)) {
|
||||||
|
@ -62,10 +62,10 @@ StructSerialiser::deserialise(Containers::StringView name, Containers::StringVie
|
||||||
prop->structGuid = std::move(guid);
|
prop->structGuid = std::move(guid);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for(UnsignedInt i = 0; i < count; i++) {
|
for(std::uint32_t i = 0; i < count; i++) {
|
||||||
auto prop = Containers::pointer<UnrealPropertyBase>();
|
auto prop = Containers::pointer<UnrealPropertyBase>();
|
||||||
|
|
||||||
prop = serialiser.readItem(reader, item_type, UnsignedLong(-1), name);
|
prop = serialiser.readItem(reader, item_type, std::size_t(-1), name);
|
||||||
|
|
||||||
if(!prop) {
|
if(!prop) {
|
||||||
prop = readStructValue(name, item_type, value_length, reader, serialiser);
|
prop = readStructValue(name, item_type, value_length, reader, serialiser);
|
||||||
|
@ -86,7 +86,7 @@ StructSerialiser::deserialise(Containers::StringView name, Containers::StringVie
|
||||||
}
|
}
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
StructSerialiser::deserialise(Containers::StringView name, Containers::StringView type, UnsignedLong value_length,
|
StructSerialiser::deserialise(Containers::StringView name, Containers::StringView type, std::size_t value_length,
|
||||||
BinaryReader& reader, PropertySerialiser& serialiser)
|
BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
Containers::String item_type;
|
Containers::String item_type;
|
||||||
|
@ -125,12 +125,12 @@ StructSerialiser::deserialise(Containers::StringView name, Containers::StringVie
|
||||||
|
|
||||||
bool
|
bool
|
||||||
StructSerialiser::serialise(Containers::ArrayView<UnrealPropertyBase::ptr> props, Containers::StringView item_type,
|
StructSerialiser::serialise(Containers::ArrayView<UnrealPropertyBase::ptr> props, Containers::StringView item_type,
|
||||||
UnsignedLong& bytes_written, BinaryWriter& writer, PropertySerialiser& serialiser)
|
std::size_t& bytes_written, BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
bytes_written += writer.writeUEStringToArray(*(props.front()->name));
|
bytes_written += writer.writeUEStringToArray(*(props.front()->name));
|
||||||
bytes_written += writer.writeUEStringToArray(item_type);
|
bytes_written += writer.writeUEStringToArray(item_type);
|
||||||
UnsignedLong vl_pos = writer.arrayPosition();
|
std::size_t vl_pos = writer.arrayPosition();
|
||||||
bytes_written += writer.writeValueToArray<UnsignedLong>(0ull);
|
bytes_written += writer.writeValueToArray<std::size_t>(0ull);
|
||||||
|
|
||||||
auto struct_prop = dynamic_cast<StructProperty*>(props.front().get());
|
auto struct_prop = dynamic_cast<StructProperty*>(props.front().get());
|
||||||
if(!struct_prop) {
|
if(!struct_prop) {
|
||||||
|
@ -142,9 +142,9 @@ StructSerialiser::serialise(Containers::ArrayView<UnrealPropertyBase::ptr> props
|
||||||
bytes_written += writer.writeDataToArray(arrayView(struct_prop->structGuid));
|
bytes_written += writer.writeDataToArray(arrayView(struct_prop->structGuid));
|
||||||
bytes_written += writer.writeValueToArray<char>('\0');
|
bytes_written += writer.writeValueToArray<char>('\0');
|
||||||
|
|
||||||
UnsignedLong vl_start = writer.arrayPosition();
|
std::size_t vl_start = writer.arrayPosition();
|
||||||
|
|
||||||
UnsignedLong bytes_written_here = 0;
|
std::size_t bytes_written_here = 0;
|
||||||
for(auto& prop : props) {
|
for(auto& prop : props) {
|
||||||
struct_prop = dynamic_cast<StructProperty*>(prop.get());
|
struct_prop = dynamic_cast<StructProperty*>(prop.get());
|
||||||
if(!struct_prop) {
|
if(!struct_prop) {
|
||||||
|
@ -160,7 +160,7 @@ StructSerialiser::serialise(Containers::ArrayView<UnrealPropertyBase::ptr> props
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedLong vl_stop = writer.arrayPosition() - vl_start;
|
std::size_t vl_stop = writer.arrayPosition() - vl_start;
|
||||||
writer.writeValueToArrayAt(vl_stop, vl_pos);
|
writer.writeValueToArrayAt(vl_stop, vl_pos);
|
||||||
bytes_written += vl_stop;
|
bytes_written += vl_stop;
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ StructSerialiser::serialise(Containers::ArrayView<UnrealPropertyBase::ptr> props
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
StructSerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
StructSerialiser::serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto struct_prop = dynamic_cast<StructProperty*>(prop.get());
|
auto struct_prop = dynamic_cast<StructProperty*>(prop.get());
|
||||||
|
@ -182,8 +182,8 @@ StructSerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_w
|
||||||
writer.writeValueToArray<char>('\0');
|
writer.writeValueToArray<char>('\0');
|
||||||
|
|
||||||
if(!serialiser.writeItem(prop, struct_prop->structType, bytes_written, writer)) {
|
if(!serialiser.writeItem(prop, struct_prop->structType, bytes_written, writer)) {
|
||||||
UnsignedLong dummy_bytes_written = 0;
|
std::size_t dummy_bytes_written = 0;
|
||||||
UnsignedLong vl_start = writer.arrayPosition();
|
std::size_t vl_start = writer.arrayPosition();
|
||||||
if(!writeStructValue(struct_prop, dummy_bytes_written, writer, serialiser)) {
|
if(!writeStructValue(struct_prop, dummy_bytes_written, writer, serialiser)) {
|
||||||
LOG_ERROR("Couldn't write the struct value.");
|
LOG_ERROR("Couldn't write the struct value.");
|
||||||
return false;
|
return false;
|
||||||
|
@ -195,7 +195,7 @@ StructSerialiser::serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_w
|
||||||
}
|
}
|
||||||
|
|
||||||
StructProperty::ptr
|
StructProperty::ptr
|
||||||
StructSerialiser::readStructValue(Containers::StringView name, Containers::StringView type, UnsignedLong value_length,
|
StructSerialiser::readStructValue(Containers::StringView name, Containers::StringView type, std::size_t value_length,
|
||||||
BinaryReader& reader, PropertySerialiser& serialiser)
|
BinaryReader& reader, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto st_prop = Containers::pointer<GenericStructProperty>();
|
auto st_prop = Containers::pointer<GenericStructProperty>();
|
||||||
|
@ -219,7 +219,7 @@ StructSerialiser::readStructValue(Containers::StringView name, Containers::Strin
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
StructSerialiser::writeStructValue(StructProperty* prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
StructSerialiser::writeStructValue(StructProperty* prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto struct_prop = dynamic_cast<GenericStructProperty*>(prop);
|
auto struct_prop = dynamic_cast<GenericStructProperty*>(prop);
|
||||||
|
|
|
@ -31,21 +31,21 @@ class StructSerialiser : public AbstractUnrealPropertySerialiser, public Abstrac
|
||||||
|
|
||||||
StringArrayView types() override;
|
StringArrayView types() override;
|
||||||
|
|
||||||
PropertyArray deserialise(Containers::StringView name, Containers::StringView type, UnsignedLong value_length,
|
PropertyArray deserialise(Containers::StringView name, Containers::StringView type, std::size_t value_length,
|
||||||
UnsignedInt count, BinaryReader& reader, PropertySerialiser& serialiser) override;
|
std::uint32_t count, BinaryReader& reader, PropertySerialiser& serialiser) override;
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
|
|
||||||
bool serialise(PropertyArrayView props, Containers::StringView item_type, UnsignedLong& bytes_written,
|
bool serialise(PropertyArrayView props, Containers::StringView item_type, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser) override;
|
BinaryWriter& writer, PropertySerialiser& serialiser) override;
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
StructProperty::ptr readStructValue(Containers::StringView name, Containers::StringView type,
|
StructProperty::ptr readStructValue(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser);
|
PropertySerialiser& serialiser);
|
||||||
bool writeStructValue(StructProperty* prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool writeStructValue(StructProperty* prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser);
|
PropertySerialiser& serialiser);
|
||||||
} ;
|
} ;
|
||||||
|
|
|
@ -23,12 +23,12 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
TextPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
TextPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<TextProperty>();
|
auto prop = Containers::pointer<TextProperty>();
|
||||||
|
|
||||||
Long start_position = reader.position();
|
auto start_position = reader.position();
|
||||||
|
|
||||||
char terminator;
|
char terminator;
|
||||||
if(!reader.readChar(terminator) || terminator != '\0') {
|
if(!reader.readChar(terminator) || terminator != '\0') {
|
||||||
|
@ -62,7 +62,7 @@ TextPropertySerialiser::deserialiseProperty(Containers::StringView name, Contain
|
||||||
arrayAppend(prop->data, std::move(str));
|
arrayAppend(prop->data, std::move(str));
|
||||||
|
|
||||||
interval = reader.position() - start_position;
|
interval = reader.position() - start_position;
|
||||||
} while(UnsignedLong(interval) < value_length);
|
} while(std::size_t(interval) < value_length);
|
||||||
|
|
||||||
prop->value = prop->data.back();
|
prop->value = prop->data.back();
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ TextPropertySerialiser::deserialiseProperty(Containers::StringView name, Contain
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
TextPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
TextPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto text_prop = dynamic_cast<TextProperty*>(prop.get());
|
auto text_prop = dynamic_cast<TextProperty*>(prop.get());
|
||||||
|
|
|
@ -28,8 +28,8 @@ class TextPropertySerialiser : public UnrealPropertySerialiser<TextProperty> {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -50,13 +50,13 @@ class UnrealPropertySerialiser : public AbstractUnrealPropertySerialiser {
|
||||||
}
|
}
|
||||||
|
|
||||||
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialise(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override
|
PropertySerialiser& serialiser) override
|
||||||
{
|
{
|
||||||
return deserialiseProperty(name, type, value_length, reader, serialiser);
|
return deserialiseProperty(name, type, value_length, reader, serialiser);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool serialise(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialise(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override
|
PropertySerialiser& serialiser) override
|
||||||
{
|
{
|
||||||
return serialiseProperty(prop, bytes_written, writer, serialiser);
|
return serialiseProperty(prop, bytes_written, writer, serialiser);
|
||||||
|
@ -64,9 +64,9 @@ class UnrealPropertySerialiser : public AbstractUnrealPropertySerialiser {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
virtual UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) = 0;
|
PropertySerialiser& serialiser) = 0;
|
||||||
|
|
||||||
virtual bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
virtual bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) = 0;
|
PropertySerialiser& serialiser) = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
Vector2DPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
Vector2DPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<Vector2DStructProperty>();
|
auto prop = Containers::pointer<Vector2DStructProperty>();
|
||||||
|
@ -36,7 +36,7 @@ Vector2DPropertySerialiser::deserialiseProperty(Containers::StringView name, Con
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Vector2DPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
Vector2DPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto vector = dynamic_cast<Vector2DStructProperty*>(prop.get());
|
auto vector = dynamic_cast<Vector2DStructProperty*>(prop.get());
|
||||||
|
@ -45,7 +45,7 @@ Vector2DPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Uns
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<Float>(vector->x) + writer.writeValueToArray<Float>(vector->y);
|
bytes_written += writer.writeValueToArray<float>(vector->x) + writer.writeValueToArray<float>(vector->y);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@ class Vector2DPropertySerialiser : public UnrealPropertySerialiser<Vector2DStruc
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
UnrealPropertyBase::ptr
|
UnrealPropertyBase::ptr
|
||||||
VectorPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
VectorPropertySerialiser::deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser)
|
PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto prop = Containers::pointer<VectorStructProperty>();
|
auto prop = Containers::pointer<VectorStructProperty>();
|
||||||
|
@ -36,7 +36,7 @@ VectorPropertySerialiser::deserialiseProperty(Containers::StringView name, Conta
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
VectorPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written,
|
VectorPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written,
|
||||||
BinaryWriter& writer, PropertySerialiser& serialiser)
|
BinaryWriter& writer, PropertySerialiser& serialiser)
|
||||||
{
|
{
|
||||||
auto vector = dynamic_cast<VectorStructProperty*>(prop.get());
|
auto vector = dynamic_cast<VectorStructProperty*>(prop.get());
|
||||||
|
@ -45,8 +45,8 @@ VectorPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Unsig
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_written += writer.writeValueToArray<Float>(vector->x) + writer.writeValueToArray<Float>(vector->y) +
|
bytes_written += writer.writeValueToArray<float>(vector->x) + writer.writeValueToArray<float>(vector->y) +
|
||||||
writer.writeValueToArray<Float>(vector->z);
|
writer.writeValueToArray<float>(vector->z);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@ class VectorPropertySerialiser : public UnrealPropertySerialiser<VectorStructPro
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
UnrealPropertyBase::ptr deserialiseProperty(Containers::StringView name, Containers::StringView type,
|
||||||
UnsignedLong value_length, BinaryReader& reader,
|
std::size_t value_length, BinaryReader& reader,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
bool serialiseProperty(UnrealPropertyBase::ptr& prop, UnsignedLong& bytes_written, BinaryWriter& writer,
|
bool serialiseProperty(UnrealPropertyBase::ptr& prop, std::size_t& bytes_written, BinaryWriter& writer,
|
||||||
PropertySerialiser& serialiser) override;
|
PropertySerialiser& serialiser) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,5 +29,5 @@ struct ColourStructProperty : public StructProperty {
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
structType = "LinearColor"_s;
|
structType = "LinearColor"_s;
|
||||||
}
|
}
|
||||||
Float r = 0.0f, g = 0.0f, b = 0.0f, a = 0.0f;
|
float r = 0.0f, g = 0.0f, b = 0.0f, a = 0.0f;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,12 +19,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "StructProperty.h"
|
#include "StructProperty.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct DateTimeStructProperty : public StructProperty {
|
struct DateTimeStructProperty : public StructProperty {
|
||||||
using ptr = Containers::Pointer<DateTimeStructProperty>;
|
using ptr = Containers::Pointer<DateTimeStructProperty>;
|
||||||
|
@ -34,5 +31,5 @@ struct DateTimeStructProperty : public StructProperty {
|
||||||
structType = "DateTime"_s;
|
structType = "DateTime"_s;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedLong timestamp = 0;
|
std::int64_t timestamp = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,14 +19,11 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "UnrealProperty.h"
|
#include "UnrealProperty.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct FloatProperty : public UnrealProperty<Float> {
|
struct FloatProperty : public UnrealProperty<float> {
|
||||||
using ptr = Containers::Pointer<FloatProperty>;
|
using ptr = Containers::Pointer<FloatProperty>;
|
||||||
|
|
||||||
FloatProperty() {
|
FloatProperty() {
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
|
|
||||||
struct IntProperty : public UnrealProperty<Int> {
|
struct IntProperty : public UnrealProperty<std::int32_t> {
|
||||||
using ptr = Containers::Pointer<IntProperty>;
|
using ptr = Containers::Pointer<IntProperty>;
|
||||||
|
|
||||||
IntProperty() {
|
IntProperty() {
|
||||||
|
|
|
@ -19,12 +19,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "StructProperty.h"
|
#include "StructProperty.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct ResourceItemValue : public StructProperty {
|
struct ResourceItemValue : public StructProperty {
|
||||||
using ptr = Containers::Pointer<ResourceItemValue>;
|
using ptr = Containers::Pointer<ResourceItemValue>;
|
||||||
|
@ -32,8 +29,12 @@ struct ResourceItemValue : public StructProperty {
|
||||||
ResourceItemValue() {
|
ResourceItemValue() {
|
||||||
using namespace Containers::Literals;
|
using namespace Containers::Literals;
|
||||||
structType = "sttResourceItemValue"_s;
|
structType = "sttResourceItemValue"_s;
|
||||||
structGuid = Containers::StaticArray<16, char>{'\xB7', '\xA7', '\x77', '\xAB', '\xD3', '\x1B', '\xA6', '\x43', '\xAF', '\x42', '\xE5', '\x9E', '\xBF', '\xFD', '\x37', '\x55'};
|
structGuid = Containers::StaticArray<16, char>{
|
||||||
|
'\xB7', '\xA7', '\x77', '\xAB', '\xD3', '\x1B', '\xA6', '\x43',
|
||||||
|
'\xAF', '\x42', '\xE5', '\x9E', '\xBF', '\xFD', '\x37', '\x55'
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Int id = 0, quantity = 0;
|
std::int32_t id = 0;
|
||||||
|
std::int32_t quantity = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,12 +19,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "StructProperty.h"
|
#include "StructProperty.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct RotatorStructProperty : public StructProperty {
|
struct RotatorStructProperty : public StructProperty {
|
||||||
using ptr = Containers::Pointer<RotatorStructProperty>;
|
using ptr = Containers::Pointer<RotatorStructProperty>;
|
||||||
|
@ -34,5 +31,5 @@ struct RotatorStructProperty : public StructProperty {
|
||||||
structType = "Rotator"_s;
|
structType = "Rotator"_s;
|
||||||
}
|
}
|
||||||
|
|
||||||
Float x = 0.0f, y = 0.0f, z = 0.0f;
|
float x = 0.0f, y = 0.0f, z = 0.0f;
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,14 +16,13 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
|
|
||||||
#include <Corrade/Containers/Optional.h>
|
#include <Corrade/Containers/Optional.h>
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/String.h>
|
#include <Corrade/Containers/String.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct UnrealPropertyBase {
|
struct UnrealPropertyBase {
|
||||||
using ptr = Containers::Pointer<UnrealPropertyBase>;
|
using ptr = Containers::Pointer<UnrealPropertyBase>;
|
||||||
|
@ -32,5 +31,5 @@ struct UnrealPropertyBase {
|
||||||
|
|
||||||
Containers::Optional<Containers::String> name = Containers::NullOpt;
|
Containers::Optional<Containers::String> name = Containers::NullOpt;
|
||||||
Containers::String propertyType;
|
Containers::String propertyType;
|
||||||
UnsignedLong valueLength = 0;
|
std::size_t valueLength = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,12 +19,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "StructProperty.h"
|
#include "StructProperty.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct Vector2DStructProperty : public StructProperty {
|
struct Vector2DStructProperty : public StructProperty {
|
||||||
using ptr = Containers::Pointer<Vector2DStructProperty>;
|
using ptr = Containers::Pointer<Vector2DStructProperty>;
|
||||||
|
@ -34,5 +31,5 @@ struct Vector2DStructProperty : public StructProperty {
|
||||||
structType = "Vector2D"_s;
|
structType = "Vector2D"_s;
|
||||||
}
|
}
|
||||||
|
|
||||||
Float x = 0.0f, y = 0.0f;
|
float x = 0.0f, y = 0.0f;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,12 +19,9 @@
|
||||||
#include <Corrade/Containers/Pointer.h>
|
#include <Corrade/Containers/Pointer.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "StructProperty.h"
|
#include "StructProperty.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct VectorStructProperty : public StructProperty {
|
struct VectorStructProperty : public StructProperty {
|
||||||
using ptr = Containers::Pointer<VectorStructProperty>;
|
using ptr = Containers::Pointer<VectorStructProperty>;
|
||||||
|
@ -34,5 +31,5 @@ struct VectorStructProperty : public StructProperty {
|
||||||
structType = "Vector"_s;
|
structType = "Vector"_s;
|
||||||
}
|
}
|
||||||
|
|
||||||
Float x = 0.0f, y = 0.0f, z = 0.0f;
|
float x = 0.0f, y = 0.0f, z = 0.0f;
|
||||||
};
|
};
|
||||||
|
|
|
@ -92,13 +92,13 @@ UESaveFile::saveToFile() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!writer.writeArray(arrayView(_magicBytes)) ||
|
if(!writer.writeArray(arrayView(_magicBytes)) ||
|
||||||
!writer.writeUnsignedInt(_saveVersion) ||
|
!writer.writeUint32(_saveVersion) ||
|
||||||
!writer.writeUnsignedInt(_packageVersion) ||
|
!writer.writeUint32(_packageVersion) ||
|
||||||
!writer.writeUnsignedShort(_engineVersion.major) ||
|
!writer.writeUint16(_engineVersion.major) ||
|
||||||
!writer.writeUnsignedShort(_engineVersion.minor) ||
|
!writer.writeUint16(_engineVersion.minor) ||
|
||||||
!writer.writeUnsignedShort(_engineVersion.patch) ||
|
!writer.writeUint16(_engineVersion.patch) ||
|
||||||
!writer.writeUnsignedInt(_engineVersion.build) ||
|
!writer.writeUint32(_engineVersion.build) ||
|
||||||
!writer.writeUEString(_engineVersion.buildId))
|
!writer.writeUEString(_engineVersion.buildId))
|
||||||
{
|
{
|
||||||
_lastError = "Couldn't write the header."_s;
|
_lastError = "Couldn't write the header."_s;
|
||||||
|
@ -106,17 +106,17 @@ UESaveFile::saveToFile() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!writer.writeUnsignedInt(_customFormatVersion) ||
|
if(!writer.writeUint32(_customFormatVersion) ||
|
||||||
!writer.writeUnsignedInt(_customFormatData.size()))
|
!writer.writeUint32(_customFormatData.size()))
|
||||||
{
|
{
|
||||||
_lastError = "Couldn't write the custom format data."_s;
|
_lastError = "Couldn't write the custom format data."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(UnsignedLong i = 0; i < _customFormatData.size(); i++) {
|
for(std::size_t i = 0; i < _customFormatData.size(); i++) {
|
||||||
if(!writer.writeStaticArray(Containers::StaticArrayView<16, const char>{_customFormatData[i].id}) ||
|
if(!writer.writeStaticArray(Containers::StaticArrayView<16, const char>{_customFormatData[i].id}) ||
|
||||||
!writer.writeUnsignedInt(_customFormatData[i].value))
|
!writer.writeUint32(_customFormatData[i].value))
|
||||||
{
|
{
|
||||||
_lastError = "Couldn't write the custom format data."_s;
|
_lastError = "Couldn't write the custom format data."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -131,7 +131,7 @@ UESaveFile::saveToFile() {
|
||||||
}
|
}
|
||||||
|
|
||||||
for(auto& prop : _properties) {
|
for(auto& prop : _properties) {
|
||||||
UnsignedLong bytes_written = 0;
|
std::size_t bytes_written = 0;
|
||||||
if(!_propSerialiser->write(prop, bytes_written, writer)) {
|
if(!_propSerialiser->write(prop, bytes_written, writer)) {
|
||||||
_lastError = "Couldn't write the property "_s + *prop->name + " to the array."_s;
|
_lastError = "Couldn't write the property "_s + *prop->name + " to the array."_s;
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
@ -145,7 +145,7 @@ UESaveFile::saveToFile() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.writeUnsignedInt(0);
|
writer.writeUint32(0u);
|
||||||
|
|
||||||
writer.closeFile();
|
writer.closeFile();
|
||||||
|
|
||||||
|
@ -197,12 +197,12 @@ UESaveFile::loadData() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!reader.readUnsignedInt(_saveVersion) ||
|
if(!reader.readUint32(_saveVersion) ||
|
||||||
!reader.readUnsignedInt(_packageVersion) ||
|
!reader.readUint32(_packageVersion) ||
|
||||||
!reader.readUnsignedShort(_engineVersion.major) ||
|
!reader.readUint16(_engineVersion.major) ||
|
||||||
!reader.readUnsignedShort(_engineVersion.minor) ||
|
!reader.readUint16(_engineVersion.minor) ||
|
||||||
!reader.readUnsignedShort(_engineVersion.patch) ||
|
!reader.readUint16(_engineVersion.patch) ||
|
||||||
!reader.readUnsignedInt(_engineVersion.build) ||
|
!reader.readUint32(_engineVersion.build) ||
|
||||||
!reader.readUEString(_engineVersion.buildId))
|
!reader.readUEString(_engineVersion.buildId))
|
||||||
{
|
{
|
||||||
_lastError = "Couldn't read version data.";
|
_lastError = "Couldn't read version data.";
|
||||||
|
@ -210,15 +210,15 @@ UESaveFile::loadData() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!reader.readUnsignedInt(_customFormatVersion)) {
|
if(!reader.readUint32(_customFormatVersion)) {
|
||||||
_lastError = "Couldn't read the custom format version.";
|
_lastError = "Couldn't read the custom format version.";
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsignedInt custom_format_data_size = 0;
|
std::uint32_t custom_format_data_size = 0;
|
||||||
|
|
||||||
if(!reader.readUnsignedInt(custom_format_data_size)) {
|
if(!reader.readUint32(custom_format_data_size)) {
|
||||||
_lastError = "Couldn't read the custom format data size.";
|
_lastError = "Couldn't read the custom format data size.";
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
return;
|
return;
|
||||||
|
@ -226,11 +226,11 @@ UESaveFile::loadData() {
|
||||||
|
|
||||||
_customFormatData = Containers::Array<CustomFormatDataEntry>{custom_format_data_size};
|
_customFormatData = Containers::Array<CustomFormatDataEntry>{custom_format_data_size};
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < custom_format_data_size; i++) {
|
for(std::uint32_t i = 0; i < custom_format_data_size; i++) {
|
||||||
CustomFormatDataEntry entry;
|
CustomFormatDataEntry entry;
|
||||||
|
|
||||||
if(!reader.readStaticArray(entry.id) ||
|
if(!reader.readStaticArray(entry.id) ||
|
||||||
!reader.readInt(entry.value))
|
!reader.readInt32(entry.value))
|
||||||
{
|
{
|
||||||
_lastError = "Couldn't read the custom format data";
|
_lastError = "Couldn't read the custom format data";
|
||||||
LOG_ERROR(_lastError);
|
LOG_ERROR(_lastError);
|
||||||
|
|
|
@ -23,14 +23,11 @@
|
||||||
#include <Corrade/Containers/String.h>
|
#include <Corrade/Containers/String.h>
|
||||||
#include <Corrade/Containers/StringView.h>
|
#include <Corrade/Containers/StringView.h>
|
||||||
|
|
||||||
#include <Magnum/Magnum.h>
|
|
||||||
|
|
||||||
#include "Types/UnrealPropertyBase.h"
|
#include "Types/UnrealPropertyBase.h"
|
||||||
|
|
||||||
#include "PropertySerialiser.h"
|
#include "PropertySerialiser.h"
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
class UESaveFile {
|
class UESaveFile {
|
||||||
public:
|
public:
|
||||||
|
@ -72,20 +69,20 @@ class UESaveFile {
|
||||||
|
|
||||||
Containers::StaticArray<4, char> _magicBytes{'G', 'V', 'A', 'S'};
|
Containers::StaticArray<4, char> _magicBytes{'G', 'V', 'A', 'S'};
|
||||||
|
|
||||||
UnsignedInt _saveVersion = 0;
|
std::uint32_t _saveVersion = 0;
|
||||||
UnsignedInt _packageVersion = 0;
|
std::uint32_t _packageVersion = 0;
|
||||||
struct {
|
struct {
|
||||||
UnsignedShort major = 0;
|
std::uint16_t major = 0;
|
||||||
UnsignedShort minor = 0;
|
std::uint16_t minor = 0;
|
||||||
UnsignedShort patch = 0;
|
std::uint16_t patch = 0;
|
||||||
UnsignedInt build = 0;
|
std::uint32_t build = 0;
|
||||||
Containers::String buildId;
|
Containers::String buildId;
|
||||||
} _engineVersion;
|
} _engineVersion;
|
||||||
|
|
||||||
UnsignedInt _customFormatVersion = 0;
|
std::uint32_t _customFormatVersion = 0;
|
||||||
struct CustomFormatDataEntry {
|
struct CustomFormatDataEntry {
|
||||||
Containers::StaticArray<16, char> id;
|
Containers::StaticArray<16, char> id;
|
||||||
Int value = 0;
|
std::int32_t value = 0;
|
||||||
};
|
};
|
||||||
Containers::Array<CustomFormatDataEntry> _customFormatData;
|
Containers::Array<CustomFormatDataEntry> _customFormatData;
|
||||||
|
|
||||||
|
|
|
@ -16,47 +16,47 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// 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 <cstdint>
|
||||||
|
|
||||||
#include <Corrade/Containers/ArrayView.h>
|
#include <Corrade/Containers/ArrayView.h>
|
||||||
#include <Corrade/Containers/StaticArray.h>
|
#include <Corrade/Containers/StaticArray.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
using namespace Corrade;
|
using namespace Corrade;
|
||||||
using namespace Magnum;
|
|
||||||
|
|
||||||
struct Crc32 {
|
namespace Crc32 {
|
||||||
static const Containers::StaticArray<256, UnsignedInt> table;
|
|
||||||
|
|
||||||
static auto update(UnsignedInt initial, Containers::ArrayView<const void> data) -> UnsignedInt {
|
std::uint32_t update(std::uint32_t initial, Containers::ArrayView<const void> data) {
|
||||||
UnsignedInt c = initial ^ 0xFFFFFFFF;
|
static const auto table = []{
|
||||||
auto u = Containers::arrayCast<const UnsignedByte>(data);
|
std::uint32_t polynomial = 0xEDB88320u;
|
||||||
|
Containers::StaticArray<256, std::uint32_t> temp{ValueInit};
|
||||||
|
|
||||||
for(std::size_t i = 0; i < data.size(); ++i) {
|
for(std::uint32_t i = 0; i < 256; i++) {
|
||||||
c = table[(c ^ u[i]) & 0xFF] ^ (c >> 8);
|
std::uint32_t c = i;
|
||||||
|
|
||||||
|
for(std::size_t j = 0; j < 8; j++) {
|
||||||
|
if(c & 1) {
|
||||||
|
c = polynomial ^ (c >> 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
c >>= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
temp[i] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
return c ^ 0xFFFFFFFF;
|
return temp;
|
||||||
}
|
}();
|
||||||
};
|
|
||||||
|
|
||||||
const Containers::StaticArray<256, UnsignedInt> Crc32::table = []{
|
std::uint32_t c = initial ^ 0xFFFFFFFF;
|
||||||
UnsignedInt polynomial = 0xEDB88320u;
|
|
||||||
Containers::StaticArray<256, UnsignedInt> temp{ValueInit};
|
|
||||||
|
|
||||||
for(UnsignedInt i = 0; i < 256; i++) {
|
auto u = Containers::arrayCast<const std::uint8_t>(data);
|
||||||
UnsignedInt c = i;
|
|
||||||
|
|
||||||
for(std::size_t j = 0; j < 8; j++) {
|
for(std::size_t i = 0; i < data.size(); ++i) {
|
||||||
if(c & 1) {
|
c = table[(c ^ u[i]) & 0xFF] ^ (c >> 8);
|
||||||
c = polynomial ^ (c >> 1);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
c >>= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
temp[i] = c;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return temp;
|
return c ^ 0xFFFFFFFF;
|
||||||
}();
|
}
|
||||||
|
|
||||||
|
} // Crc32
|
||||||
|
|
|
@ -81,7 +81,7 @@ int main(int argc, char** argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveTool app({argc, argv});
|
SaveTool app({argc, argv});
|
||||||
Int result = app.exec();
|
int result = app.exec();
|
||||||
|
|
||||||
ReleaseMutex(mutex_handle);
|
ReleaseMutex(mutex_handle);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue