Some changes

This commit is contained in:
Federico Cecchetto 2022-06-26 02:27:57 +02:00
parent 9e9848d915
commit 439e505f0a
2 changed files with 23 additions and 3 deletions

View File

@ -43,6 +43,8 @@ namespace scripting
std::string current_file;
unsigned int current_file_id{};
std::unordered_map<unsigned int, std::string> canonical_string_table;
void vm_notify_stub(const unsigned int notify_list_owner_id, const game::scr_string_t string_value,
game::VariableValue* top)
{
@ -73,6 +75,11 @@ namespace scripting
void g_shutdown_game_stub(const int free_scripts)
{
if (free_scripts)
{
canonical_string_table.clear();
}
lua::engine::stop();
g_shutdown_game_hook.invoke<void>(free_scripts);
}
@ -105,9 +112,21 @@ namespace scripting
process_script_hook.invoke<void>(filename);
}
std::vector<std::string> get_token_names(unsigned int id)
{
auto result = scripting::find_token(id);
if (canonical_string_table.find(id) != canonical_string_table.end())
{
result.push_back(canonical_string_table[id]);
}
return result;
}
void add_function(const std::string& file, unsigned int id, const char* pos)
{
const auto function_names = scripting::find_token(id);
const auto function_names = scripting::get_token_names(id);
for (const auto& name : function_names)
{
script_function_table[file][name] = pos;
@ -118,7 +137,7 @@ namespace scripting
{
if (current_file_id)
{
const auto names = scripting::find_token(current_file_id);
const auto names = scripting::get_token_names(current_file_id);
for (const auto& name : names)
{
add_function(name, thread_name, code_pos);
@ -147,7 +166,7 @@ namespace scripting
unsigned int sl_get_canonical_string_stub(const char* str)
{
const auto result = sl_get_canonical_string_hook.invoke<unsigned int>(str);
scripting::token_map[str] = result;
canonical_string_table[result] = str;
return result;
}

View File

@ -1782,5 +1782,6 @@ namespace scripting
{"main", 616},
{"player", 794},
{"default_start", 10126},
{"maps/_utility", 42407},
};
}