Small change

This commit is contained in:
fed 2023-12-04 16:55:40 +01:00
parent d31f7ae8a1
commit f562bad53b
No known key found for this signature in database
GPG Key ID: 1D2C630F04722996

View File

@ -37,8 +37,8 @@ namespace ui_scripting
const auto lui_updater = utils::nt::load_resource(LUI_UPDATER); const auto lui_updater = utils::nt::load_resource(LUI_UPDATER);
const auto lua_json = utils::nt::load_resource(LUA_JSON); const auto lua_json = utils::nt::load_resource(LUA_JSON);
using converted_func_t = std::function<arguments(const function_arguments& args)>; using lua_function_t = std::function<arguments(const function_arguments& args)>;
std::unordered_map<game::hks::cclosure*, converted_func_t> converted_functions; std::vector<std::unique_ptr<lua_function_t>> lua_functions;
utils::hook::detour hks_start_hook; utils::hook::detour hks_start_hook;
utils::hook::detour hks_shutdown_hook; utils::hook::detour hks_shutdown_hook;
@ -802,7 +802,7 @@ namespace ui_scripting
void hks_shutdown_stub() void hks_shutdown_stub()
{ {
camera::clear_lua(); camera::clear_lua();
converted_functions.clear(); lua_functions.clear();
globals = {}; globals = {};
hks_shutdown_hook.invoke<void>(); hks_shutdown_hook.invoke<void>();
} }
@ -872,7 +872,7 @@ namespace ui_scripting
return 0; return 0;
} }
const auto function = reinterpret_cast<converted_func_t*>(closure->m_upvalues->v.i64); const auto function = reinterpret_cast<lua_function_t*>(closure->m_upvalues->v.i64);
const auto args = get_return_values(); const auto args = get_return_values();
const auto results = function->operator()(args); const auto results = function->operator()(args);
@ -918,8 +918,8 @@ namespace ui_scripting
state->m_apistack.top = top; state->m_apistack.top = top;
const auto function = wrap_function(f); const auto function = wrap_function(f);
const auto [iterator, was_inserted] = converted_functions.insert(std::make_pair(closure, function)); const auto& iterator = lua_functions.insert(lua_functions.end(), std::make_unique<lua_function_t>(function));
const auto ptr = &iterator->second; const auto ptr = iterator->get();
closure->m_upvalues[0].t = game::hks::TUI64; closure->m_upvalues[0].t = game::hks::TUI64;
closure->m_upvalues[0].v.i64 = reinterpret_cast<size_t>(ptr); closure->m_upvalues[0].v.i64 = reinterpret_cast<size_t>(ptr);