diff --git a/src/client/ClientServices.cpp b/src/client/ClientServices.cpp index 09cf326..142a015 100644 --- a/src/client/ClientServices.cpp +++ b/src/client/ClientServices.cpp @@ -200,6 +200,10 @@ REALM_INFO* ClientServices::GetRealmInfoByIndex(int32_t index) { return &ClientServices::GetInstance()->m_realmList[index]; } +void ClientServices::GetRealmList() { + ClientServices::Connection()->GetRealmList(); +} + const char* ClientServices::GetSelectedRealmName() { if (!ClientServices::s_realmNameVar) { ClientServices::s_realmNameVar = CVar::Register( diff --git a/src/client/ClientServices.hpp b/src/client/ClientServices.hpp index 1d8fe5f..49812a5 100644 --- a/src/client/ClientServices.hpp +++ b/src/client/ClientServices.hpp @@ -36,6 +36,7 @@ class ClientServices : public LoginResponse { static const char* GetErrorToken(int32_t errorCode); static ClientServices* GetInstance(); static REALM_INFO* GetRealmInfoByIndex(int32_t index); + static void GetRealmList(); static const char* GetSelectedRealmName(); static const REALM_INFO* GetSelectedRealm(); static void Initialize(); diff --git a/src/net/connection/ClientConnection.cpp b/src/net/connection/ClientConnection.cpp index 7cdb286..e0a74b0 100644 --- a/src/net/connection/ClientConnection.cpp +++ b/src/net/connection/ClientConnection.cpp @@ -91,6 +91,17 @@ void ClientConnection::GetCharacterList() { } } +void ClientConnection::GetRealmList() { + this->Initiate(COP_GET_REALMS, 35, nullptr); + + if (ClientServices::LoginConnection()->IsLoggedOn()) { + ClientServices::LoginConnection()->GetRealmList(); + } + else { + ClientServices::LoginConnection()->Reconnect(); + } +} + int32_t ClientConnection::HandleConnect() { this->Complete(1, 5); diff --git a/src/net/connection/ClientConnection.hpp b/src/net/connection/ClientConnection.hpp index 445db0e..0af46fc 100644 --- a/src/net/connection/ClientConnection.hpp +++ b/src/net/connection/ClientConnection.hpp @@ -37,6 +37,7 @@ class ClientConnection : public RealmConnection { int32_t Disconnect(); void EnumerateCharacters(ENUMERATE_CHARACTERS_CALLBACK callback, void* param); void GetCharacterList(); + void GetRealmList(); void Initiate(WOWCS_OPS op, int32_t errorCode, void (*cleanup)()); int32_t IsConnected(); int32_t PollStatus(WOWCS_OPS& op, const char** msg, int32_t& result, int32_t& errorCode);