summaryrefslogtreecommitdiff
path: root/include/pso/packet_classes.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/pso/packet_classes.h')
-rw-r--r--include/pso/packet_classes.h68
1 files changed, 61 insertions, 7 deletions
diff --git a/include/pso/packet_classes.h b/include/pso/packet_classes.h
index 9cd9800..f0e2fcc 100644
--- a/include/pso/packet_classes.h
+++ b/include/pso/packet_classes.h
@@ -14,6 +14,27 @@
#include <pso/TPlyGuildCardTag.h>
#include <pso/TPlySmth.h>
+#define _gc_tag_packet_templ(name, members) \
+template<bool has_gc_tag = false> \
+struct name { \
+ packet_header header; \
+ members \
+}; \
+ \
+template<> \
+struct name<true> { \
+ packet_header header; \
+ TPlyGuildCardTag tag; \
+ members \
+}
+
+_gc_tag_packet_templ(regist,
+ TPlySmth smth;
+ u32 sub_version;
+ u8 is_extended;
+ u8 language;
+);
+
template<size_t size>
struct TPlyText {
packet_header header;
@@ -233,6 +254,45 @@ _TSendAction(3,
#undef _TSendAction
#endif
+class TSendPsoRegist : public regist<false> {
+public:
+ char serial_number[48];
+ char access_key[48];
+ char password[48];
+public:
+ void bswap() {
+ header.bswap();
+ smth.bswap();
+ bswap_32(&sub_version);
+ };
+};
+
+class TSendPsoRegistConnect {
+public:
+ packet_header header;
+ char serial_number[17];
+ char access_key[17];
+ u16 padding;
+public:
+ void bswap() {
+ header.bswap();
+ };
+};
+
+class TRecvPsoRegistConnect {
+public:
+ packet_header header;
+ char copyright[64];
+ u32 server_key;
+ u32 client_key;
+public:
+ void bswap() {
+ header.bswap();
+ bswap_32(&server_key);
+ bswap_32(&client_key);
+ };
+};
+
template<bool is_lobby>
class TRecvExit {
public:
@@ -246,14 +306,8 @@ public:
};
};
-class TRegister {
+class TRegister : public regist<false> {
public:
- packet_header header;
- TPlySmth smth;
- u32 sub_version;
- u8 is_extended;
- u8 language;
- u16 unknown;
char serial_number[16];
char access_key[16];
public: