1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-29 20:36:52 +00:00

Lua Context: Replace exclusive bools with type enum

This commit is contained in:
uramer 2024-02-14 17:30:50 +01:00 committed by Anton Uramer
parent 5d3aa62e56
commit 80ced23a69
3 changed files with 21 additions and 17 deletions

View file

@ -15,8 +15,13 @@ namespace MWLua
struct Context struct Context
{ {
bool mIsMenu; enum Type
bool mIsGlobal; {
Menu,
Global,
Local,
};
Type mType;
LuaManager* mLuaManager; LuaManager* mLuaManager;
LuaUtil::LuaState* mLua; LuaUtil::LuaState* mLua;
LuaUtil::UserdataSerializer* mSerializer; LuaUtil::UserdataSerializer* mSerializer;

View file

@ -83,25 +83,24 @@ namespace MWLua
void LuaManager::init() void LuaManager::init()
{ {
Context context; Context globalContext;
context.mIsMenu = false; globalContext.mType = Context::Global;
context.mIsGlobal = true; globalContext.mLuaManager = this;
context.mLuaManager = this; globalContext.mLua = &mLua;
context.mLua = &mLua; globalContext.mObjectLists = &mObjectLists;
context.mObjectLists = &mObjectLists; globalContext.mLuaEvents = &mLuaEvents;
context.mLuaEvents = &mLuaEvents; globalContext.mSerializer = mGlobalSerializer.get();
context.mSerializer = mGlobalSerializer.get();
Context localContext = context; Context localContext = globalContext;
localContext.mIsGlobal = false; localContext.mType = Context::Local;
localContext.mSerializer = mLocalSerializer.get(); localContext.mSerializer = mLocalSerializer.get();
Context menuContext = context; Context menuContext = globalContext;
menuContext.mIsMenu = true; menuContext.mType = Context::Menu;
for (const auto& [name, package] : initCommonPackages(context)) for (const auto& [name, package] : initCommonPackages(globalContext))
mLua.addCommonPackage(name, package); mLua.addCommonPackage(name, package);
for (const auto& [name, package] : initGlobalPackages(context)) for (const auto& [name, package] : initGlobalPackages(globalContext))
mGlobalScripts.addPackage(name, package); mGlobalScripts.addPackage(name, package);
for (const auto& [name, package] : initMenuPackages(menuContext)) for (const auto& [name, package] : initMenuPackages(menuContext))
mMenuScripts.addPackage(name, package); mMenuScripts.addPackage(name, package);

View file

@ -295,7 +295,7 @@ namespace MWLua
{ {
std::string_view menuCache = "openmw_ui_menu"; std::string_view menuCache = "openmw_ui_menu";
std::string_view gameCache = "openmw_ui_game"; 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(); sol::state_view& lua = context.mLua->sol();
if (lua[cacheKey] != sol::nil) if (lua[cacheKey] != sol::nil)