1
Fork 0
mirror of https://github.com/redstrate/Physis.git synced 2025-04-20 03:37:47 +00:00
Commit graph

531 commits

Author SHA1 Message Date
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
4269d41179 Implement Default for CustomizeData 2025-03-13 00:08:03 -04:00
0f631ca749 Derive Clone in CustomizeData 2025-03-13 00:05:14 -04:00
b61c3383b3 Add DatHeader so we can read gear sets without libxivdat
This is limited to just that one dat type for now, but we can expand it as we
add more parsers.
2025-03-11 17:45:00 -04:00
ed7618a5fa Remove installer.rs that was supposed to be removed 2025-03-11 17:18:26 -04:00
87e3423e40 Move blowfish stuff into it's own module
This cleans up the big src folder we have, this doesn't have any API changes
though.
2025-03-11 17:17:31 -04:00
b54ee74802 Re-arrange SqPack-related formats into their own submodule
This is to make way for another dat module (for the stuff under the user
folder.) This kind of re-organization was inevitable anyway, and I gave the
structs new SqPack-y names to fit their new home.
2025-03-11 17:15:10 -04:00
591c5f55ed Add zlib license to deny.toml 2025-03-11 16:51:53 -04:00
153f21257a Remove references to old features on the CI 2025-03-11 16:47:30 -04:00
d58a216462 Shrink the dependency and feature complexity, auto-cleanup and more
We had a few odd dependencies that caused nothing but pain in dependent projects
like libphysis. One of these was libunshield (a C library) that our game_install
feature used, but to be honest this was the wrong library to put this code. It
was really only ever used by Astra, and should live there instead - there's no
reason to have it shared between applications (and it's small enough to be
copied if *you* need it.) Also that also killed the system-deps dependency which
had a significant impact on our build time.

Another dependency was replaced: libz-sys. This is replaced by the pure Rust
libz-rs (through libz-rs-sys) which should simplify deploying physis without
having to worry about manually linking libz or other nonsense. Some leftover
copied code from flate2 can also be removed.

I also removed the visual_data feature as Astra ended up using it anyway, and
the distinction doesn't make much sense now. It was previously to gate some
dependencies needed for visual data extraction, but the bitflags and half crates
are small. I can look into splitting the crate up into more features if needed
later.

A dependency that was erroneously included in the refactoring was quote, which
has been removed. Also ran cargo fmt, clippy too.
2025-03-11 16:29:24 -04:00
Louis Brunner
5378d72ccf
feat: add GEARSET.DAT parsing (only content, it needs libxivdat to parse the wrapper) (#7)
* feat: add GEARSET.DAT parsing (only content, it needs libxivdat to parse the wrapper)

* add copyring for reuse
2025-03-10 19:53:47 -04:00
fecb21cf88 Make comment field public 2025-03-10 18:08:30 -04:00
633c18e2f4 Fix bullet point list in README 2025-03-10 17:16:56 -04:00
3da2aa39c1 Vendor what we need from texture2ddecoder
This recently tripped up cargo-deny because it depends on paste. I looked at it
and the parts that we need (a few BCn decoding functions) has only one place
where it's used and can easily be replaced.
2025-03-10 17:15:14 -04:00
24ace3370e Change license used for unicode-ident 2025-03-10 16:57:28 -04:00
d5747593ac Update crate description 2025-03-10 15:58:00 -04:00
d4a40ee865 Update saved character data support in the README 2025-03-10 15:51:56 -04:00
ad700b661a Mark extern block as unsafe 2025-03-10 15:51:11 -04:00
7720da9b5e Remove funding information 2025-03-10 15:50:00 -04:00
af0d34c011 Extract max comment length into a constant 2025-03-08 13:14:14 -05:00
f89eed5dc6 Calculate the correct checksum when writing character saved data 2025-03-08 13:12:08 -05:00
445a90a0fa Fix write support for character appearance data, add test 2025-03-08 11:34:16 -05:00
b8cc68eb30 Fixup various issues with the character appearance data reading, add tests
I had multiple fields on this wrong, add comment support and tests to ensure
everything is still ship shape.
2025-03-08 11:27:22 -05:00
105c4dbb41 Clarify support for each patch series 2025-03-08 11:07:01 -05:00
f307e48a0c Add support for reading SQDB files 2025-03-08 09:56:43 -05:00
4291d0ae06 Credit FFXIVTools for the Havok parser 2025-03-08 09:22:52 -05:00
9ad81876b2 Fix the abbrevation and prefix for Ear models
Credit to LouisBrunner for pointing this out.
2025-03-08 09:19:32 -05:00
8d6f3a45b3 Differentiate between left and right ring slots
Credit to LouisBrunner for pointing this out.
2025-03-08 09:13:34 -05:00
c9018336c8 Remove leftover println 2025-03-08 09:02:49 -05:00
805a0a7d2c Remove no longer needed comment in Repository tests 2025-03-08 09:01:00 -05:00
bd111b6d53 Remove manual Eq implementation for Repository 2025-03-08 08:57:41 -05:00
0b339886c9 Move SqPack headers to sqpack module 2025-03-08 08:52:23 -05:00
0479dac52d Add basic write support for Index1 file entries 2025-03-06 19:31:18 -05:00