From f5325e11e343274b40d12fa0dad05f590e44ffb7 Mon Sep 17 00:00:00 2001 From: Petr Mikheev Date: Tue, 31 Oct 2023 11:01:17 +0100 Subject: [PATCH] Rename mPermanentCallbacks -> mMenuScriptsCallbacks in LuaUtil::Storage --- components/lua/storage.cpp | 22 ++++++++++++---------- components/lua/storage.hpp | 3 ++- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/components/lua/storage.cpp b/components/lua/storage.cpp index 5594b31c6b..b2f972e853 100644 --- a/components/lua/storage.cpp +++ b/components/lua/storage.cpp @@ -49,14 +49,14 @@ namespace LuaUtil return !valid; }), mCallbacks.end()); - mPermanentCallbacks.erase(std::remove_if(mPermanentCallbacks.begin(), mPermanentCallbacks.end(), - [&](const Callback& callback) { - bool valid = callback.isValid(); - if (valid) - callback.tryCall(mSectionName, changedKey); - return !valid; - }), - mPermanentCallbacks.end()); + mMenuScriptsCallbacks.erase(std::remove_if(mMenuScriptsCallbacks.begin(), mMenuScriptsCallbacks.end(), + [&](const Callback& callback) { + bool valid = callback.isValid(); + if (valid) + callback.tryCall(mSectionName, changedKey); + return !valid; + }), + mMenuScriptsCallbacks.end()); mStorage->mRunningCallbacks.erase(this); } @@ -121,7 +121,7 @@ namespace LuaUtil sview["asTable"] = [](const SectionView& section) { return section.mSection->asTable(); }; sview["subscribe"] = [](const SectionView& section, const sol::table& callback) { std::vector& callbacks - = section.mForMenuScripts ? section.mSection->mPermanentCallbacks : section.mSection->mCallbacks; + = section.mForMenuScripts ? section.mSection->mMenuScriptsCallbacks : section.mSection->mCallbacks; if (!callbacks.empty() && callbacks.size() == callbacks.capacity()) { callbacks.erase( @@ -191,9 +191,11 @@ namespace LuaUtil while (it != mData.end()) { it->second->mCallbacks.clear(); + // Note that we don't clear menu callbacks for permanent sections + // because starting/loading a game doesn't reset menu scripts. if (!it->second->mPermanent) { - it->second->mPermanentCallbacks.clear(); + it->second->mMenuScriptsCallbacks.clear(); it->second->mValues.clear(); it = mData.erase(it); } diff --git a/components/lua/storage.hpp b/components/lua/storage.hpp index a785755f10..3376e7e50c 100644 --- a/components/lua/storage.hpp +++ b/components/lua/storage.hpp @@ -91,7 +91,8 @@ namespace LuaUtil std::string mSectionName; std::map> mValues; std::vector mCallbacks; - std::vector mPermanentCallbacks; + std::vector mMenuScriptsCallbacks; // menu callbacks are in a separate vector because we don't + // remove them in clear() bool mPermanent = true; static Value sEmpty; };