From 39e035239c81669591724459efc32e5426f3250c Mon Sep 17 00:00:00 2001 From: EmeraldLockdown <86802223+EmeraldLoc@users.noreply.github.com> Date: Fri, 6 Sep 2024 16:08:22 -0500 Subject: [PATCH] Add `djui_attempting_to_open_playerlist` (#195) --- autogen/lua_definitions/functions.lua | 5 +++++ docs/lua/functions-5.md | 18 ++++++++++++++++++ docs/lua/functions.md | 1 + src/pc/djui/djui_interactable.c | 16 ++++++++++------ src/pc/djui/djui_panel_playerlist.c | 1 + src/pc/djui/djui_panel_playerlist.h | 1 + src/pc/lua/smlua_functions_autogen.c | 16 ++++++++++++++++ src/pc/lua/utils/smlua_misc_utils.c | 4 ++++ src/pc/lua/utils/smlua_misc_utils.h | 1 + 9 files changed, 57 insertions(+), 6 deletions(-) diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua index 29da577d8..ccd0bd685 100644 --- a/autogen/lua_definitions/functions.lua +++ b/autogen/lua_definitions/functions.lua @@ -8181,6 +8181,11 @@ function deref_s32_pointer(pointer) -- ... end +--- @return boolean +function djui_attempting_to_open_playerlist() + -- ... +end + --- @return boolean function djui_is_playerlist_open() -- ... diff --git a/docs/lua/functions-5.md b/docs/lua/functions-5.md index 9e36d7a89..207fccb76 100644 --- a/docs/lua/functions-5.md +++ b/docs/lua/functions-5.md @@ -1953,6 +1953,24 @@
+## [djui_attempting_to_open_playerlist](#djui_attempting_to_open_playerlist) + +### Lua Example +`local booleanValue = djui_attempting_to_open_playerlist()` + +### Parameters +- None + +### Returns +- `boolean` + +### C Prototype +`bool djui_attempting_to_open_playerlist(void);` + +[:arrow_up_small:](#) + +
+ ## [djui_is_playerlist_open](#djui_is_playerlist_open) ### Lua Example diff --git a/docs/lua/functions.md b/docs/lua/functions.md index 51c3307ec..5cba926d8 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -1719,6 +1719,7 @@ - [allocate_mario_action](functions-5.md#allocate_mario_action) - [course_is_main_course](functions-5.md#course_is_main_course) - [deref_s32_pointer](functions-5.md#deref_s32_pointer) + - [djui_attempting_to_open_playerlist](functions-5.md#djui_attempting_to_open_playerlist) - [djui_is_playerlist_open](functions-5.md#djui_is_playerlist_open) - [djui_is_popup_disabled](functions-5.md#djui_is_popup_disabled) - [djui_menu_get_font](functions-5.md#djui_menu_get_font) diff --git a/src/pc/djui/djui_interactable.c b/src/pc/djui/djui_interactable.c index 295f6e8b9..767e5870b 100644 --- a/src/pc/djui/djui_interactable.c +++ b/src/pc/djui/djui_interactable.c @@ -235,15 +235,18 @@ bool djui_interactable_on_key_down(int scancode) { } } - if ((gDjuiPlayerList != NULL || gDjuiModList != NULL) && gServerSettings.enablePlayerList) { + if ((gDjuiPlayerList != NULL || gDjuiModList != NULL)) { for (int i = 0; i < MAX_BINDS; i++) { if (scancode == (int)configKeyPlayerList[i] && !gDjuiInMainMenu && gNetworkType != NT_NONE) { - if (gDjuiPlayerList != NULL) { - djui_base_set_visible(&gDjuiPlayerList->base, true); - } - if (gDjuiModList != NULL) { - djui_base_set_visible(&gDjuiModList->base, true); + if (gServerSettings.enablePlayerList) { + if (gDjuiPlayerList != NULL) { + djui_base_set_visible(&gDjuiPlayerList->base, true); + } + if (gDjuiModList != NULL) { + djui_base_set_visible(&gDjuiModList->base, true); + } } + gAttemptingToOpenPlayerlist = true; break; } if (gDjuiPlayerList->base.visible) { @@ -295,6 +298,7 @@ void djui_interactable_on_key_up(int scancode) { if (gDjuiModList != NULL) { djui_base_set_visible(&gDjuiModList->base, false); } + gAttemptingToOpenPlayerlist = false; break; } } diff --git a/src/pc/djui/djui_panel_playerlist.c b/src/pc/djui/djui_panel_playerlist.c index f2f168a09..74906dbb9 100644 --- a/src/pc/djui/djui_panel_playerlist.c +++ b/src/pc/djui/djui_panel_playerlist.c @@ -11,6 +11,7 @@ #include "pc/utils/misc.h" struct DjuiThreePanel* gDjuiPlayerList = NULL; +bool gAttemptingToOpenPlayerlist = false; static struct DjuiFlowLayout* djuiRow[MAX_PLAYERS] = { 0 }; static struct DjuiImage* djuiImages[MAX_PLAYERS] = { 0 }; diff --git a/src/pc/djui/djui_panel_playerlist.h b/src/pc/djui/djui_panel_playerlist.h index 7380b673b..2f4f3b117 100644 --- a/src/pc/djui/djui_panel_playerlist.h +++ b/src/pc/djui/djui_panel_playerlist.h @@ -2,6 +2,7 @@ #include "djui.h" extern struct DjuiThreePanel* gDjuiPlayerList; +extern bool gAttemptingToOpenPlayerlist; extern const u8 sPlayerListSize; extern u8 sPageIndex; diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index e1f2a50aa..de3e254ac 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -30152,6 +30152,21 @@ int smlua_func_deref_s32_pointer(lua_State* L) { return 1; } +int smlua_func_djui_attempting_to_open_playerlist(UNUSED lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 0) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "djui_attempting_to_open_playerlist", 0, top); + return 0; + } + + + lua_pushboolean(L, djui_attempting_to_open_playerlist()); + + return 1; +} + int smlua_func_djui_is_playerlist_open(UNUSED lua_State* L) { if (L == NULL) { return 0; } @@ -34668,6 +34683,7 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "allocate_mario_action", smlua_func_allocate_mario_action); smlua_bind_function(L, "course_is_main_course", smlua_func_course_is_main_course); smlua_bind_function(L, "deref_s32_pointer", smlua_func_deref_s32_pointer); + smlua_bind_function(L, "djui_attempting_to_open_playerlist", smlua_func_djui_attempting_to_open_playerlist); smlua_bind_function(L, "djui_is_playerlist_open", smlua_func_djui_is_playerlist_open); smlua_bind_function(L, "djui_is_popup_disabled", smlua_func_djui_is_popup_disabled); smlua_bind_function(L, "djui_menu_get_font", smlua_func_djui_menu_get_font); diff --git a/src/pc/lua/utils/smlua_misc_utils.c b/src/pc/lua/utils/smlua_misc_utils.c index 2b2521091..3f41ec827 100644 --- a/src/pc/lua/utils/smlua_misc_utils.c +++ b/src/pc/lua/utils/smlua_misc_utils.c @@ -91,6 +91,10 @@ bool djui_is_playerlist_open(void) { return gDjuiPlayerList->base.visible; } +bool djui_attempting_to_open_playerlist(void) { + return gAttemptingToOpenPlayerlist; +} + enum DjuiFontType djui_menu_get_font(void) { return configDjuiThemeFont == 0 ? FONT_NORMAL : FONT_ALIASED; } diff --git a/src/pc/lua/utils/smlua_misc_utils.h b/src/pc/lua/utils/smlua_misc_utils.h index 19f3669ed..d09d292b0 100644 --- a/src/pc/lua/utils/smlua_misc_utils.h +++ b/src/pc/lua/utils/smlua_misc_utils.h @@ -50,6 +50,7 @@ bool djui_is_popup_disabled(void); void djui_set_popup_disabled_override(bool value); void djui_reset_popup_disabled_override(void); bool djui_is_playerlist_open(void); +bool djui_attempting_to_open_playerlist(void); enum DjuiFontType djui_menu_get_font(void); s8 get_dialog_box_state(void);