From ad1179e6cfeb07ff865e0086627761b0a04bfd79 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Tue, 14 Mar 2023 16:41:22 -0300 Subject: TProtocol: Add (and match) even more command handlers Slowly starting to get fleshed out. --- include/pso/packet_classes.h | 122 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) (limited to 'include/pso/packet_classes.h') diff --git a/include/pso/packet_classes.h b/include/pso/packet_classes.h index 0764388..b6217ca 100644 --- a/include/pso/packet_classes.h +++ b/include/pso/packet_classes.h @@ -18,6 +18,44 @@ struct TPlyText { char text[size]; }; +struct game_command_header { + u8 command; + u8 size; + u16 id; + + void bswap() { + bswap_16(&id); + }; +}; + +struct extended_game_command_header { + game_command_header header; + u32 size; + + void bswap() { + bswap_16(&header.id); + bswap_32(&size); + }; +}; + +struct game_command { + game_command_header header; + u8 data[1024-sizeof(game_command_header)]; + + void bswap() { + header.bswap(); + }; +}; + +struct extended_game_command { + extended_game_command_header header; + u8 data[1024-sizeof(extended_game_command_header)]; + + void bswap() { + header.bswap(); + }; +}; + TMenuListEntry(GameListEntry, u8 difficulty_tag; u8 num_players; @@ -35,6 +73,12 @@ TMenuListEntry(QuestListEntry, char short_description[112]; ); +union game_command_union { + struct game_command game_cmd; + struct extended_game_command ext_game_cmd; + u8 bytes[1024]; +}; + class TRecvPort { public: packet_header header; @@ -63,6 +107,84 @@ public: }; }; +class TChatMessage { +public: + packet_header header; + TPlyGuildCardTag tag; + char name[16]; + u32 to_guildcard_number; + char text[512]; +public: + void bswap() { + header.bswap(); + tag.bswap(); + bswap_32(&to_guildcard_number); + }; +}; + +class TUserAns { +public: + packet_header header; + TPlyGuildCardTag tag; + u32 found_guildcard; + TRecvPort recv_port; + char location[68]; + TPlyMeetUserExtension extension; +public: + void bswap() { + header.bswap(); + tag.bswap(); + bswap_32(&found_guildcard); + recv_port.bswap(); + extension.bswap(); + }; +}; + +class TGenGuildCardTag { +public: + u8 tag0; + u8 tag1; + u16 tag2; + u32 guildcard_number; +public: + TGenGuildCardTag() {}; + + void bswap() { + bswap_32(&guildcard_number); + bswap_16(&tag2); + }; +}; + +class TRecvGenerateID { +public: + packet_header header; + u32 client_id; + TGenGuildCardTag tag; +public: + void bswap() { + header.bswap(); + bswap_32(&client_id); + tag.bswap(); + }; +}; + +class TPsoData { +public: + union game_command_union pkt; +public: + void recv_pso_data_buf(size_t size) {}; +}; + +class TRecvPsoData { +public: + packet_header header; + TPsoData data; +public: + void bswap() { + header.bswap(); + }; +}; + class TPlyJoinLobbyData { public: TPlyGuildCardTag tag; -- cgit v1.2.3-13-gbd6f