mirror of
https://github.com/OpenMW/openmw.git
synced 2025-12-14 18:13:06 +00:00
[Lua] core.getGMST returns nil if there is no such game setting
This commit is contained in:
parent
96399b3d23
commit
256db78c6c
1 changed files with 21 additions and 9 deletions
|
|
@ -131,16 +131,28 @@ namespace MWLua
|
||||||
addTimeBindings(api, context, false);
|
addTimeBindings(api, context, false);
|
||||||
api["magic"] = initCoreMagicBindings(context);
|
api["magic"] = initCoreMagicBindings(context);
|
||||||
api["l10n"] = LuaUtil::initL10nLoader(lua->sol(), MWBase::Environment::get().getL10nManager());
|
api["l10n"] = LuaUtil::initL10nLoader(lua->sol(), MWBase::Environment::get().getL10nManager());
|
||||||
const MWWorld::Store<ESM::GameSetting>* gmst
|
const MWWorld::Store<ESM::GameSetting>* gmstStore
|
||||||
= &MWBase::Environment::get().getESMStore()->get<ESM::GameSetting>();
|
= &MWBase::Environment::get().getESMStore()->get<ESM::GameSetting>();
|
||||||
api["getGMST"] = [lua = context.mLua, gmst](const std::string& setting) -> sol::object {
|
api["getGMST"] = [lua = context.mLua, gmstStore](const std::string& setting) -> sol::object {
|
||||||
const ESM::Variant& value = gmst->find(setting)->mValue;
|
const ESM::GameSetting* gmst = gmstStore->search(setting);
|
||||||
if (value.getType() == ESM::VT_String)
|
if (gmst == nullptr)
|
||||||
return sol::make_object<std::string>(lua->sol(), value.getString());
|
return sol::nil;
|
||||||
else if (value.getType() == ESM::VT_Int)
|
const ESM::Variant& value = gmst->mValue;
|
||||||
return sol::make_object<int>(lua->sol(), value.getInteger());
|
switch (value.getType())
|
||||||
else
|
{
|
||||||
|
case ESM::VT_Float:
|
||||||
return sol::make_object<float>(lua->sol(), value.getFloat());
|
return sol::make_object<float>(lua->sol(), value.getFloat());
|
||||||
|
case ESM::VT_Short:
|
||||||
|
case ESM::VT_Long:
|
||||||
|
case ESM::VT_Int:
|
||||||
|
return sol::make_object<int>(lua->sol(), value.getInteger());
|
||||||
|
case ESM::VT_String:
|
||||||
|
return sol::make_object<std::string>(lua->sol(), value.getString());
|
||||||
|
case ESM::VT_Unknown:
|
||||||
|
case ESM::VT_None:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return sol::nil;
|
||||||
};
|
};
|
||||||
|
|
||||||
sol::table skill(context.mLua->sol(), sol::create);
|
sol::table skill(context.mLua->sol(), sol::create);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue