summaryrefslogtreecommitdiff
path: root/include/pso/packet_classes.h
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2023-03-14 16:41:22 -0300
committermrb0nk500 <b0nk@b0nk.xyz>2023-03-14 16:41:22 -0300
commitad1179e6cfeb07ff865e0086627761b0a04bfd79 (patch)
treed64bb62cc2406e1616a02d14aecf1192d89edd92 /include/pso/packet_classes.h
parentd7336127af97ed86778796fb3a9cd203ce8b9306 (diff)
TProtocol: Add (and match) even more command handlers
Slowly starting to get fleshed out.
Diffstat (limited to 'include/pso/packet_classes.h')
-rw-r--r--include/pso/packet_classes.h122
1 files changed, 122 insertions, 0 deletions
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;