105 lines
2.5 KiB
Rust
105 lines
2.5 KiB
Rust
|
// TODO: ch_class to CharacterClass enum
|
||
|
// TODO: section_id to SectionId enum
|
||
|
// TODO: techniques to enum?
|
||
|
|
||
|
#[derive(Default)]
|
||
|
pub struct Character {
|
||
|
pub atp: u16,
|
||
|
pub mst: u16,
|
||
|
pub evp: u16,
|
||
|
pub hp: u16,
|
||
|
pub dfp: u16,
|
||
|
pub ata: u16,
|
||
|
pub lck: u16,
|
||
|
pub _unknown1: u16,
|
||
|
pub _unknown2: [u32; 2],
|
||
|
pub level: u32,
|
||
|
pub exp: u32,
|
||
|
pub meseta: u32,
|
||
|
pub guildcard: [u8; 16],
|
||
|
pub _unknown3: [u32; 2],
|
||
|
pub name_color: u32,
|
||
|
pub model: u8,
|
||
|
pub _unused: [u8; 11],
|
||
|
pub play_time: u32,
|
||
|
pub name_color_checksum: u32,
|
||
|
pub section_id: u8,
|
||
|
pub ch_class: u8,
|
||
|
pub v2flags: u8,
|
||
|
pub version: u8,
|
||
|
pub v1flags: u8,
|
||
|
pub costume: u16,
|
||
|
pub skin: u16,
|
||
|
pub face: u16,
|
||
|
pub head: u16,
|
||
|
pub hair: u16,
|
||
|
pub hair_r: u16,
|
||
|
pub hair_g: u16,
|
||
|
pub hair_b: u16,
|
||
|
pub prop_x: f32,
|
||
|
pub prop_y: f32,
|
||
|
pub name: [u16; 16],
|
||
|
//pub config: [u8; 0xE8],
|
||
|
pub techniques: [u8; 0x14],
|
||
|
}
|
||
|
|
||
|
impl Character {
|
||
|
pub fn as_select_screen(self) -> SelectScreenCharacter {
|
||
|
SelectScreenCharacter {
|
||
|
exp: self.exp,
|
||
|
level: self.level,
|
||
|
guildcard: self.guildcard,
|
||
|
_unknown: self._unknown3,
|
||
|
name_color: self.name_color,
|
||
|
model: self.model,
|
||
|
_unused: [0; 15],
|
||
|
name_color_checksum: self.name_color_checksum,
|
||
|
section_id: self.section_id,
|
||
|
ch_class: self.ch_class,
|
||
|
v2flags: self.v2flags,
|
||
|
version: self.version,
|
||
|
v1flags: self.v1flags,
|
||
|
costume: self.costume,
|
||
|
skin: self.skin,
|
||
|
face: self.face,
|
||
|
head: self.head,
|
||
|
hair: self.hair,
|
||
|
hair_r: self.hair_r,
|
||
|
hair_g: self.hair_g,
|
||
|
hair_b: self.hair_b,
|
||
|
prop_x: self.prop_x,
|
||
|
prop_y: self.prop_y,
|
||
|
name: self.name,
|
||
|
play_time: self.play_time,
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub struct SelectScreenCharacter {
|
||
|
pub exp: u32,
|
||
|
pub level: u32,
|
||
|
pub guildcard: [u8; 16],
|
||
|
pub _unknown: [u32; 2],
|
||
|
pub name_color: u32,
|
||
|
pub model: u8,
|
||
|
pub _unused: [u8; 15],
|
||
|
pub name_color_checksum: u32,
|
||
|
pub section_id: u8,
|
||
|
pub ch_class: u8,
|
||
|
pub v2flags: u8,
|
||
|
pub version: u8,
|
||
|
pub v1flags: u8,
|
||
|
pub costume: u16,
|
||
|
pub skin: u16,
|
||
|
pub face: u16,
|
||
|
pub head: u16,
|
||
|
pub hair: u16,
|
||
|
pub hair_r: u16,
|
||
|
pub hair_g: u16,
|
||
|
pub hair_b: u16,
|
||
|
pub prop_x: f32,
|
||
|
pub prop_y: f32,
|
||
|
pub name: [u16; 16],
|
||
|
pub play_time: u32,
|
||
|
}
|