From 69241bd3d93f00fbcf6e668c000799e45e55dab3 Mon Sep 17 00:00:00 2001 From: Agent X <44549182+AgentXLP@users.noreply.github.com> Date: Thu, 5 Dec 2024 18:40:42 -0500 Subject: [PATCH] Add mod_file_exists --- autogen/lua_definitions/functions.lua | 6 ++++++ docs/lua/functions-5.md | 20 ++++++++++++++++++++ docs/lua/functions.md | 1 + src/pc/lua/smlua_functions_autogen.c | 18 ++++++++++++++++++ src/pc/lua/utils/smlua_misc_utils.c | 13 +++++++++++++ src/pc/lua/utils/smlua_misc_utils.h | 2 ++ 6 files changed, 60 insertions(+) diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua index 5295fc836..3e8c54c09 100644 --- a/autogen/lua_definitions/functions.lua +++ b/autogen/lua_definitions/functions.lua @@ -8563,6 +8563,12 @@ function is_transition_playing() -- ... end +--- @param filename string +--- @return boolean +function mod_file_exists(filename) + -- ... +end + --- @param name string --- @param level integer --- @param area integer diff --git a/docs/lua/functions-5.md b/docs/lua/functions-5.md index 4b2191ac6..b290b125e 100644 --- a/docs/lua/functions-5.md +++ b/docs/lua/functions-5.md @@ -3042,6 +3042,26 @@
+## [mod_file_exists](#mod_file_exists) + +### Lua Example +`local booleanValue = mod_file_exists(filename)` + +### Parameters +| Field | Type | +| ----- | ---- | +| filename | `string` | + +### Returns +- `boolean` + +### C Prototype +`bool mod_file_exists(const char* filename);` + +[:arrow_up_small:](#) + +
+ ## [movtexqc_register](#movtexqc_register) ### Lua Example diff --git a/docs/lua/functions.md b/docs/lua/functions.md index ea6821af1..7b3c7084b 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -1792,6 +1792,7 @@ - [hud_show](functions-5.md#hud_show) - [is_game_paused](functions-5.md#is_game_paused) - [is_transition_playing](functions-5.md#is_transition_playing) + - [mod_file_exists](functions-5.md#mod_file_exists) - [movtexqc_register](functions-5.md#movtexqc_register) - [play_transition](functions-5.md#play_transition) - [reset_window_title](functions-5.md#reset_window_title) diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index c53a0b66d..1cb01dfd9 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -31295,6 +31295,23 @@ int smlua_func_is_transition_playing(UNUSED lua_State* L) { return 1; } +int smlua_func_mod_file_exists(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 1) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "mod_file_exists", 1, top); + return 0; + } + + const char* filename = smlua_to_string(L, 1); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "mod_file_exists"); return 0; } + + lua_pushboolean(L, mod_file_exists(filename)); + + return 1; +} + int smlua_func_movtexqc_register(lua_State* L) { if (L == NULL) { return 0; } @@ -35149,6 +35166,7 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "hud_show", smlua_func_hud_show); smlua_bind_function(L, "is_game_paused", smlua_func_is_game_paused); smlua_bind_function(L, "is_transition_playing", smlua_func_is_transition_playing); + smlua_bind_function(L, "mod_file_exists", smlua_func_mod_file_exists); smlua_bind_function(L, "movtexqc_register", smlua_func_movtexqc_register); smlua_bind_function(L, "play_transition", smlua_func_play_transition); smlua_bind_function(L, "reset_window_title", smlua_func_reset_window_title); diff --git a/src/pc/lua/utils/smlua_misc_utils.c b/src/pc/lua/utils/smlua_misc_utils.c index 564a5c9c8..3de77c45b 100644 --- a/src/pc/lua/utils/smlua_misc_utils.c +++ b/src/pc/lua/utils/smlua_misc_utils.c @@ -508,6 +508,19 @@ void set_environment_region(u8 index, s32 value) { /// +bool mod_file_exists(const char* filename) { + if (gLuaActiveMod == NULL) { return false; } + + for (s32 i = 0; i < gLuaActiveMod->fileCount; i++) { + struct ModFile* file = &gLuaActiveMod->files[i]; + return !strcmp(file->relativePath, filename); + } + + return false; +} + +/// + void set_window_title(const char* title) { WAPI.set_window_title(title); } diff --git a/src/pc/lua/utils/smlua_misc_utils.h b/src/pc/lua/utils/smlua_misc_utils.h index 22847c9a6..cf279bca0 100644 --- a/src/pc/lua/utils/smlua_misc_utils.h +++ b/src/pc/lua/utils/smlua_misc_utils.h @@ -127,6 +127,8 @@ void set_volume_env(f32 volume); f32 get_environment_region(u8 index); void set_environment_region(u8 index, s32 value); +bool mod_file_exists(const char* filename); + void set_window_title(const char* title); void reset_window_title(void);