Build viewer/editor #13

Manually merged
williamjcm merged 128 commits from mass-viewer into master 2022-03-02 14:50:10 +01:00

128 Commits

Author SHA1 Message Date
Guillaume Jacquemin f522d20dd4 SaveTool: fragment SaveTool_MassViewer.cpp.
This will make maintenance easier. I hope.
2022-03-02 14:43:02 +01:00
Guillaume Jacquemin 6208825aa6 Mass: fix a bug that prevented global styles from being read. 2022-03-02 14:10:13 +01:00
Guillaume Jacquemin 572585e648 SaveTool: optimise code readability.
...mostly for Clang/CLion. :D
2022-03-02 11:46:31 +01:00
Guillaume Jacquemin de2ba9ce7f Mass(Manager),SaveTool: improve error handling. 2022-02-26 14:48:45 +01:00
Guillaume Jacquemin d0ddc73852 Profile: fix a compile error. 2022-02-25 21:00:32 +01:00
Guillaume Jacquemin a1c17b7138 Profile(Manager),SaveTool: improve error handling and fix bugs. 2022-02-24 14:00:47 +01:00
Guillaume Jacquemin 350ad59f8e SaveTool: add a convenience wrapper over ImGui stuff. 2022-02-23 21:59:00 +01:00
Guillaume Jacquemin 883d5d3f41 Mass,SaveTool: improve error handling. 2022-02-23 15:47:34 +01:00
Guillaume Jacquemin 77d7eaefad SaveTool: fix a condition. 2022-02-23 10:18:58 +01:00
Guillaume Jacquemin 82170b3078 Mass,SaveTool: optimise the effect colour mode. 2022-02-17 20:22:33 +01:00
Guillaume Jacquemin 88abf91047 Mass,SaveTool: add some future-proofing. 2022-02-17 20:01:59 +01:00
Guillaume Jacquemin 955ec010b8 Crc32: make the polynomial literal explicitly unsigned. 2022-02-16 11:48:39 +01:00
Guillaume Jacquemin 7cb9ea28b2 BinaryReader: add a way to read arbitrary types. 2022-02-16 11:47:49 +01:00
Guillaume Jacquemin 975f471a68 BinaryReader: add a way to seek into the file. 2022-02-14 09:31:20 +01:00
Guillaume Jacquemin 76210e147a BinaryWriter: add a way to access the temp array.
That way, I'll be able to easily compute the CRC32 of it.
2022-02-13 15:09:07 +01:00
Guillaume Jacquemin 5e06c48492 BinaryWriter: fix an issue with writeValueToArray().
The view needs to be of type T, not U (which can potentially be T&).
2022-02-13 15:03:45 +01:00
Guillaume Jacquemin 2ff32c4c78 Add a CRC32 algorithm. 2022-02-13 15:02:08 +01:00
Guillaume Jacquemin 4000421a8c Mass,SaveTool: refactor even more code. 2022-02-13 10:31:55 +01:00
Guillaume Jacquemin 8f1e3668a3 BinaryWriter: allow writing string literals. 2022-02-12 11:21:23 +01:00
Guillaume Jacquemin a6c0614979 BinaryWriter: make non-copyable. 2022-02-11 19:44:16 +01:00
Guillaume Jacquemin 2cabe6a3ba MassManager: adapt to Mass changes.
Should have caught it earlier. Ugh.
2022-02-11 18:31:45 +01:00
Guillaume Jacquemin afc163f344 Mass: rename a member.
SteamIDs aren't used anymore in 0.8+ save files.
2022-02-09 20:16:14 +01:00
Guillaume Jacquemin 353a71d8ab Weapon: remove an unneeded blank line. 2022-02-09 18:28:23 +01:00
Guillaume Jacquemin bbc40d7c93 Weapon: update formatting. 2022-02-09 18:12:11 +01:00
Guillaume Jacquemin 28db82c8a9 Weapon,Mass,SaveTool: refactor some more code. 2022-02-09 14:17:05 +01:00
Guillaume Jacquemin 9f324c30fd Delete WeaponTypes.h.
It's not needed anymore.
2022-02-09 13:54:44 +01:00
Guillaume Jacquemin 41cd92352d Mass: refactor and optimise some parts. 2022-02-09 13:41:55 +01:00
Guillaume Jacquemin 940fe3feee SaveTool: implement weapon copying. 2022-01-30 14:04:22 +01:00
Guillaume Jacquemin d74a7bc219 Mass: make Weapon copyable.
This is necessary to add weapon copying.
2022-01-30 14:02:30 +01:00
Guillaume Jacquemin 51faed7210 Update copyright years.
I should have done that earlier... and of course I forgot a few files...
2022-01-30 11:38:22 +01:00
Guillaume Jacquemin 8fb837bfc0 SaveTool: finish implementing weapon reordering. 2022-01-30 09:48:14 +01:00
Guillaume Jacquemin 0ac1e759ca Profile(Manager),SaveTool: prepare for legacy/normal distinction. 2022-01-20 19:42:27 +01:00
Guillaume Jacquemin a4045e8e9b Add a few IDs to maps. 2022-01-20 11:39:36 +01:00
Guillaume Jacquemin 1ec4522baf SaveTool: make the clickthrough hint have priority. 2022-01-15 13:26:12 +01:00
Guillaume Jacquemin 13d09e4aa0 SaveTool: prepare for the better import/export system. 2022-01-15 11:31:33 +01:00
Guillaume Jacquemin ed0c4a73bb SaveTool: mark profiles as "legacy" in the manager.
I'll probably have to redesign that whole part of the UI anyway, so...
2022-01-15 11:31:06 +01:00
Guillaume Jacquemin 8102d1d83a SaveTool: improve the ShellExecuteW call. 2022-01-15 11:30:12 +01:00
Guillaume Jacquemin 9a9c08391a SaveTool: change how story progress is handled. 2022-01-15 11:01:11 +01:00
Guillaume Jacquemin 51602c713a SaveTool: update layout. 2022-01-14 13:42:09 +01:00
Guillaume Jacquemin 1621a4dbd5 SaveTool: move M.A.S.S. viewer state tracking.
That way, it's easier to reset. Some states, such as the current tab or
which headers are open/collapsed, are internal to ImGui, though, so I
can't do much there. Well, I could use the internal ImGui API, but, it's
still a pain in the ass.
2022-01-14 13:22:51 +01:00
Guillaume Jacquemin 7fb269f862 SaveTool: change viewer window ID. 2022-01-07 09:35:32 +01:00
Guillaume Jacquemin 1378676bbc SaveTool: fix old code. 2022-01-03 12:46:13 +01:00
Guillaume Jacquemin 96768c1aab SaveTool: add a conversion operator. 2022-01-03 12:10:20 +01:00
Guillaume Jacquemin bd05a98820 SaveTool: make pre-releases considered up-to-date if they're more recent than the latest stable. 2022-01-03 11:56:34 +01:00
Guillaume Jacquemin 7059295cb3 Strip the release executable.
For *some* reason, there's debug info in one of the MinGW-w64 libs,
which account for roughly half the bloat of the release exe.
2021-12-03 00:14:22 +01:00
Guillaume Jacquemin 065e63f27c SaveTool: skip prereleases in update check. 2021-12-02 20:37:47 +01:00
Guillaume Jacquemin a05f3eeed0 Prepare the pre-release. 2021-12-02 20:12:54 +01:00
Guillaume Jacquemin 321e8feed0 SaveTool: change how versions are evaluated.
This allows pre-releases and beta versions to be considered out of date
once complete versions are released.
2021-12-02 19:52:26 +01:00
Guillaume Jacquemin c6de9c1940 SaveTool: finish most of the M.A.S.S. viewer.
Some parts are very unfinished, but do work.
2021-12-02 19:23:28 +01:00
Guillaume Jacquemin fe0db983ce Mass: add tuning reading support.
Writing support SOON™.
2021-12-02 15:27:00 +01:00
Guillaume Jacquemin bd8ff47f1e Mass: fix data ordering issue with joint sliders. 2021-11-01 11:19:34 +01:00
Guillaume Jacquemin 83fa5822bf MassManager: fix bugs in path handling. 2021-11-01 09:40:33 +01:00
Guillaume Jacquemin 8d87cdd619 Mass: fix a check. 2021-10-29 14:41:52 +02:00
Guillaume Jacquemin 0900f92b9f Mass: finish implementing the saving feature.
Oh, and also remove a blank line, but that's not important.
2021-10-29 10:23:34 +02:00
Guillaume Jacquemin af71806e13 Mass: finish getWeaponType(). 2021-10-18 14:54:28 +02:00
Guillaume Jacquemin 247578a386 Mass: add getDecals() and getAccessories(). 2021-10-18 14:54:04 +02:00
Guillaume Jacquemin 4ca6f62d9b Mass: remove as many hardcoded values as possible. 2021-10-17 15:29:16 +02:00
Guillaume Jacquemin e461d5a505 Mass: add getCustomStyles(); 2021-10-17 15:28:54 +02:00
Guillaume Jacquemin d79debe69f Mass: change how setCustomStyle() works.
This'll allow usage with weapon styles.
2021-10-17 10:52:57 +02:00
Guillaume Jacquemin 83fe02a8dc Mass: improve readability and reliability. 2021-10-17 09:24:44 +02:00
Guillaume Jacquemin 7e452db3a4 Mass: improve readability. 2021-10-17 08:44:23 +02:00
Guillaume Jacquemin 80bb85c0d8 Mass: add weapon reading.
Writing will come SOON™.
2021-10-17 08:37:12 +02:00
Guillaume Jacquemin 4df90efd67 Mass: rename a field. 2021-10-16 11:36:31 +02:00
Guillaume Jacquemin b92c37e4b6 Mass: fix another bug with importing. 2021-10-14 15:06:03 +02:00
Guillaume Jacquemin dd460b4313 MassManager: fix a bug with importing. 2021-10-13 14:49:31 +02:00
Guillaume Jacquemin 05a2b1cfb0 SaveTool: change a drag widget to a slider. 2021-10-12 16:53:19 +02:00
Guillaume Jacquemin 8fedbdd4e5 Add armour sets and slots maps. 2021-10-12 16:52:40 +02:00
Guillaume Jacquemin 3ac5288f12 Mass: prepare decals for edition. 2021-10-12 16:35:49 +02:00
Guillaume Jacquemin 8bae723018 Mass: finish implementing armour part support. 2021-10-11 17:17:14 +02:00
Guillaume Jacquemin 3714162b50 UnrealPropertyBase: initialise valueLength. 2021-10-05 10:31:06 +02:00
Guillaume Jacquemin a22aa6f7ae Mass: update CustomStyle default values to match game. 2021-10-05 10:10:18 +02:00
Guillaume Jacquemin d03e75a8e9 Mass: not all parts can have 8 decals in the demo.
For now, at least. Just like the code that treats a lack of global
styles as a demo thing, I'll remove it in due time.
2021-10-05 10:03:52 +02:00
Guillaume Jacquemin 4429e581f3 Mass: reorganise a whole chunk of code. 2021-10-04 18:18:53 +02:00
Guillaume Jacquemin 2d0d5817f2 SaveTool: add a basic guide to the help menu. 2021-10-04 18:18:20 +02:00
Guillaume Jacquemin bfe9a2c3a8 Profile: fix a crash that happens when restoring a backup. 2021-10-04 18:17:51 +02:00
Guillaume Jacquemin 8c81b7811b Mass: add support for reading armour parts. 2021-10-03 16:32:47 +02:00
Guillaume Jacquemin 0904384e0d SaveTool: fixed a condition for drag and dropping builds. 2021-10-03 00:14:07 +02:00
Guillaume Jacquemin 6f3da0b4a7 Mass: add some sanity checks. 2021-10-02 19:23:35 +02:00
Guillaume Jacquemin 19c00a3ce3 Mass: rename Armour to ArmourPart.
This is more consistent with WeaponPart, which designates a part of the
full weapon.
2021-10-02 19:22:52 +02:00
Guillaume Jacquemin 79762e176e Mass: add (partial) support for custom style edition. 2021-10-02 14:52:48 +02:00
Guillaume Jacquemin b5b5b3b38c Mass: rename some members. 2021-10-02 14:51:39 +02:00
Guillaume Jacquemin e4cfd3834a Mass: update CustomStyle. 2021-09-29 11:07:10 +02:00
Guillaume Jacquemin e77cce5b42 Mass: add missing value to CustomStyle. 2021-09-27 21:55:05 +02:00
Guillaume Jacquemin 18aa7f659e SaveTool: move the tw macro so all SaveTool files can use it. 2021-09-27 20:51:48 +02:00
Guillaume Jacquemin 1612e4372b SaveTool: make the file watcher less aggressive. 2021-09-27 20:50:37 +02:00
Guillaume Jacquemin b377e0de6c Mass: add a missing variable to CustomStyle. 2021-09-27 20:50:03 +02:00
Guillaume Jacquemin 0a438a4d72 MassManager: adapt to Mass changes. 2021-09-27 17:54:42 +02:00
Guillaume Jacquemin e839d1c19b SaveTool: adapt to Mass changes. 2021-09-27 17:54:30 +02:00
Guillaume Jacquemin 5689ec6c1a SaveTool: adapt to Profile changes. 2021-09-27 17:53:56 +02:00
Guillaume Jacquemin c2d0fbd941 Mass: adapt to UESaveFile. 2021-09-27 17:52:47 +02:00
Guillaume Jacquemin 2b2320ae0a UESaveFile: clear properties when reloading data. 2021-09-27 16:21:39 +02:00
Guillaume Jacquemin 10368e09db Profile: add default values for some members. 2021-09-27 16:18:03 +02:00
Guillaume Jacquemin bd255ef8d5 Profile: ensure (in)validity. 2021-09-27 16:17:32 +02:00
Guillaume Jacquemin 911e18fc0a UESaveFile: add a few sanity things. 2021-09-27 16:16:47 +02:00
Guillaume Jacquemin 0c257bcfa6 GenericStructProperty: remove a redundant function. 2021-09-25 15:46:01 +02:00
Guillaume Jacquemin 9bc4aaf66b Profile: add data caching.
Querying the properties each frame isn't performant because of all the
casts and pointer indirections.
2021-09-24 21:51:06 +02:00
Guillaume Jacquemin 79e3193309 ArrayProperty: update at() to cast as well. 2021-09-23 21:54:59 +02:00
Guillaume Jacquemin 76e36791d7 Profile: remove Locators.h.
It's not needed anymore.
2021-09-23 19:11:08 +02:00
Guillaume Jacquemin 50a7b1d7f0 Profile: adapt to UESaveFile.
Also change ProfileManager to use growable arrays instead of vectors.
2021-09-23 19:01:42 +02:00
Guillaume Jacquemin 1caa472833 UESaveFile: add more error messages. 2021-09-23 18:25:28 +02:00
Guillaume Jacquemin d3d065c945 StructSerialiser: fix serialisation of array'd structs.
Not all of them are generic structs, after all.
2021-09-23 18:24:55 +02:00
Guillaume Jacquemin b8b156a724 Add a serialiser for struct sttResourceItemValue. 2021-09-23 15:09:18 +02:00
Guillaume Jacquemin 9c1aeb753e UESaveFile: add API to append a property. 2021-09-23 15:08:20 +02:00
Guillaume Jacquemin 0006c90a21 UESaveFile: add sanity check when reading files. 2021-09-23 15:07:29 +02:00
Guillaume Jacquemin 0826d4aede UESaveFile: close the file after we're done writing to it. 2021-09-22 21:50:39 +02:00
Guillaume Jacquemin b3220ca8e1 MapPropertySerialiser: fix serialisation of demo saves. 2021-09-22 21:50:08 +02:00
Guillaume Jacquemin 48210c7186 UESaveFile: prevent reloading data on save. 2021-09-22 19:46:41 +02:00
Guillaume Jacquemin f500e982e6 MapPropertySerialiser: add support for demo props. 2021-09-22 19:35:16 +02:00
Guillaume Jacquemin 2e1949ed5d BytePropertySerialiser: add support for demo props. 2021-09-22 19:16:33 +02:00
Guillaume Jacquemin 10becfdc31 PropertySerialiser: add an explicit cast. 2021-09-22 18:25:15 +02:00
Guillaume Jacquemin f286ec0633 UESaveFile,GenericStructProperty: update at(). 2021-09-22 18:23:16 +02:00
Guillaume Jacquemin ce29d6174c UESaveFile: allow the class to be moved. 2021-09-22 18:22:48 +02:00
Guillaume Jacquemin de07b760d0 Add UESaveFile. 2021-09-22 17:37:50 +02:00
Guillaume Jacquemin 66d96bd893 SaveTool: update formatting. 2021-09-22 10:47:23 +02:00
Guillaume Jacquemin 083b60aac4 Update dependencies. 2021-09-19 13:09:04 +02:00
Guillaume Jacquemin 918b26ab5e SaveTool: add some frame info display. 2021-09-10 16:16:21 +02:00
Guillaume Jacquemin 32bc179120 SaveTool: change an include.
The old one works on my setup, but might not work on others.
2021-09-10 16:15:27 +02:00
Guillaume Jacquemin c64684b34c StyleNames: add placeholders for custom/global style names. 2021-09-10 16:14:31 +02:00
Guillaume Jacquemin 40840e3128 Mass: add support for reading joint sliders. 2021-09-10 16:13:29 +02:00
Guillaume Jacquemin c7c379c419 SaveTool: adapt main manager to Mass changes. 2021-08-29 19:39:29 +02:00
Guillaume Jacquemin a9a5bfb2af SaveTool: add basic skeleton for the M.A.S.S. viewer. 2021-08-28 21:03:06 +02:00
Guillaume Jacquemin 5f4576a2bc SaveTool: improve readability of the header. 2021-08-28 20:57:06 +02:00
Guillaume Jacquemin f3318e0ed1 SaveTool: add safety measures in drawMassViewer(). 2021-08-28 20:22:04 +02:00
Guillaume Jacquemin 7fcf8b518e Mass: add functions to read/write frame styles. 2021-08-28 20:21:13 +02:00
Guillaume Jacquemin 69021eacdf Mass: change how the name is obtained, and move the state enum. 2021-08-28 20:20:09 +02:00
Guillaume Jacquemin bd6e55826d Add StyleNames.h. 2021-08-28 20:16:19 +02:00
Guillaume Jacquemin 597e9dfe98 SaveTool: initial work for the viewer UI. 2021-08-19 20:35:00 +02:00
Guillaume Jacquemin 4cdd1b35ec Mass(Manager): rework to prepare for the viewer. 2021-08-19 20:34:37 +02:00