From db38b3d55d0c36d7024c84e3dcbeaf0798286e76 Mon Sep 17 00:00:00 2001
From: Agent X <44549182+Agent-11@users.noreply.github.com>
Date: Wed, 8 Mar 2023 18:54:06 -0500
Subject: [PATCH] smlua_exec_str (run Lua from string)
Seemed useful for debug or any other purposes, why not?
---
autogen/lua_definitions/functions.lua | 6 ++++++
docs/lua/functions-4.md | 20 ++++++++++++++++++++
docs/lua/functions.md | 1 +
src/pc/lua/smlua.c | 3 ++-
src/pc/lua/smlua_functions_autogen.c | 18 ++++++++++++++++++
src/pc/lua/utils/smlua_misc_utils.h | 2 ++
6 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua
index af7a8f1d..50a2330f 100644
--- a/autogen/lua_definitions/functions.lua
+++ b/autogen/lua_definitions/functions.lua
@@ -8418,6 +8418,12 @@ function set_override_near(near)
-- ...
end
+--- @param str string
+--- @return nil
+function smlua_exec_str(str)
+ -- ...
+end
+
--- @param name string
--- @return integer
function smlua_model_util_get_id(name)
diff --git a/docs/lua/functions-4.md b/docs/lua/functions-4.md
index ffe2aaa1..3ff0ece0 100644
--- a/docs/lua/functions-4.md
+++ b/docs/lua/functions-4.md
@@ -8658,6 +8658,26 @@
+## [smlua_exec_str](#smlua_exec_str)
+
+### Lua Example
+`smlua_exec_str(str)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| str | `string` |
+
+### Returns
+- None
+
+### C Prototype
+`void smlua_exec_str(const char* str);`
+
+[:arrow_up_small:](#)
+
+
+
---
# functions from smlua_model_utils.h
diff --git a/docs/lua/functions.md b/docs/lua/functions.md
index 7e9ae5ca..200fe568 100644
--- a/docs/lua/functions.md
+++ b/docs/lua/functions.md
@@ -1560,6 +1560,7 @@
- [set_override_far](functions-4.md#set_override_far)
- [set_override_fov](functions-4.md#set_override_fov)
- [set_override_near](functions-4.md#set_override_near)
+ - [smlua_exec_str](functions-4.md#smlua_exec_str)
diff --git a/src/pc/lua/smlua.c b/src/pc/lua/smlua.c
index f8abc897..f13c1fb8 100644
--- a/src/pc/lua/smlua.c
+++ b/src/pc/lua/smlua.c
@@ -7,6 +7,7 @@
#include "pc/lua/utils/smlua_audio_utils.h"
#include "pc/lua/utils/smlua_model_utils.h"
#include "pc/lua/utils/smlua_level_utils.h"
+#include "pc/lua/utils/smlua_misc_utils.h"
#include "pc/djui/djui.h"
lua_State* gLuaState = NULL;
@@ -52,7 +53,7 @@ static void smlua_exec_file(char* path) {
lua_pop(L, lua_gettop(L));
}
-static void smlua_exec_str(char* str) {
+void smlua_exec_str(const char* str) {
lua_State* L = gLuaState;
if (luaL_dostring(L, str) != LUA_OK) {
LOG_LUA("Failed to load lua string.");
diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c
index 9cb90305..2427181f 100644
--- a/src/pc/lua/smlua_functions_autogen.c
+++ b/src/pc/lua/smlua_functions_autogen.c
@@ -27411,6 +27411,23 @@ int smlua_func_set_override_near(lua_State* L) {
return 1;
}
+int smlua_func_smlua_exec_str(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", "smlua_exec_str", 1, top);
+ return 0;
+ }
+
+ const char* str = smlua_to_string(L, 1);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "smlua_exec_str"); return 0; }
+
+ smlua_exec_str(str);
+
+ return 1;
+}
+
/////////////////////////
// smlua_model_utils.h //
/////////////////////////
@@ -30370,6 +30387,7 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "set_override_far", smlua_func_set_override_far);
smlua_bind_function(L, "set_override_fov", smlua_func_set_override_fov);
smlua_bind_function(L, "set_override_near", smlua_func_set_override_near);
+ smlua_bind_function(L, "smlua_exec_str", smlua_func_smlua_exec_str);
// smlua_model_utils.h
smlua_bind_function(L, "smlua_model_util_get_id", smlua_func_smlua_model_util_get_id);
diff --git a/src/pc/lua/utils/smlua_misc_utils.h b/src/pc/lua/utils/smlua_misc_utils.h
index 42537f40..b157f01d 100644
--- a/src/pc/lua/utils/smlua_misc_utils.h
+++ b/src/pc/lua/utils/smlua_misc_utils.h
@@ -96,4 +96,6 @@ void play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue);
bool course_is_main_course(u16 levelNum);
+void smlua_exec_str(const char* str);
+
#endif