Added code (to finish) for executing LUA triggers

This commit is contained in:
MontyTRC89 2021-07-17 05:56:40 +02:00
parent 0caaab8c52
commit f0698a3c80
3 changed files with 16 additions and 3 deletions

View file

@ -948,12 +948,12 @@ void TestTriggers(short *data, int heavy, int HeavyFlags)
if (volume->status == TriggerStatus::TS_OUTSIDE) if (volume->status == TriggerStatus::TS_OUTSIDE)
{ {
volume->status = TriggerStatus::TS_ENTERING; volume->status = TriggerStatus::TS_ENTERING;
//g_GameScript->ExecuteScript(); g_GameScript->ExecuteFunction(volume->onEnter);
} }
else else
{ {
volume->status = TriggerStatus::TS_INSIDE; volume->status = TriggerStatus::TS_INSIDE;
//g_GameScript->ExecuteScript(); g_GameScript->ExecuteFunction(volume->onInside);
} }
} }
else else
@ -963,7 +963,7 @@ void TestTriggers(short *data, int heavy, int HeavyFlags)
if (volume->status == TriggerStatus::TS_INSIDE) if (volume->status == TriggerStatus::TS_INSIDE)
{ {
volume->status = TriggerStatus::TS_LEAVING; volume->status = TriggerStatus::TS_LEAVING;
//g_GameScript->ExecuteScript(); g_GameScript->ExecuteFunction(volume->onLeave);
} }
else else
{ {

View file

@ -427,6 +427,18 @@ void LuaVariables::SetVariable(std::string key, sol::object value)
} }
} }
void GameScript::ExecuteFunction(std::string name)
{
/*sol::protected_function func = (*m_lua)[name.c_str()];
auto r = func();
if (WarningsAsErrors && !r.valid())
{
sol::error err = r;
std::cerr << "An error occurred: " << err.what() << "\n";
throw std::runtime_error(err.what());
}*/
}
static void doCallback(sol::protected_function const & func) { static void doCallback(sol::protected_function const & func) {
auto r = func(); auto r = func();
if (WarningsAsErrors && !r.valid()) if (WarningsAsErrors && !r.valid())

View file

@ -69,6 +69,7 @@ public:
bool ExecuteTrigger(short index); bool ExecuteTrigger(short index);
void ExecuteFunction(std::string name);
void MakeItemInvisible(short id); void MakeItemInvisible(short id);
std::unique_ptr<GameScriptItemInfo> GetItemById(int id); std::unique_ptr<GameScriptItemInfo> GetItemById(int id);
std::unique_ptr<GameScriptItemInfo> GetItemByName(std::string name); std::unique_ptr<GameScriptItemInfo> GetItemByName(std::string name);