142 lines
2.9 KiB
Rust
142 lines
2.9 KiB
Rust
|
|
|
|
/*
|
|
typedef struct bb_guildcard_data {
|
|
uint8_t unk1[0x0114];
|
|
struct {
|
|
uint32_t guildcard;
|
|
uint16_t name[0x18];
|
|
uint16_t team[0x10];
|
|
uint16_t desc[0x58];
|
|
uint8_t reserved1;
|
|
uint8_t language;
|
|
uint8_t section;
|
|
uint8_t ch_class;
|
|
} blocked[29];
|
|
uint8_t unk2[0x78];
|
|
struct {
|
|
uint32_t guildcard;
|
|
uint16_t name[0x18];
|
|
uint16_t team[0x10];
|
|
uint16_t desc[0x58];
|
|
uint8_t reserved1;
|
|
uint8_t language;
|
|
uint8_t section;
|
|
uint8_t ch_class;
|
|
uint32_t padding;
|
|
uint16_t comment[0x58];
|
|
} entries[104];
|
|
uint8_t unk3[0x01BC];
|
|
} bb_gc_data_t;
|
|
*/
|
|
|
|
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct BlockedGuildCard {
|
|
pub guildcard: u32,
|
|
pub name: [u16; 0x18],
|
|
pub team: [u16; 0x10],
|
|
pub desc: [u16; 0x58],
|
|
pub reserved1: u8,
|
|
pub language: u8,
|
|
pub section_id: u8,
|
|
pub class: u8,
|
|
}
|
|
|
|
impl Default for BlockedGuildCard {
|
|
fn default() -> BlockedGuildCard {
|
|
BlockedGuildCard {
|
|
guildcard: 0,
|
|
name: [0; 0x18],
|
|
team: [0; 0x10],
|
|
desc: [0; 0x58],
|
|
reserved1: 0,
|
|
language: 0,
|
|
section_id: 0,
|
|
class: 0,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct GuildCard {
|
|
pub guildcard: u32,
|
|
pub name: [u16; 0x18],
|
|
pub team: [u16; 0x10],
|
|
pub desc: [u16; 0x58],
|
|
pub reserved1: u8,
|
|
pub language: u8,
|
|
pub section_id: u8,
|
|
pub class: u8,
|
|
pub paddding: u32,
|
|
pub comment: [u16; 0x58],
|
|
}
|
|
|
|
|
|
impl Default for GuildCard {
|
|
fn default() -> GuildCard {
|
|
GuildCard {
|
|
guildcard: 0,
|
|
name: [0; 0x18],
|
|
team: [0; 0x10],
|
|
desc: [0; 0x58],
|
|
reserved1: 0,
|
|
language: 0,
|
|
section_id: 0,
|
|
class: 0,
|
|
paddding: 0,
|
|
comment: [0; 0x58],
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct GuildCardData {
|
|
pub _unknown1: [u8; 0x114],
|
|
pub blocked: [BlockedGuildCard; 29],
|
|
pub _unknown2: [u8; 0x78],
|
|
pub friends: [GuildCard; 104],
|
|
pub _unknown3: [u8; 0x1BC],
|
|
}
|
|
|
|
impl Default for GuildCardData {
|
|
fn default() -> GuildCardData {
|
|
GuildCardData {
|
|
_unknown1: [0; 0x114],
|
|
blocked: [BlockedGuildCard::default(); 29],
|
|
_unknown2: [0; 0x78],
|
|
friends: [GuildCard::default(); 104],
|
|
_unknown3: [0; 0x1BC],
|
|
}
|
|
}
|
|
}
|
|
|
|
impl GuildCardData {
|
|
pub fn from_bytes(bytes: [u8; 0xD590]) -> GuildCardData {
|
|
unsafe {
|
|
std::mem::transmute(bytes)
|
|
}
|
|
}
|
|
|
|
pub fn as_bytes(&self) -> [u8; 0xD590] {
|
|
unsafe {
|
|
std::mem::transmute(*self)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
#[test]
|
|
fn guildcard_default_zero() {
|
|
let gc = super::GuildCardData::default();
|
|
let bytes = gc.as_bytes();
|
|
for k in bytes.iter() {
|
|
assert!(*k == 0);
|
|
}
|
|
}
|
|
}
|