From 0b0f3da43d281b75cc04a9333332f2abc1eff0c7 Mon Sep 17 00:00:00 2001
From: mrb0nk500 <b0nk@b0nk.xyz>
Date: Wed, 22 Mar 2023 15:34:08 -0300
Subject: TProtocol: Add (and match) more command senders

---
 include/pso/TProtocol.h      |  9 +++++++++
 include/pso/packet_classes.h | 47 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+)

(limited to 'include/pso')

diff --git a/include/pso/TProtocol.h b/include/pso/TProtocol.h
index 31e6eab..b970998 100644
--- a/include/pso/TProtocol.h
+++ b/include/pso/TProtocol.h
@@ -255,6 +255,15 @@ public:
 	void send_logout();
 	// 0x06
 	void send_chat(TPlyGuildCardTag &tag, char *mesg);
+	// 0x10
+	void send_action(GameListEntry &selection, char *action_name, char *password);
+	void send_action(GameListEntry &selection, u8 flags, char *action_name, char *password);
+	// 0x09
+	void send_info(TPlyGuildCardTag &tag);
+	// 0x08
+	void send_game_list();
+	// 0x1F
+	void send_text_list();
 };
 
 #endif
diff --git a/include/pso/packet_classes.h b/include/pso/packet_classes.h
index 98f45bc..268ac40 100644
--- a/include/pso/packet_classes.h
+++ b/include/pso/packet_classes.h
@@ -83,6 +83,53 @@ union game_command_union {
 	u8 bytes[1024];
 };
 
+template<int action_type = 0>
+class TSendAction {
+public:
+	packet_header header;
+	TPlyGuildCardTag tag;
+	#if defined(__GNUC__) || defined(__clang__)
+	char name[(action_type & 1) ? 16 : 0];
+	char password[(action_type & 2) ? 16 : 0];
+	#endif
+public:
+	void bswap() {
+		header.bswap();
+		tag.bswap();
+	};
+};
+
+#if !defined(__GNUC__) && !defined(__clang__)
+#define _TSendAction(action_type, members)	\
+template<>					\
+class TSendAction<action_type> {		\
+public:						\
+	packet_header header;			\
+	TPlyGuildCardTag tag;			\
+	members					\
+public:						\
+	void bswap() {				\
+		header.bswap();			\
+		tag.bswap();			\
+	};					\
+}
+
+_TSendAction(1,
+	char name[16];
+);
+
+_TSendAction(2,
+	char password[16];
+);
+
+_TSendAction(3,
+	char name[16];
+	char password[16];
+);
+
+#undef _TSendAction
+#endif
+
 class TRegister {
 public:
 	packet_header header;
-- 
cgit v1.2.3-13-gbd6f