From c500403cd9c6e0992072f82c37f8c68cdebff7de Mon Sep 17 00:00:00 2001 From: Tristan Cormier Date: Sat, 14 Feb 2026 20:48:40 -0500 Subject: [PATCH] feat(glue): implement CGlueMgr::PollCreateCharacter --- src/glue/CGlueMgr.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/glue/CGlueMgr.hpp | 1 + 2 files changed, 37 insertions(+) diff --git a/src/glue/CGlueMgr.cpp b/src/glue/CGlueMgr.cpp index 6a21ac4..51c9da5 100644 --- a/src/glue/CGlueMgr.cpp +++ b/src/glue/CGlueMgr.cpp @@ -393,6 +393,11 @@ int32_t CGlueMgr::Idle(const void* a1, void* a2) { break; } + case IDLE_CREATE_CHARACTER: { + CGlueMgr::PollCreateCharacter(msg, complete, result); + break; + } + case IDLE_DELETE_CHARACTER: { CGlueMgr::PollDeleteCharacter(msg, complete, result); break; @@ -763,6 +768,37 @@ void CGlueMgr::PollCharacterList(const char* msg, int32_t complete, int32_t resu } } +void CGlueMgr::PollCreateCharacter(const char* msg, int32_t complete, int32_t result) { + FrameScript_SignalEvent(UPDATE_STATUS_DIALOG, "%s", msg); + + if (CGlueMgr::HandleBattlenetDisconnect()) { + SetIdleState(IDLE_NONE); + } + + if (!complete) { + return; + } + + // Error + + if (result == 0) { + FrameScript_SignalEvent(OPEN_STATUS_DIALOG, "%s%s", "OKAY", msg); + + CGlueMgr::SetIdleState(IDLE_NONE); + + return; + } + + // Success + + CGlueMgr::SetIdleState(IDLE_NONE); + + FrameScript_SignalEvent(CLOSE_STATUS_DIALOG, nullptr); + FrameScript_SignalEvent(SELECT_LAST_CHARACTER, nullptr); + + CGlueMgr::SetScreen("charselect"); +} + void CGlueMgr::PollDeleteCharacter(const char* msg, int32_t complete, int32_t result) { FrameScript_SignalEvent(UPDATE_STATUS_DIALOG, "%s", msg); diff --git a/src/glue/CGlueMgr.hpp b/src/glue/CGlueMgr.hpp index 258fbee..63727d8 100644 --- a/src/glue/CGlueMgr.hpp +++ b/src/glue/CGlueMgr.hpp @@ -80,6 +80,7 @@ class CGlueMgr { static int32_t OnKickReasonMsg(void* param, NETMESSAGE msgId, uint32_t time, CDataStore* msg); static void PollAccountLogin(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op); static void PollCharacterList(const char* msg, int32_t complete, int32_t result, int32_t errorCode); + static void PollCreateCharacter(const char* msg, int32_t complete, int32_t result); static void PollDeleteCharacter(const char* msg, int32_t complete, int32_t result); static void PollEnterWorld(); static void PollLoginServerLogin();