From f0200c7c089b28a33ce42ac95a45f255a72bccd9 Mon Sep 17 00:00:00 2001 From: VDm Date: Sat, 12 Apr 2025 17:41:30 +0400 Subject: [PATCH] feat(glue): implement CGlueMgr::PollCreateCharacter --- src/glue/CGlueMgr.cpp | 34 ++++++++++++++++++++++++++++++++++ src/glue/CGlueMgr.hpp | 1 + 2 files changed, 35 insertions(+) diff --git a/src/glue/CGlueMgr.cpp b/src/glue/CGlueMgr.cpp index 680ba24..049efb4 100644 --- a/src/glue/CGlueMgr.cpp +++ b/src/glue/CGlueMgr.cpp @@ -366,6 +366,11 @@ int32_t CGlueMgr::Idle(const void* a1, void* a2) { break; } + case IDLE_CREATE_CHARACTER: { + CGlueMgr::PollCreateCharacter(errorCode, msg, complete, result, op); + break; + } + case IDLE_DELETE_CHARACTER: { CGlueMgr::PollDeleteCharacter(errorCode, msg, complete, result, op); break; @@ -376,6 +381,11 @@ int32_t CGlueMgr::Idle(const void* a1, void* a2) { break; } + case IDLE_WORLD_LOGIN: { + FrameScript_SignalEvent(3u, "%s%s", "OKAY", msg); + break; + } + case IDLE_12: { if (CGlueMgr::m_patchDownload) { CGlueMgr::PatchDownloadIdle(); @@ -719,6 +729,30 @@ void CGlueMgr::PollRealmList(int32_t errorCode, const char* msg, int32_t complet CGlueMgr::m_showedDisconnect = 0; } } +void CGlueMgr::PollCreateCharacter(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op) { + FrameScript_SignalEvent(4u, "%s", msg); + + if (CGlueMgr::HandleBattlenetDisconnect()) { + CGlueMgr::m_idleState = IDLE_NONE; + CGlueMgr::m_showedDisconnect = 0; + } + + if (!complete) { + return; + } + + if (result) { + CGlueMgr::m_idleState = IDLE_NONE; + CGlueMgr::m_showedDisconnect = 0; + FrameScript_SignalEvent(5u, 0); + FrameScript_SignalEvent(0xCu, 0); + CGlueMgr::SetScreen("charselect"); + } else { + FrameScript_SignalEvent(3u, "%s%s", "OKAY", msg); + CGlueMgr::m_idleState = IDLE_NONE; + CGlueMgr::m_showedDisconnect = 0; + } +} void CGlueMgr::PollDeleteCharacter(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op) { FrameScript_SignalEvent(4, "%s", msg); diff --git a/src/glue/CGlueMgr.hpp b/src/glue/CGlueMgr.hpp index a3ce85f..f4d3cd3 100644 --- a/src/glue/CGlueMgr.hpp +++ b/src/glue/CGlueMgr.hpp @@ -90,6 +90,7 @@ class CGlueMgr { static void PollLoginServerLogin(); static void PollCharacterList(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op); static void PollRealmList(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op); + static void PollCreateCharacter(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op); static void PollDeleteCharacter(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op); static void PollUserSurvey(); static void CancelLogin();