mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-10 12:36:45 +03:00
Add an index metafunction that throws an error. This will prevent the end user from accidentally reading a value which does not exist (as happened to me because of a typo).
This commit is contained in:
parent
2dd4f546fa
commit
a29326f407
1 changed files with 14 additions and 2 deletions
|
@ -11,6 +11,8 @@
|
||||||
|
|
||||||
extern bool const WarningsAsErrors;
|
extern bool const WarningsAsErrors;
|
||||||
|
|
||||||
|
constexpr auto LUA_CLASS_NAME{ "ItemInfo" };
|
||||||
|
|
||||||
GameScriptItemInfo::GameScriptItemInfo(short num) : m_item{ &g_Level.Items[num]}, m_num { num }
|
GameScriptItemInfo::GameScriptItemInfo(short num) : m_item{ &g_Level.Items[num]}, m_num { num }
|
||||||
{};
|
{};
|
||||||
|
|
||||||
|
@ -25,10 +27,20 @@ GameScriptItemInfo::~GameScriptItemInfo() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameScriptItemInfo::Register(sol::state * state)
|
static void index_error(GameScriptItemInfo & item, sol::object key)
|
||||||
{
|
{
|
||||||
state->new_usertype<GameScriptItemInfo>("ItemInfo",
|
std::string err = "Attempted to read non-existant var \"" + key.as<std::string>() + "\" from " + LUA_CLASS_NAME;
|
||||||
|
if (WarningsAsErrors)
|
||||||
|
{
|
||||||
|
throw std::runtime_error(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameScriptItemInfo::Register(sol::state* state)
|
||||||
|
{
|
||||||
|
state->new_usertype<GameScriptItemInfo>(LUA_CLASS_NAME,
|
||||||
"new", sol::overload(&GameScriptItemInfo::Create, &GameScriptItemInfo::CreateEmpty),
|
"new", sol::overload(&GameScriptItemInfo::Create, &GameScriptItemInfo::CreateEmpty),
|
||||||
|
sol::meta_function::index, &index_error,
|
||||||
"Init", &GameScriptItemInfo::Init,
|
"Init", &GameScriptItemInfo::Init,
|
||||||
"currentAnim", sol::property(&GameScriptItemInfo::GetCurrentAnim, &GameScriptItemInfo::SetCurrentAnim),
|
"currentAnim", sol::property(&GameScriptItemInfo::GetCurrentAnim, &GameScriptItemInfo::SetCurrentAnim),
|
||||||
"requiredAnim", sol::property(&GameScriptItemInfo::GetRequiredAnim, &GameScriptItemInfo::SetRequiredAnim),
|
"requiredAnim", sol::property(&GameScriptItemInfo::GetRequiredAnim, &GameScriptItemInfo::SetRequiredAnim),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue