diff --git a/TR5Main/Scripting/GameScriptItemInfo.cpp b/TR5Main/Scripting/GameScriptItemInfo.cpp index 91779338a..813932fff 100644 --- a/TR5Main/Scripting/GameScriptItemInfo.cpp +++ b/TR5Main/Scripting/GameScriptItemInfo.cpp @@ -11,6 +11,8 @@ extern bool const WarningsAsErrors; +constexpr auto LUA_CLASS_NAME{ "ItemInfo" }; + 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("ItemInfo", + std::string err = "Attempted to read non-existant var \"" + key.as() + "\" from " + LUA_CLASS_NAME; + if (WarningsAsErrors) + { + throw std::runtime_error(err); + } +} + +void GameScriptItemInfo::Register(sol::state* state) +{ + state->new_usertype(LUA_CLASS_NAME, "new", sol::overload(&GameScriptItemInfo::Create, &GameScriptItemInfo::CreateEmpty), + sol::meta_function::index, &index_error, "Init", &GameScriptItemInfo::Init, "currentAnim", sol::property(&GameScriptItemInfo::GetCurrentAnim, &GameScriptItemInfo::SetCurrentAnim), "requiredAnim", sol::property(&GameScriptItemInfo::GetRequiredAnim, &GameScriptItemInfo::SetRequiredAnim),