diff --git a/src/net/connection/ClientConnection.cpp b/src/net/connection/ClientConnection.cpp index 66434c0..8dba0a9 100644 --- a/src/net/connection/ClientConnection.cpp +++ b/src/net/connection/ClientConnection.cpp @@ -104,6 +104,10 @@ void ClientConnection::GetRealmList() { } } +void ClientConnection::HandleCharacterCreate(uint8_t result) { + this->Complete(result == 47, result); +} + void ClientConnection::HandleCharacterDelete(uint8_t result) { this->Complete(result == 71, result); } diff --git a/src/net/connection/ClientConnection.hpp b/src/net/connection/ClientConnection.hpp index c24fa3a..3e30b88 100644 --- a/src/net/connection/ClientConnection.hpp +++ b/src/net/connection/ClientConnection.hpp @@ -22,6 +22,7 @@ class ClientConnection : public RealmConnection { // Virtual member functions virtual int32_t HandleConnect(); + virtual void HandleCharacterCreate(uint8_t result); virtual void HandleCharacterDelete(uint8_t result); // Member functions diff --git a/src/net/connection/RealmConnection.cpp b/src/net/connection/RealmConnection.cpp index a60549e..ac15653 100644 --- a/src/net/connection/RealmConnection.cpp +++ b/src/net/connection/RealmConnection.cpp @@ -19,8 +19,8 @@ int32_t RealmConnection::MessageHandler(void* param, NETMESSAGE msgId, uint32_t break; } - case SMSG_CREATE_CHAR: { - // TODO + case SMSG_CHAR_CREATE: { + result = connection->CreateCharHandler(msgId, time, msg); break; } @@ -294,6 +294,15 @@ int32_t RealmConnection::HandleCharEnum(uint32_t msgId, uint32_t time, CDataStor return 1; } +int32_t RealmConnection::CreateCharHandler(uint32_t msgId, uint32_t time, CDataStore* msg) { + uint8_t result; + msg->Get(result); + + this->HandleCharacterCreate(result); + + return 1; +} + int32_t RealmConnection::DeleteCharHandler(uint32_t msgId, uint32_t time, CDataStore* msg) { uint8_t result; msg->Get(result); diff --git a/src/net/connection/RealmConnection.hpp b/src/net/connection/RealmConnection.hpp index 332401b..b7a9556 100644 --- a/src/net/connection/RealmConnection.hpp +++ b/src/net/connection/RealmConnection.hpp @@ -46,12 +46,14 @@ class RealmConnection : public NetClient { // Virtual member functions virtual int32_t HandleAuthChallenge(AuthenticationChallenge* challenge); + virtual void HandleCharacterCreate(uint8_t result) = 0; virtual void HandleCharacterDelete(uint8_t result) = 0; // Member functions RealmConnection(RealmResponse* realmResponse); int32_t HandleAuthResponse(uint32_t msgId, uint32_t time, CDataStore* msg); int32_t HandleCharEnum(uint32_t msgId, uint32_t time, CDataStore* msg); + int32_t CreateCharHandler(uint32_t msgId, uint32_t time, CDataStore* msg); int32_t DeleteCharHandler(uint32_t msgId, uint32_t time, CDataStore* msg); void RequestCharacterEnum(); void RequestCharacterLogin(uint64_t guid, int32_t a2);