diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5281f8d..e54cc44 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
# MassBuilderSaveTool
-# Copyright (C) 2021 Guillaume Jacquemin
+# Copyright (C) 2021-2022 Guillaume Jacquemin
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ad2ac6a..6e8d616 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
# MassBuilderSaveTool
-# Copyright (C) 2021 Guillaume Jacquemin
+# Copyright (C) 2021-2022 Guillaume Jacquemin
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@ set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
-set(SAVETOOL_PROJECT_VERSION 1.2.0)
+set(SAVETOOL_PROJECT_VERSION 1.3.0-pre)
find_package(Corrade REQUIRED Main Containers Utility Interconnect)
find_package(Magnum REQUIRED GL Sdl2Application)
@@ -28,6 +28,86 @@ set_directory_properties(PROPERTIES CORRADE_USE_PEDANTIC_FLAGS ON)
corrade_add_resource(Assets assets.conf)
+add_library(UESaveFile STATIC EXCLUDE_FROM_ALL
+ UESaveFile/Serialisers/AbstractUnrealCollectionPropertySerialiser.h
+ UESaveFile/Serialisers/AbstractUnrealPropertySerialiser.h
+ UESaveFile/Serialisers/AbstractUnrealStructSerialiser.h
+ UESaveFile/Serialisers/ArrayPropertySerialiser.h
+ UESaveFile/Serialisers/ArrayPropertySerialiser.cpp
+ UESaveFile/Serialisers/BoolPropertySerialiser.h
+ UESaveFile/Serialisers/BoolPropertySerialiser.cpp
+ UESaveFile/Serialisers/BytePropertySerialiser.h
+ UESaveFile/Serialisers/BytePropertySerialiser.cpp
+ UESaveFile/Serialisers/ColourPropertySerialiser.h
+ UESaveFile/Serialisers/ColourPropertySerialiser.cpp
+ UESaveFile/Serialisers/DateTimePropertySerialiser.h
+ UESaveFile/Serialisers/DateTimePropertySerialiser.cpp
+ UESaveFile/Serialisers/EnumPropertySerialiser.h
+ UESaveFile/Serialisers/EnumPropertySerialiser.cpp
+ UESaveFile/Serialisers/FloatPropertySerialiser.h
+ UESaveFile/Serialisers/FloatPropertySerialiser.cpp
+ UESaveFile/Serialisers/GuidPropertySerialiser.h
+ UESaveFile/Serialisers/GuidPropertySerialiser.cpp
+ UESaveFile/Serialisers/IntPropertySerialiser.h
+ UESaveFile/Serialisers/IntPropertySerialiser.cpp
+ UESaveFile/Serialisers/MapPropertySerialiser.h
+ UESaveFile/Serialisers/MapPropertySerialiser.cpp
+ UESaveFile/Serialisers/ResourcePropertySerialiser.h
+ UESaveFile/Serialisers/ResourcePropertySerialiser.cpp
+ UESaveFile/Serialisers/RotatorPropertySerialiser.h
+ UESaveFile/Serialisers/RotatorPropertySerialiser.cpp
+ UESaveFile/Serialisers/StringPropertySerialiser.h
+ UESaveFile/Serialisers/StringPropertySerialiser.cpp
+ UESaveFile/Serialisers/SetPropertySerialiser.h
+ UESaveFile/Serialisers/SetPropertySerialiser.cpp
+ UESaveFile/Serialisers/StructSerialiser.h
+ UESaveFile/Serialisers/StructSerialiser.cpp
+ UESaveFile/Serialisers/TextPropertySerialiser.h
+ UESaveFile/Serialisers/TextPropertySerialiser.cpp
+ UESaveFile/Serialisers/UnrealPropertySerialiser.h
+ UESaveFile/Serialisers/VectorPropertySerialiser.h
+ UESaveFile/Serialisers/VectorPropertySerialiser.cpp
+ UESaveFile/Serialisers/Vector2DPropertySerialiser.h
+ UESaveFile/Serialisers/Vector2DPropertySerialiser.cpp
+
+ UESaveFile/Types/ArrayProperty.h
+ UESaveFile/Types/BoolProperty.h
+ UESaveFile/Types/ByteProperty.h
+ UESaveFile/Types/ColourStructProperty.h
+ UESaveFile/Types/DateTimeStructProperty.h
+ UESaveFile/Types/EnumProperty.h
+ UESaveFile/Types/FloatProperty.h
+ UESaveFile/Types/GenericStructProperty.h
+ UESaveFile/Types/GuidStructProperty.h
+ UESaveFile/Types/IntProperty.h
+ UESaveFile/Types/MapProperty.h
+ UESaveFile/Types/NoneProperty.h
+ UESaveFile/Types/RotatorStructProperty.h
+ UESaveFile/Types/SetProperty.h
+ UESaveFile/Types/StringProperty.h
+ UESaveFile/Types/StructProperty.h
+ UESaveFile/Types/ResourceItemValue.h
+ UESaveFile/Types/TextProperty.h
+ UESaveFile/Types/UnrealProperty.h
+ UESaveFile/Types/UnrealPropertyBase.h
+ UESaveFile/Types/VectorStructProperty.h
+
+ UESaveFile/Debug.h
+ UESaveFile/Debug.cpp
+ UESaveFile/UESaveFile.h
+ UESaveFile/UESaveFile.cpp
+ UESaveFile/BinaryReader.h
+ UESaveFile/BinaryReader.cpp
+ UESaveFile/BinaryWriter.h
+ UESaveFile/BinaryWriter.cpp
+ UESaveFile/PropertySerialiser.h
+ UESaveFile/PropertySerialiser.cpp)
+
+target_link_libraries(UESaveFile PRIVATE
+ Corrade::Containers
+ Corrade::Utility
+ Magnum::Magnum)
+
add_executable(MassBuilderSaveTool WIN32
main.cpp
SaveTool/SaveTool.h
@@ -35,19 +115,40 @@ add_executable(MassBuilderSaveTool WIN32
SaveTool/SaveTool_drawAbout.cpp
SaveTool/SaveTool_drawMainMenu.cpp
SaveTool/SaveTool_MainManager.cpp
+ SaveTool/SaveTool_MassViewer.cpp
+ SaveTool/SaveTool_MassViewer_Frame.cpp
+ SaveTool/SaveTool_MassViewer_Armour.cpp
+ SaveTool/SaveTool_MassViewer_Weapons.cpp
SaveTool/SaveTool_ProfileManager.cpp
ProfileManager/ProfileManager.h
ProfileManager/ProfileManager.cpp
Profile/Profile.h
Profile/Profile.cpp
+ Profile/ResourceIDs.h
MassManager/MassManager.h
MassManager/MassManager.cpp
+ Mass/Accessory.h
+ Mass/ArmourPart.h
+ Mass/CustomStyle.h
+ Mass/Decal.h
+ Mass/Joints.h
Mass/Mass.h
Mass/Mass.cpp
+ Mass/Weapon.h
+ Mass/Weapon.cpp
+ Mass/WeaponPart.h
+ Maps/Accessories.h
+ Maps/ArmourSets.h
+ Maps/ArmourSlots.hpp
+ Maps/DamageTypes.hpp
+ Maps/EffectColourModes.hpp
Maps/LastMissionId.h
Maps/StoryProgress.h
+ Maps/StyleNames.h
+ Maps/WeaponTypes.hpp
ToastQueue/ToastQueue.h
ToastQueue/ToastQueue.cpp
+ Utilities/Crc32.h
FontAwesome/IconsFontAwesome5.h
FontAwesome/IconsFontAwesome5Brands.h
resource.rc
@@ -57,7 +158,7 @@ if(CMAKE_BUILD_TYPE STREQUAL Debug)
add_compile_definitions(SAVETOOL_DEBUG_BUILD)
endif()
add_compile_definitions(SAVETOOL_VERSION="${SAVETOOL_PROJECT_VERSION}"
- SAVETOOL_CODENAME="Cute Quindolia"
+ SAVETOOL_CODENAME="Dickish Cyclops"
SUPPORTED_GAME_VERSION="0.7.6")
if(CMAKE_BUILD_TYPE STREQUAL Release)
@@ -66,6 +167,10 @@ endif()
target_link_options(MassBuilderSaveTool PRIVATE -static -static-libgcc -static-libstdc++)
+if(CMAKE_BUILD_TYPE STREQUAL Release)
+ target_link_options(MassBuilderSaveTool PRIVATE -Wl,-S)
+endif()
+
target_link_libraries(MassBuilderSaveTool PRIVATE
Corrade::Containers
Corrade::Utility
@@ -75,6 +180,7 @@ target_link_libraries(MassBuilderSaveTool PRIVATE
Magnum::GL
Magnum::Sdl2Application
MagnumIntegration::ImGui
+ UESaveFile
efsw
zip
cpr::cpr
diff --git a/src/Maps/Accessories.h b/src/Maps/Accessories.h
new file mode 100644
index 0000000..3f41ccc
--- /dev/null
+++ b/src/Maps/Accessories.h
@@ -0,0 +1,74 @@
+#pragma once
+
+// MassBuilderSaveTool
+// Copyright (C) 2021-2022 Guillaume Jacquemin
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+#include