From 307b4a54c95e08ad01e2c6b7c27a3eca54f05f42 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Fri, 3 Mar 2023 20:08:49 -0400 Subject: TPlyDispData: Add `TPlyDispData` --- context.h | 110 +++++++++++++++++++++++++++++++++++++++++- include/pso/TPlyDispData.h | 118 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 include/pso/TPlyDispData.h diff --git a/context.h b/context.h index cdfe79f..366a014 100644 --- a/context.h +++ b/context.h @@ -569,6 +569,59 @@ struct gc_tag { u16 tag2; }; +// pso/TPlyDispData.h +struct stats { + void bswap(); + stats &assign(const stats &src); + + short atp; + short mst; + short evp; + short hp; + short dfp; + short ata; + short lck; +}; + +struct player_stats { + void bswap(); + player_stats &assign(const player_stats &src); + + struct stats stats; + short mbr_0xe; + float proportions; + float mbr_0x14; + int level; + int exp; + int meseta; +}; + +struct disp_data_part2 { + void bswap(); + disp_data_part2 &assign(const disp_data_part2 &src); + + TArray name; + u64 smth; + u32 name_colour; + u8 extra_model; + TArray padding; + u32 name_colour_checksum; + u8 section_id; + u8 char_class; + u8 v2_flags; + u8 version; + u32 v1_flags; + u16 costume; + u16 skin; + u16 face; + u16 head; + u16 hair; + u16 hair_r; + u16 hair_g; + u16 hair_b; + vec2f proportions; +}; + // TTcpSocket.cpp, but they're really from AVE-TCP struct at_ip4_opt { u8 ttl; @@ -647,9 +700,64 @@ static inline void operator^=(object_flags &a, object_flags b) { a = a ^ b; }; static inline void operator&=(object_flags &a, object_flags b) { a = a & b; }; static inline void operator|=(object_flags &a, object_flags b) { a = a | b; }; -// pso/TPlyGuildCardTag.h +// pso/TPlyDispData.h // Class defs. +class TPlyDispConfigSmthTag { +public: + TPlyDispConfigSmthTag(); + ~TPlyDispConfigSmthTag(); + + void bswap(); + TPlyDispConfigSmthTag &assign(const TPlyDispConfigSmthTag &src); + + PRIVATE_MEMBER_ACCESSORS(gc_tag, tag); +private: + gc_tag m_tag; +}; + +class TPlyDispConfigSmth { +public: + void bswap(); + TPlyDispConfigSmth &assign(const TPlyDispConfigSmth &src); + + PRIVATE_MEMBER_ACCESSORS(u32, mbr_0x0); + PRIVATE_MEMBER_ACCESSORS_ARRAY(TPlyDispConfigSmthTag, tags, 4); + PRIVATE_MEMBER_ACCESSORS_ARRAY(TPlyDispConfigSmthTag, tags1, 4); +private: + u32 m_mbr_0x0; + TArray m_tags; + TArray m_tags1; +}; + +class TPlyDispConfig { +public: + void bswap(); + TPlyDispConfig &assign(const TPlyDispConfig &src); + + PRIVATE_MEMBER_ACCESSORS(TPlyDispConfigSmth, smth); + PRIVATE_MEMBER_ACCESSORS(TPlyDispConfigSmth, smth1); +private: + TPlyDispConfigSmth m_smth; + TPlyDispConfigSmth m_smth1; +}; + +class TPlyDispData { +public: + void bswap(); + TPlyDispData &assign(const TPlyDispData &src); + PRIVATE_MEMBER_ACCESSORS(player_stats, stats); + PRIVATE_MEMBER_ACCESSORS(disp_data_part2, disp_part2); + PRIVATE_MEMBER_ACCESSORS(TPlyDispConfig, config); + PRIVATE_MEMBER_ACCESSORS_ARRAY(u8, tech_levels, 20); +private: + player_stats m_stats; + disp_data_part2 m_disp_part2; + TPlyDispConfig m_config; + TArray m_tech_levels; +}; + +// pso/TPlyGuildCardTag.h class TPlyGuildCardTag { public: TPlyGuildCardTag(); diff --git a/include/pso/TPlyDispData.h b/include/pso/TPlyDispData.h new file mode 100644 index 0000000..a237bbc --- /dev/null +++ b/include/pso/TPlyDispData.h @@ -0,0 +1,118 @@ +#ifndef TPLYDISPDATA_H +#define TPLYDISPDATA_H + +#include +#include +#include +#include +#include +#include + +struct stats { + void bswap(); + stats &assign(const stats &src); + + short atp; + short mst; + short evp; + short hp; + short dfp; + short ata; + short lck; +}; + +struct player_stats { + void bswap(); + player_stats &assign(const player_stats &src); + + struct stats stats; + short mbr_0xe; + float proportions; + float mbr_0x14; + int level; + int exp; + int meseta; +}; + +struct disp_data_part2 { + void bswap(); + disp_data_part2 &assign(const disp_data_part2 &src); + + TArray name; + u64 smth; + u32 name_colour; + u8 extra_model; + TArray padding; + u32 name_colour_checksum; + u8 section_id; + u8 char_class; + u8 v2_flags; + u8 version; + u32 v1_flags; + u16 costume; + u16 skin; + u16 face; + u16 head; + u16 hair; + u16 hair_r; + u16 hair_g; + u16 hair_b; + vec2f proportions; +}; + +class TPlyDispConfigSmthTag { +public: + TPlyDispConfigSmthTag(); + ~TPlyDispConfigSmthTag(); + + void bswap(); + TPlyDispConfigSmthTag &assign(const TPlyDispConfigSmthTag &src); + + PRIVATE_MEMBER_ACCESSORS(gc_tag, tag); +private: + gc_tag m_tag; +}; + +class TPlyDispConfigSmth { +public: + void bswap(); + TPlyDispConfigSmth &assign(const TPlyDispConfigSmth &src); + + PRIVATE_MEMBER_ACCESSORS(u32, mbr_0x0); + PRIVATE_MEMBER_ACCESSORS_ARRAY(TPlyDispConfigSmthTag, tags, 4); + PRIVATE_MEMBER_ACCESSORS_ARRAY(TPlyDispConfigSmthTag, tags1, 4); +private: + u32 m_mbr_0x0; + TArray m_tags; + TArray m_tags1; +}; + +class TPlyDispConfig { +public: + void bswap(); + TPlyDispConfig &assign(const TPlyDispConfig &src); + + PRIVATE_MEMBER_ACCESSORS(TPlyDispConfigSmth, smth); + PRIVATE_MEMBER_ACCESSORS(TPlyDispConfigSmth, smth1); +private: + TPlyDispConfigSmth m_smth; + TPlyDispConfigSmth m_smth1; +}; + +class TPlyDispData { +public: + void bswap(); + TPlyDispData &assign(const TPlyDispData &src); + + PRIVATE_MEMBER_ACCESSORS(player_stats, stats); + PRIVATE_MEMBER_ACCESSORS(disp_data_part2, disp_part2); + PRIVATE_MEMBER_ACCESSORS(TPlyDispConfig, config); + PRIVATE_MEMBER_ACCESSORS_ARRAY(u8, tech_levels, 20); +private: + player_stats m_stats; + disp_data_part2 m_disp_part2; + TPlyDispConfig m_config; + TArray m_tech_levels; +}; + +#endif -- cgit v1.2.3-13-gbd6f