#include #include "value_conversion.hpp" #include "../execution.hpp" #include "../../../component/ui_scripting.hpp" namespace ui_scripting::lua { namespace { table convert_table(const sol::table& t) { table res{}; t.for_each([res](const sol::object& key, const sol::object& value) { res.set(convert(key), convert(value)); }); return res; } script_value convert_function(const sol::protected_function& function) { const auto closure = game::hks::cclosure_Create(*game::hks::lua_state, main_function_handler, 0, 0, 0); add_converted_function(closure, function); game::hks::HksObject value{}; value.t = game::hks::TCFUNCTION; value.v.cClosure = closure; return value; } } script_value convert(const sol::lua_value& value) { if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {value.as
()}; } if (value.is()) { return {value.as()}; } if (value.is()) { return {convert_table(value.as())}; } if (value.is()) { return {convert_function(value.as())}; } return {}; } sol::lua_value convert(lua_State* state, const script_value& value) { if (value.is()) { return {state, value.as()}; } if (value.is()) { return {state, value.as()}; } if (value.is()) { return {state, value.as()}; } if (value.is()) { return {state, value.as()}; } if (value.is()) { return {state, value.as()}; } if (value.is()) { return {state, value.as()}; } if (value.is
()) { return {state, value.as
()}; } if (value.is()) { return {state, value.as()}; } return {state, sol::lua_nil}; } }