diff --git a/apps/openmw/mwlua/context.hpp b/apps/openmw/mwlua/context.hpp index def38a5309..dfab241b4d 100644 --- a/apps/openmw/mwlua/context.hpp +++ b/apps/openmw/mwlua/context.hpp @@ -15,8 +15,13 @@ namespace MWLua struct Context { - bool mIsMenu; - bool mIsGlobal; + enum Type + { + Menu, + Global, + Local, + }; + Type mType; LuaManager* mLuaManager; LuaUtil::LuaState* mLua; LuaUtil::UserdataSerializer* mSerializer; diff --git a/apps/openmw/mwlua/luamanagerimp.cpp b/apps/openmw/mwlua/luamanagerimp.cpp index 5c8a3ff909..4d726994fa 100644 --- a/apps/openmw/mwlua/luamanagerimp.cpp +++ b/apps/openmw/mwlua/luamanagerimp.cpp @@ -83,25 +83,24 @@ namespace MWLua void LuaManager::init() { - Context context; - context.mIsMenu = false; - context.mIsGlobal = true; - context.mLuaManager = this; - context.mLua = &mLua; - context.mObjectLists = &mObjectLists; - context.mLuaEvents = &mLuaEvents; - context.mSerializer = mGlobalSerializer.get(); + Context globalContext; + globalContext.mType = Context::Global; + globalContext.mLuaManager = this; + globalContext.mLua = &mLua; + globalContext.mObjectLists = &mObjectLists; + globalContext.mLuaEvents = &mLuaEvents; + globalContext.mSerializer = mGlobalSerializer.get(); - Context localContext = context; - localContext.mIsGlobal = false; + Context localContext = globalContext; + localContext.mType = Context::Local; localContext.mSerializer = mLocalSerializer.get(); - Context menuContext = context; - menuContext.mIsMenu = true; + Context menuContext = globalContext; + menuContext.mType = Context::Menu; - for (const auto& [name, package] : initCommonPackages(context)) + for (const auto& [name, package] : initCommonPackages(globalContext)) mLua.addCommonPackage(name, package); - for (const auto& [name, package] : initGlobalPackages(context)) + for (const auto& [name, package] : initGlobalPackages(globalContext)) mGlobalScripts.addPackage(name, package); for (const auto& [name, package] : initMenuPackages(menuContext)) mMenuScripts.addPackage(name, package); diff --git a/apps/openmw/mwlua/uibindings.cpp b/apps/openmw/mwlua/uibindings.cpp index 4ac9940b92..3502149116 100644 --- a/apps/openmw/mwlua/uibindings.cpp +++ b/apps/openmw/mwlua/uibindings.cpp @@ -295,7 +295,7 @@ namespace MWLua { std::string_view menuCache = "openmw_ui_menu"; std::string_view gameCache = "openmw_ui_game"; - std::string_view cacheKey = context.mIsMenu ? menuCache : gameCache; + std::string_view cacheKey = context.mType == Context::Menu ? menuCache : gameCache; { sol::state_view& lua = context.mLua->sol(); if (lua[cacheKey] != sol::nil)