diff --git a/src/glue/CGlueMgr.cpp b/src/glue/CGlueMgr.cpp index 26f901e..3767ee5 100644 --- a/src/glue/CGlueMgr.cpp +++ b/src/glue/CGlueMgr.cpp @@ -382,6 +382,11 @@ int32_t CGlueMgr::Idle(const void* a1, void* a2) { break; } + case IDLE_REALM_LIST: { + CGlueMgr::PollRealmList(msg, complete, result, op); + break; + } + case IDLE_ENTER_WORLD: { CGlueMgr::PollEnterWorld(); break; @@ -703,6 +708,39 @@ void CGlueMgr::PollLoginServerLogin() { } } +void CGlueMgr::PollRealmList(const char* msg, int32_t complete, int32_t result, WOWCS_OPS op) { + FrameScript_SignalEvent(UPDATE_STATUS_DIALOG, "%s", msg); + + if (CGlueMgr::HandleBattlenetDisconnect()) { + CGlueMgr::SetIdleState(IDLE_NONE); + } + + if (!complete) { + return; + } + + // Error + + if (result == 0) { + FrameScript_SignalEvent(OPEN_STATUS_DIALOG, "%s%s", "OKAY", msg); + + CGlueMgr::SetIdleState(IDLE_NONE); + } + + // Success + + CGlueMgr::SetIdleState(IDLE_NONE); + + FrameScript_SignalEvent(CLOSE_STATUS_DIALOG, nullptr); + + CRealmList::UpdateList(); + + if (CGlueMgr::m_accountMsgAvailable) { + FrameScript_SignalEvent(ACCOUNT_MESSAGES_AVAILABLE, nullptr); + CGlueMgr::m_accountMsgAvailable = 0; + } +} + void CGlueMgr::QuitGame() { ClientPostClose(0); } diff --git a/src/glue/CGlueMgr.hpp b/src/glue/CGlueMgr.hpp index 72a7b0d..255e2c5 100644 --- a/src/glue/CGlueMgr.hpp +++ b/src/glue/CGlueMgr.hpp @@ -74,6 +74,7 @@ class CGlueMgr { static void PollCharacterList(const char* msg, int32_t complete, int32_t result, int32_t errorCode); static void PollEnterWorld(); static void PollLoginServerLogin(); + static void PollRealmList(const char* msg, int32_t complete, int32_t result, WOWCS_OPS op); static void QuitGame(); static void Resume(); static void SetCurrentAccount(const char* accountName);