diff --git a/src/pc/djui/djui.c b/src/pc/djui/djui.c index 34204393..426acc52 100644 --- a/src/pc/djui/djui.c +++ b/src/pc/djui/djui.c @@ -91,6 +91,12 @@ void djui_lua_error(char* text) { sDjuiLuaErrorTimeout = 30 * 5; } +static void djui_reset_hud_params(void) { + djui_hud_set_resolution(RESOLUTION_DJUI); + djui_hud_set_font(FONT_NORMAL); + djui_hud_set_rotation(0, 0, 0); +} + void djui_render(void) { if (gDjuiDisabled) { return; } @@ -100,7 +106,8 @@ void djui_render(void) { create_dl_ortho_matrix(); djui_gfx_displaylist_begin(); - smlua_call_event_hooks(HOOK_ON_HUD_RENDER); + djui_reset_hud_params(); + smlua_call_event_hooks_with_reset_func(HOOK_ON_HUD_RENDER, djui_reset_hud_params); djui_panel_update(); djui_popup_update(); diff --git a/src/pc/lua/smlua_hooks.c b/src/pc/lua/smlua_hooks.c index c0a59bcc..af3aebf4 100644 --- a/src/pc/lua/smlua_hooks.c +++ b/src/pc/lua/smlua_hooks.c @@ -157,6 +157,22 @@ void smlua_call_event_hooks(enum LuaHookedEventType hookType) { } } +void smlua_call_event_hooks_with_reset_func(enum LuaHookedEventType hookType, void (*resetFunc)(void)) { + lua_State* L = gLuaState; + if (L == NULL) { return; } + struct LuaHookedEvent* hook = &sHookedEvents[hookType]; + for (int i = 0; i < hook->count; i++) { + // push the callback onto the stack + lua_rawgeti(L, LUA_REGISTRYINDEX, hook->reference[i]); + + // call the callback + if (0 != smlua_call_hook(L, 0, 0, 0, hook->mod[i])) { + LOG_LUA("Failed to call the event_hook callback: %u", hookType); + } + if (resetFunc) { resetFunc(); } + } +} + void smlua_call_event_hooks_bool_param(enum LuaHookedEventType hookType, bool value) { lua_State* L = gLuaState; if (L == NULL) { return; } diff --git a/src/pc/lua/smlua_hooks.h b/src/pc/lua/smlua_hooks.h index fb2a4423..e0b84479 100644 --- a/src/pc/lua/smlua_hooks.h +++ b/src/pc/lua/smlua_hooks.h @@ -99,6 +99,7 @@ extern u32 gLuaMarioActionIndex; int smlua_hook_custom_bhv(BehaviorScript *bhvScript, const char *bhvName); void smlua_call_event_hooks(enum LuaHookedEventType hookType); +void smlua_call_event_hooks_with_reset_func(enum LuaHookedEventType hookType, void (*resetFunc)(void)); void smlua_call_event_hooks_bool_param(enum LuaHookedEventType hookType, bool value); void smlua_call_event_hooks_bool_param_ret_bool(enum LuaHookedEventType hookType, bool value, bool* returnValue); void smlua_call_event_hooks_mario_param(enum LuaHookedEventType hookType, struct MarioState* m);