From 91d36339a8b9597c98ff2e64813bfe0907abb1ec Mon Sep 17 00:00:00 2001 From: KobeBryant114514 <116721335+KobeBryant114514@users.noreply.github.com> Date: Sat, 21 Sep 2024 20:47:53 +0800 Subject: [PATCH] fix: fix LegacyScriptEventManager --- src/EventAPI.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/EventAPI.cpp b/src/EventAPI.cpp index 9821080..cac376f 100644 --- a/src/EventAPI.cpp +++ b/src/EventAPI.cpp @@ -12,7 +12,7 @@ public: std::string getNextEventId() { mNextEventId++; - return std::to_string(mNextEventId); + return "GMLIB_EVENT_" + std::to_string(mNextEventId); } void emplaceListener(std::string const& scriptEventId, ll::event::ListenerPtr listenerPtr) { @@ -24,18 +24,21 @@ public: mEventListeners.erase(scriptEventId); } - static std::unique_ptr& getInstance() { + static LegacyScriptEventManager& getInstance() { static std::unique_ptr instance; - return instance; + if (!instance) { + instance = std::make_unique(); + } + return *instance; } }; #define REGISTER_EVENT_LISTEN(eventType, callFunction, eventParams, cancelFunction, otherFunction) \ - eventManager->emplaceListener( \ + eventManager.emplaceListener( \ eventId, \ eventBus.emplaceListener([eventName, eventId, &eventBus, &eventManager](eventType& ev) -> void { \ if (!RemoteCall::hasFunc(eventName, eventId)) { \ - eventManager->removeListener(eventId); \ + eventManager.removeListener(eventId); \ return; \ } \ bool result = true; \ @@ -50,7 +53,7 @@ public: void Export_Event_API() { RemoteCall::exportAs("GMLIB_Event_API", "getNextScriptEventId", []() -> std::string { - return LegacyScriptEventManager::getInstance()->getNextEventId(); + return LegacyScriptEventManager::getInstance().getNextEventId(); }); auto& eventBus = ll::event::EventBus::getInstance(); auto& eventManager = LegacyScriptEventManager::getInstance();