940edac964
Add method to get the *total* patch size on disk
...
Apparently X-Patch-Length is only for the base repository, and so isn't
a reliable indicator. But it's pretty simple to add them all together to
get a close number.
2025-05-06 15:11:44 -04:00
f822aabb94
Fix more test breakages
2025-05-05 17:56:14 -04:00
62b13f557a
Early exit in GameData::parse_repository_category if no repositories are available
2025-05-05 17:19:39 -04:00
270eee992b
Check if boot version file exists before reading it
2025-05-05 17:15:16 -04:00
ceeb56fabe
Allow constructing invalid/empty BootData
...
For the same reasons as outlined wrt GameData in the previous commit.
2025-05-05 17:13:00 -04:00
a9a3538d85
Remove possibility of None from GameData::from_existing
...
This simplifes the handling of "new installs" in applications like
Astra, who may end up calling GameData::apply_patch on an "invalid"
GameData struct. We should allow applications to still hold onto these
so it keeps track of game_directory.
2025-05-05 17:07:49 -04:00
da094ea261
Fix patch length parsing, add tests for it
...
I don't know how this ever worked, but this was broken. I added checks
for it in the patchlist parsing so it doesn't break again.
2025-05-05 16:53:46 -04:00
5efa3c9663
Add EXD::get_row function
2025-04-28 23:36:51 -04:00
257f286990
Reduce fluff in README even more
2025-04-28 23:16:27 -04:00
8f7a6cc546
Simplify supported game versions in README
2025-04-28 23:11:22 -04:00
a6afff0d7a
Give patch_testing the same treatment as retail_testing
2025-04-28 23:05:20 -04:00
4725da2f3e
Remove unused hmac-sha512 dev-dependency
2025-04-28 23:03:03 -04:00
cf25a7f91f
Remove more launcher-only functions from Physis
...
These are now being moved to the separate Miscel library that can be
used standalone with Astra.
2025-04-28 22:58:51 -04:00
75a3eafaf2
Remove non-applicable comment on Language::None
2025-04-28 22:49:39 -04:00
6f0e85e143
Move dat to save data module
2025-04-28 22:48:45 -04:00
60493f8234
Remove custom string map functions in fiin parser
2025-04-28 22:46:11 -04:00
b7ab90e811
Fix Index2 parsing
...
This was a mess-up from a previous refactor, reading files from Index2
should work again!
2025-04-28 22:33:52 -04:00
475fa3b9aa
Add retail test for parsing Havok skeletons
2025-04-28 22:13:06 -04:00
a277131752
Allow skipping certain retail tests with FFXIV_IS_BENCHMARK env var
...
Benchmarks don't have item names, so there's no point in testing that
because it will always fail.
2025-04-28 22:05:15 -04:00
ebbb4c27d1
Add retail game test to find an item from the EXD sheet
2025-04-28 22:02:01 -04:00
e29e1bfde9
Revert some of the EXD reading changes to fix Item sheet parsing
2025-04-28 21:59:07 -04:00
3049014247
Rename integration_test to retail_test
...
Also make it use required-features instead of cfg attr'ing everything.
2025-04-28 21:49:41 -04:00
48a91b8418
Remove duplicate or not needed integration testing
2025-04-28 21:44:29 -04:00
6a09348af3
Update dependencies
2025-04-28 17:23:09 -04:00
fa2c2205da
Gloat about platform support in the README
2025-04-28 17:20:09 -04:00
e055bcce9b
Fix model test due to moved path
2025-04-28 17:18:45 -04:00
1e28c05f3a
Move log to save data module
2025-04-28 17:09:25 -04:00
da8bcf13c1
Move save data formats to their own module
...
I was struggling to think of a way to categorize these for a while, but
I believe these are referred to as "SaveData" internally. Anyway, that's
a good name!
2025-04-28 17:07:35 -04:00
61a24971c2
Move model stuff to it's own module
2025-04-28 16:57:02 -04:00
aae0055966
Add missing REUSE metadata
2025-04-28 16:54:02 -04:00
053cae89a2
Remove fluff from the README
2025-04-28 16:50:24 -04:00
26c4041b68
Refactor EXD parsing, begin adding write support
2025-04-28 16:42:32 -04:00
cdc39ad4b6
Partial map write support ( #9 )
...
This adds initial support for writing new/modified maps, which are made up of layer groups (LGB) and terrain (TERA). Neither one is really tested yet, but I started checking some simple examples and it seems to work.
2025-04-13 18:34:18 -04:00
d2e724227b
Add missing REUSe metadata
2025-03-31 16:11:23 -04:00
99238d9b5a
Add TryFrom implementations for Race, Tribe, Gender
2025-03-31 16:04:28 -04:00
06e1bb0ead
Improve race documentation a bit
2025-03-31 15:46:19 -04:00
49698c7f21
Check for invalid race/tribe combinations in get_race_id
2025-03-31 15:42:56 -04:00
baf0df4858
Rename "Subrace" to "Tribe"
...
Everything uses this terminology, from other projects to the game itself
(internally and in the UI.)
2025-03-31 15:38:42 -04:00
50ea4dde40
Begin Race and Subrace enums at 1
...
This simplifies charsave parsing and will be useful in other projects
like Kawari.
2025-03-31 15:33:57 -04:00
a34361b956
Try to reject erreonous planner.lgb files
2025-03-28 22:09:39 -04:00
eee7d5867f
Add some derives for ColumnDataType
2025-03-23 19:41:19 -04:00
8c7ba051ed
Add repr(C) to ColumnDataType
2025-03-23 19:38:03 -04:00
c6baabd404
Remove repr(C) from CharacterData
2025-03-23 19:28:14 -04:00
9fb0655ac5
Expose Hash struct
2025-03-23 19:21:03 -04:00
2db0717141
Fix EXD test
2025-03-23 18:40:44 -04:00
020480e82c
Make unknown_a & unknown_b fields of PatchEntry public
2025-03-17 17:36:12 -04:00
d3918c1382
Actually use row ids in EXD files
...
I'm an idiot, these row ids are here for a reason and are important for actually
reading Excel sheets. The API has changed to a read_row() function that takes a
row id, and I'll improve it before release.
2025-03-15 21:40:34 -04:00
3273070cef
Make more layer-related types public
2025-03-15 17:47:29 -04:00
bf0fb97d7c
Add missing REUSE metadata to new files
2025-03-15 17:40:25 -04:00
f8db40d74d
Improve layer group parsing (lgb files)
...
I guessed the name, it's more like a collection of layers. This actually fixes a
bunch of mistakes (on my part) as I copied the layout from Lumina, but added a
few changes to make it work with modern zones. There's a whole lot more work
here to do, but now it works to parse New & Old Gridania.
2025-03-15 17:38:54 -04:00