#ifndef TPLYINVENTORY_H #define TPLYINVENTORY_H #include #include #include #include struct TItemData { void init(); void bswap(); TItemData &assign(const TItemData &src); union { TArray data_u8; TArray data_u16; TArray data_u32; } data1; u32 id; union { TArray data_u8; TArray data_u16; u32 data_u32; } data2; }; class TPlyInventoryItem { public: void init(); void bswap(); TPlyInventoryItem &assign(const TPlyInventoryItem &src); PRIVATE_MEMBER_ACCESSORS_ARRAY(u8, present, 4); PRIVATE_MEMBER_ACCESSORS(u32, flags); PRIVATE_MEMBER_ACCESSORS(TItemData, data); private: TArray m_present; u32 m_flags; TItemData m_data; }; class TPlyInventory { public: void bswap(); TPlyInventory &assign(const TPlyInventory &src); PRIVATE_MEMBER_ACCESSORS(u8, num_items); PRIVATE_MEMBER_ACCESSORS(u8, hp_materials_used); PRIVATE_MEMBER_ACCESSORS(u8, tp_materials_used); PRIVATE_MEMBER_ACCESSORS(u8, language); PRIVATE_MEMBER_ACCESSORS_ARRAY(TPlyInventoryItem, items, 30); private: u8 m_num_items; u8 m_hp_materials_used; u8 m_tp_materials_used; u8 m_language; TArray m_items; }; #endif