summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/pso/TProtocol.h113
-rw-r--r--include/pso/forward.h2
2 files changed, 115 insertions, 0 deletions
diff --git a/include/pso/TProtocol.h b/include/pso/TProtocol.h
new file mode 100644
index 0000000..c4b803d
--- /dev/null
+++ b/include/pso/TProtocol.h
@@ -0,0 +1,113 @@
+#ifndef TPROTOCOL_H
+#define TPROTOCOL_H
+
+#include <global_types.h>
+#include <string.h>
+#include <pso/macros.h>
+#include <pso/forward.h>
+#include <pso/protocol.h>
+#include <pso/PSOV3EncryptionTCP.h>
+#include <pso/TArray.h>
+#include <pso/TMainTask.h>
+#include <pso/TMenuList.h>
+#include <pso/TObject.h>
+#include <pso/TPlyGuildCardTag.h>
+#include <pso/TSocket.h>
+#include <pso/TTcpSocket.h>
+
+
+class TPlySmth {
+ TArray<u8, 4> m_smth;
+ TArray<u8, 4> m_smth1;
+};
+
+struct packet {
+ packet_header header;
+ TArray<u8, 0x7fbc> data;
+};
+
+typedef void (*recv_packet_handler)(packet &pkt);
+
+class TProtocol : public TTcpSocket {
+private:
+ TPlySmth m_smth;
+ TPlyGuildCardTag m_guildcard_tag;
+ u16 sub_version;
+ int m_login_response_state;
+ int m_connected;
+ int m_joined_game;
+ int m_has_meet_user_settings;
+ int m_buffer_ready;
+ int m_entry_count;
+ int m_unused;
+ int m_lobby_list_count;
+ int m_unused2;
+ int m_udp_disabled;
+ int m_language;
+ TArray<u8, 80> m_unused3;
+ TPlyCharData m_character_data;
+ u32 m_unused4;
+ TArray<TMenuListEntry<GameMenuEntry>, 64> m_game_entries;
+ TArray<TMenuListEntry<GameMenuEntry>, 64> m_game_entries2;
+ TArray<TMenuListEntry<LobbyListEntry>, 16> m_lobby_entries;
+ TArray<TMenuListEntry<QuestMenuEntry>, 30> m_quest_entries;
+ TArray<u8, 128> m_unused5;
+ TArray<char, 17> m_serial_number3;
+ TArray<char, 17> m_password2;
+ TArray<char, 48> m_serial_number;
+ TArray<char, 48> m_access_key;
+ TArray<char, 64> m_password;
+ TArray<char, 16> m_player_name;
+ TArray<char, 17> m_serial_number2;
+ TArray<char, 17> m_access_key2;
+ TPlyClientConfig m_client_config;
+ int m_packet_offset;
+ int m_packet_size;
+ packet m_packet;
+ TArray<recv_packet_handler, 52> m_recv_handlers;
+public:
+ TProtocol(TObject *parent = nullptr, u16 sub_version, int language, char *serial_number, char *access_key, char *password);
+ virtual ~TProtocol();
+
+ virtual run_task();
+ virtual send(u8 *data, size_t size);
+
+ int handle_command(packet *pkt);
+
+ PRIVATE_MEMBER_ACCESSORS(TPlySmth, smth);
+ PRIVATE_MEMBER_ACCESSORS(TPlyGuildCardTag, guildcard_tag);
+ PRIVATE_MEMBER_ACCESSORS(u16, sub_version);
+ PRIVATE_MEMBER_ACCESSORS(int, login_response_state);
+ PRIVATE_MEMBER_ACCESSORS(int, connected);
+ PRIVATE_MEMBER_ACCESSORS(int, joined_game);
+ PRIVATE_MEMBER_ACCESSORS(int, has_meet_user_settings);
+ PRIVATE_MEMBER_ACCESSORS(int, buffer_ready);
+ PRIVATE_MEMBER_ACCESSORS(int, entry_count);
+ PRIVATE_MEMBER_ACCESSORS(int, unused);
+ PRIVATE_MEMBER_ACCESSORS(int, lobby_list_count);
+ PRIVATE_MEMBER_ACCESSORS(int, unused2);
+ PRIVATE_MEMBER_ACCESSORS(int, udp_disabled);
+ PRIVATE_MEMBER_ACCESSORS(int, language);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(u8, unused3, 80);
+ PRIVATE_MEMBER_ACCESSORS(TPlyCharData, character_data);
+ PRIVATE_MEMBER_ACCESSORS(u32, unused4);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<GameListEntry>, game_entries, 64);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<GameListEntry>, game_entries2, 64);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<LobbyListEntry>, lobby_entries, 16);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<QuestMenuEntry>, quest_entries, 30);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(u8, unused5, 128);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_serial_number3, 17);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_password2, 17);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_serial_number, 48);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_access_key, 48);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_password, 64);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_player_name, 16);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_serial_number2, 17);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_access_key2, 17);
+ PRIVATE_MEMBER_ACCESSORS(int, packet_offset);
+ PRIVATE_MEMBER_ACCESSORS(int, packet_size);
+ PRIVATE_MEMBER_ACCESSORS(packet, packet);
+ PRIVATE_MEMBER_ACCESSORS_ARRAY(recv_packet_handler, recv_handlers, 52);
+};
+
+#endif
diff --git a/include/pso/forward.h b/include/pso/forward.h
index 1bc71cf..67b0b2a 100644
--- a/include/pso/forward.h
+++ b/include/pso/forward.h
@@ -8,6 +8,8 @@ class THeap;
class TObject;
class TMainTask;
class TPlyGuildCardTag;
+class TProtocol;
+struct packet;
struct packet_header;
#endif