From 45bb6ca6f3746a8f7130ecd8367ad83ceff0dee0 Mon Sep 17 00:00:00 2001 From: 20dka Date: Wed, 28 Aug 2024 22:13:59 +0200 Subject: [PATCH] fill out lua EventName --- include/TLuaEngine.h | 8 ++++---- src/TLuaEngine.cpp | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/TLuaEngine.h b/include/TLuaEngine.h index 658d753..07ede1b 100644 --- a/include/TLuaEngine.h +++ b/include/TLuaEngine.h @@ -167,7 +167,7 @@ public: void ReportErrors(const std::vector>& Results); bool HasState(TLuaStateId StateId); [[nodiscard]] std::shared_ptr EnqueueScript(TLuaStateId StateID, const TLuaChunk& Script); - [[nodiscard]] std::shared_ptr EnqueueFunctionCall(TLuaStateId StateID, const std::string& FunctionName, const std::vector& Args); + [[nodiscard]] std::shared_ptr EnqueueFunctionCall(TLuaStateId StateID, const std::string& FunctionName, const std::vector& Args, const std::string& EventName); void EnsureStateExists(TLuaStateId StateId, const std::string& Name, bool DontCallOnInit = false); void RegisterEvent(const std::string& EventName, TLuaStateId StateId, const std::string& FunctionName); /** @@ -192,7 +192,7 @@ public: for (const auto& Event : mLuaEvents.at(EventName)) { for (const auto& Function : Event.second) { if (Event.first != IgnoreId) { - auto Result = EnqueueFunctionCall(Event.first, Function, Arguments); + auto Result = EnqueueFunctionCall(Event.first, Function, Arguments, EventName); Results.push_back(Result); AddResultToCheck(Result); } @@ -211,7 +211,7 @@ public: std::vector Arguments { TLuaValue { std::forward(Args) }... }; const auto Handlers = GetEventHandlersForState(EventName, StateId); for (const auto& Handler : Handlers) { - Results.push_back(EnqueueFunctionCall(StateId, Handler, Arguments)); + Results.push_back(EnqueueFunctionCall(StateId, Handler, Arguments, EventName)); } return Results; } @@ -245,7 +245,7 @@ private: StateThreadData(const StateThreadData&) = delete; virtual ~StateThreadData() noexcept { beammp_debug("\"" + mStateId + "\" destroyed"); } [[nodiscard]] std::shared_ptr EnqueueScript(const TLuaChunk& Script); - [[nodiscard]] std::shared_ptr EnqueueFunctionCall(const std::string& FunctionName, const std::vector& Args); + [[nodiscard]] std::shared_ptr EnqueueFunctionCall(const std::string& FunctionName, const std::vector& Args, const std::string& EventName); [[nodiscard]] std::shared_ptr EnqueueFunctionCallFromCustomEvent(const std::string& FunctionName, const std::vector& Args, const std::string& EventName, CallStrategy Strategy); void RegisterEvent(const std::string& EventName, const std::string& FunctionName); void AddPath(const fs::path& Path); // to be added to path and cpath diff --git a/src/TLuaEngine.cpp b/src/TLuaEngine.cpp index d423c69..0d45bd3 100644 --- a/src/TLuaEngine.cpp +++ b/src/TLuaEngine.cpp @@ -358,9 +358,9 @@ std::shared_ptr TLuaEngine::EnqueueScript(TLuaStateId StateID, const return mLuaStates.at(StateID)->EnqueueScript(Script); } -std::shared_ptr TLuaEngine::EnqueueFunctionCall(TLuaStateId StateID, const std::string& FunctionName, const std::vector& Args) { +std::shared_ptr TLuaEngine::EnqueueFunctionCall(TLuaStateId StateID, const std::string& FunctionName, const std::vector& Args, const std::string& EventName) { std::unique_lock Lock(mLuaStatesMutex); - return mLuaStates.at(StateID)->EnqueueFunctionCall(FunctionName, Args); + return mLuaStates.at(StateID)->EnqueueFunctionCall(FunctionName, Args, EventName); } void TLuaEngine::CollectAndInitPlugins() { @@ -433,7 +433,7 @@ void TLuaEngine::EnsureStateExists(TLuaStateId StateId, const std::string& Name, mLuaStates[StateId] = std::move(DataPtr); RegisterEvent("onInit", StateId, "onInit"); if (!DontCallOnInit) { - auto Res = EnqueueFunctionCall(StateId, "onInit", {}); + auto Res = EnqueueFunctionCall(StateId, "onInit", {}, "onInit"); Res->WaitUntilReady(); if (Res->Error && Res->ErrorMessage != TLuaEngine::BeamMPFnNotFoundError) { beammp_lua_error("Calling \"onInit\" on \"" + StateId + "\" failed: " + Res->ErrorMessage); @@ -1042,12 +1042,12 @@ std::shared_ptr TLuaEngine::StateThreadData::EnqueueFunctionCallFrom } } -std::shared_ptr TLuaEngine::StateThreadData::EnqueueFunctionCall(const std::string& FunctionName, const std::vector& Args) { +std::shared_ptr TLuaEngine::StateThreadData::EnqueueFunctionCall(const std::string& FunctionName, const std::vector& Args, const std::string& EventName) { auto Result = std::make_shared(); Result->StateId = mStateId; Result->Function = FunctionName; std::unique_lock Lock(mStateFunctionQueueMutex); - mStateFunctionQueue.push_back({ FunctionName, Result, Args, "" }); + mStateFunctionQueue.push_back({ FunctionName, Result, Args, EventName }); mStateFunctionQueueCond.notify_all(); return Result; }