mirror of
https://github.com/redstrate/Physis.git
synced 2025-04-23 13:17:44 +00:00
Add write support for chardat files
This commit is contained in:
parent
3eec5764a2
commit
30d5cd5996
1 changed files with 47 additions and 2 deletions
|
@ -1,5 +1,5 @@
|
|||
use crate::gamedata::MemoryBuffer;
|
||||
use binrw::binread;
|
||||
use binrw::binrw;
|
||||
use binrw::BinRead;
|
||||
use std::io::Cursor;
|
||||
use crate::race::{Gender, Race, Subrace};
|
||||
|
@ -18,6 +18,19 @@ fn convert_dat_race(x: u8) -> Race {
|
|||
}
|
||||
}
|
||||
|
||||
fn convert_race_dat(race: &Race) -> u8 {
|
||||
match race {
|
||||
Race::Hyur => 1,
|
||||
Race::Elezen => 2,
|
||||
Race::Lalafell => 3,
|
||||
Race::Miqote => 4,
|
||||
Race::Roegadyn => 5,
|
||||
Race::AuRa => 6,
|
||||
Race::Hrothgar => 7,
|
||||
Race::Viera => 8
|
||||
}
|
||||
}
|
||||
|
||||
fn convert_dat_gender(x: u8) -> Gender {
|
||||
match x {
|
||||
0 => Gender::Male,
|
||||
|
@ -26,6 +39,13 @@ fn convert_dat_gender(x: u8) -> Gender {
|
|||
}
|
||||
}
|
||||
|
||||
fn convert_gender_dat(gender: &Gender) -> u8 {
|
||||
match gender {
|
||||
Gender::Male => 0,
|
||||
Gender::Female => 1,
|
||||
}
|
||||
}
|
||||
|
||||
fn convert_dat_subrace(x: u8) -> Subrace {
|
||||
match x {
|
||||
1 => Subrace::Midlander,
|
||||
|
@ -48,7 +68,28 @@ fn convert_dat_subrace(x: u8) -> Subrace {
|
|||
}
|
||||
}
|
||||
|
||||
#[binread]
|
||||
fn convert_subrace_dat(subrace: &Subrace) -> u8 {
|
||||
match subrace {
|
||||
Subrace::Midlander => 1,
|
||||
Subrace::Highlander => 2,
|
||||
Subrace::Wildwood => 3,
|
||||
Subrace::Duskwight => 4,
|
||||
Subrace::Plainsfolk => 5,
|
||||
Subrace::Dunesfolk => 6,
|
||||
Subrace::Seeker => 7,
|
||||
Subrace::Keeper => 8,
|
||||
Subrace:: SeaWolf => 9,
|
||||
Subrace::Hellsguard => 10,
|
||||
Subrace::Raen => 11,
|
||||
Subrace::Xaela => 12,
|
||||
Subrace::Hellion => 13,
|
||||
Subrace::Lost => 14,
|
||||
Subrace::Rava => 15,
|
||||
Subrace::Veena => 16
|
||||
}
|
||||
}
|
||||
|
||||
#[binrw]
|
||||
#[br(little)]
|
||||
#[repr(C)]
|
||||
#[br(magic = 0x2013FF14u32)]
|
||||
|
@ -59,16 +100,20 @@ pub struct CharDat { // version 4
|
|||
pub checksum: u32,
|
||||
|
||||
#[br(map = | x: u8 | convert_dat_race(x) )]
|
||||
#[bw(map = | race: &Race | convert_race_dat(race) )]
|
||||
pub race: Race,
|
||||
#[br(map = | x: u8 | convert_dat_gender(x) )]
|
||||
#[bw(map = | gender: &Gender | convert_gender_dat(gender) )]
|
||||
pub gender: Gender,
|
||||
pub age: u8, // Normal = 1, Old = 3, Young = 4
|
||||
pub height: u8,
|
||||
#[br(map = | x: u8 | convert_dat_subrace(x) )]
|
||||
#[bw(map = | subrace: &Subrace | convert_subrace_dat(subrace) )]
|
||||
pub subrace: Subrace,
|
||||
pub head: u8,
|
||||
pub hair: u8,
|
||||
#[br(map = | x: u8 | x != 0 )]
|
||||
#[bw(map = | x: &bool | if *x { 1u8 } else { 0u8 } )]
|
||||
pub enable_highlights: bool,
|
||||
pub skin_tone: u8,
|
||||
pub right_eye_color: u8,
|
||||
|
|
Loading…
Add table
Reference in a new issue