fix: fix LegacyScriptEventManager

This commit is contained in:
KobeBryant114514
2024-09-21 20:47:53 +08:00
Unverified
parent 892bcaab50
commit 91d36339a8
+9 -6
View File
@@ -12,7 +12,7 @@ public:
std::string getNextEventId() { std::string getNextEventId() {
mNextEventId++; mNextEventId++;
return std::to_string(mNextEventId); return "GMLIB_EVENT_" + std::to_string(mNextEventId);
} }
void emplaceListener(std::string const& scriptEventId, ll::event::ListenerPtr listenerPtr) { void emplaceListener(std::string const& scriptEventId, ll::event::ListenerPtr listenerPtr) {
@@ -24,18 +24,21 @@ public:
mEventListeners.erase(scriptEventId); mEventListeners.erase(scriptEventId);
} }
static std::unique_ptr<LegacyScriptEventManager>& getInstance() { static LegacyScriptEventManager& getInstance() {
static std::unique_ptr<LegacyScriptEventManager> instance; static std::unique_ptr<LegacyScriptEventManager> instance;
return instance; if (!instance) {
instance = std::make_unique<LegacyScriptEventManager>();
}
return *instance;
} }
}; };
#define REGISTER_EVENT_LISTEN(eventType, callFunction, eventParams, cancelFunction, otherFunction) \ #define REGISTER_EVENT_LISTEN(eventType, callFunction, eventParams, cancelFunction, otherFunction) \
eventManager->emplaceListener( \ eventManager.emplaceListener( \
eventId, \ eventId, \
eventBus.emplaceListener<eventType>([eventName, eventId, &eventBus, &eventManager](eventType& ev) -> void { \ eventBus.emplaceListener<eventType>([eventName, eventId, &eventBus, &eventManager](eventType& ev) -> void { \
if (!RemoteCall::hasFunc(eventName, eventId)) { \ if (!RemoteCall::hasFunc(eventName, eventId)) { \
eventManager->removeListener(eventId); \ eventManager.removeListener(eventId); \
return; \ return; \
} \ } \
bool result = true; \ bool result = true; \
@@ -50,7 +53,7 @@ public:
void Export_Event_API() { void Export_Event_API() {
RemoteCall::exportAs("GMLIB_Event_API", "getNextScriptEventId", []() -> std::string { RemoteCall::exportAs("GMLIB_Event_API", "getNextScriptEventId", []() -> std::string {
return LegacyScriptEventManager::getInstance()->getNextEventId(); return LegacyScriptEventManager::getInstance().getNextEventId();
}); });
auto& eventBus = ll::event::EventBus::getInstance(); auto& eventBus = ll::event::EventBus::getInstance();
auto& eventManager = LegacyScriptEventManager::getInstance(); auto& eventManager = LegacyScriptEventManager::getInstance();