From 1eb97f5bb39672daf8dceef7c3c2958bbf54f094 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sun, 30 Nov 2025 17:43:22 -0600 Subject: [PATCH] feat(glue): add CGlueMgr::InitializeFFX --- src/glue/CGlueMgr.cpp | 22 +++++++++++++++++++--- src/glue/CGlueMgr.hpp | 6 ++++++ src/glue/CMakeLists.txt | 1 + 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/glue/CGlueMgr.cpp b/src/glue/CGlueMgr.cpp index 3eef448..68307d8 100644 --- a/src/glue/CGlueMgr.cpp +++ b/src/glue/CGlueMgr.cpp @@ -4,9 +4,10 @@ #include "client/Util.hpp" #include "console/CVar.hpp" #include "db/Db.hpp" +#include "ffx/Effect.hpp" #include "glue/CCharacterSelection.hpp" -#include "glue/Character.hpp" #include "glue/CRealmList.hpp" +#include "glue/Character.hpp" #include "glue/GlueScript.hpp" #include "glue/Types.hpp" #include "gx/Coordinate.hpp" @@ -59,8 +60,11 @@ bool CGlueMgr::m_authenticated; const CharacterSelectionDisplay* CGlueMgr::m_characterInfo; int32_t CGlueMgr::m_clientKickReason; char CGlueMgr::m_currentScreen[64]; +EffectDeath* CGlueMgr::m_deathEffect; int32_t CGlueMgr::m_disconnectPending; int32_t CGlueMgr::m_displayingQueueDialog; +int32_t CGlueMgr::m_ffxActive; +EffectGlow* CGlueMgr::m_glowEffect; CGlueMgr::GLUE_IDLE_STATE CGlueMgr::m_idleState; int32_t CGlueMgr::m_initialized; int32_t CGlueMgr::m_lastLoginResult; @@ -444,6 +448,19 @@ void CGlueMgr::Initialize() { // AccountDataInitializeBasicSystem(); } +void CGlueMgr::InitializeFFX() { + if (CGlueMgr::m_ffxActive) { + return; + } + + CGlueMgr::m_ffxActive = 1; + + // TODO FFX::Init(); + + CGlueMgr::m_deathEffect = STORM_NEW(EffectDeath); + CGlueMgr::m_glowEffect = STORM_NEW(EffectGlow); +} + void CGlueMgr::LoginServerLogin(const char* accountName, const char* password) { if (!CGlueMgr::m_scandllOkayToLogIn || !CGlueMgr::m_acceptedTOS || !CGlueMgr::m_acceptedEULA || CGlueMgr::m_idleState != IDLE_NONE) { return; @@ -990,8 +1007,7 @@ void CGlueMgr::Resume() { FrameScript_SignalEvent(22, nullptr); - // TODO - // CGlueMgr::InitializeFFX(); + CGlueMgr::InitializeFFX(); // TODO // ClientServices::SetMessageHandler(SMSG_CHARACTER_RENAME_RESULT, CGlueMgr::OnCharRenameResult, 0); diff --git a/src/glue/CGlueMgr.hpp b/src/glue/CGlueMgr.hpp index b4cdd69..6e58044 100644 --- a/src/glue/CGlueMgr.hpp +++ b/src/glue/CGlueMgr.hpp @@ -7,6 +7,8 @@ class CDataStore; class CSimpleTop; +class EffectDeath; +class EffectGlow; struct CharacterSelectionDisplay; class CGlueMgr { @@ -40,8 +42,11 @@ class CGlueMgr { static const CharacterSelectionDisplay* m_characterInfo; static int32_t m_clientKickReason; static char m_currentScreen[]; + static EffectDeath* m_deathEffect; static int32_t m_disconnectPending; static int32_t m_displayingQueueDialog; + static int32_t m_ffxActive; + static EffectGlow* m_glowEffect; static GLUE_IDLE_STATE m_idleState; static int32_t m_initialized; static int32_t m_lastLoginResult; @@ -69,6 +74,7 @@ class CGlueMgr { static int32_t HandleDisplaySizeChanged(const CSizeEvent& event); static int32_t Idle(const void* a1, void* a2); // TODO a1: const EVENT_DATA_IDLE* static void Initialize(); + static void InitializeFFX(); static void LoginServerLogin(const char* accountName, const char* password); static int32_t NetDisconnectHandler(const void* a1, void* a2); static int32_t OnKickReasonMsg(void* param, NETMESSAGE msgId, uint32_t time, CDataStore* msg); diff --git a/src/glue/CMakeLists.txt b/src/glue/CMakeLists.txt index 9708864..6adad11 100644 --- a/src/glue/CMakeLists.txt +++ b/src/glue/CMakeLists.txt @@ -16,6 +16,7 @@ target_link_libraries(glue console db event + ffx gx model net