From 92c248d7289b553571713f5ce362bfa4675cc795 Mon Sep 17 00:00:00 2001 From: MysterD Date: Thu, 3 Feb 2022 00:42:48 -0800 Subject: [PATCH] Added chat message creation to Lua --- autogen/convert_functions.py | 2 ++ docs/lua/functions.md | 31 ++++++++++++++++++++++++++++ src/pc/djui/djui_chat_message.c | 8 +++---- src/pc/djui/djui_chat_message.h | 4 ++-- src/pc/lua/smlua_functions_autogen.c | 18 ++++++++++++++++ 5 files changed, 56 insertions(+), 7 deletions(-) diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py index 9912c9aa..412b1a9e 100644 --- a/autogen/convert_functions.py +++ b/autogen/convert_functions.py @@ -27,6 +27,7 @@ in_files = [ "src/game/thread6.c", "src/pc/djui/djui_popup.h", "src/pc/network/network_utils.h", + "src/pc/djui/djui_chat_message.h", ] override_allowed_functions = { @@ -48,6 +49,7 @@ override_disallowed_functions = { "src/game/mario_actions_submerged.c": [ "^[us]32 act_.*" ], "src/game/mario_step.h": [ " stub_mario_step", "transfer_bully_speed"], "src/game/mario.h": [ " init_mario" ], + "src/pc/djui/djui_chat_message.h": [ "create_from" ], } ########################################################### diff --git a/docs/lua/functions.md b/docs/lua/functions.md index 7a9a82fa..b0aa48ec 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -20,6 +20,11 @@
+- djui_chat_message.h + - [djui_chat_message_create](#djui_chat_message_create) + +
+ - djui_popup.h - [djui_popup_create](#djui_popup_create) @@ -502,6 +507,32 @@
+--- +# functions from djui_chat_message.h + +
+ + +## [djui_chat_message_create](#djui_chat_message_create) + +### Lua Example +`djui_chat_message_create(message)` + +### Parameters +| Field | Type | +| ----- | ---- | +| message | string | + +### Returns +- None + +### C Prototype +`void djui_chat_message_create(const char* message);` + +[:arrow_up_small:](#) + +
+ --- # functions from djui_popup.h diff --git a/src/pc/djui/djui_chat_message.c b/src/pc/djui/djui_chat_message.c index a1697acc..a2373923 100644 --- a/src/pc/djui/djui_chat_message.c +++ b/src/pc/djui/djui_chat_message.c @@ -43,16 +43,16 @@ static void djui_chat_message_destroy(struct DjuiBase* base) { free(chatMessage); } -struct DjuiChatMessage* djui_chat_message_create_from(u8 globalIndex, char* message) { +void djui_chat_message_create_from(u8 globalIndex, const char* message) { struct NetworkPlayer* np = network_player_from_global_index(globalIndex); u8* rgb = get_player_color(np->paletteIndex, 0); char chatMsg[256] = { 0 }; snprintf(chatMsg, 256, "\\#%02x%02x%02x\\%s:\\#dcdcdc\\ %s", rgb[0], rgb[1], rgb[2], (np != NULL) ? np->name : "Player", message); play_sound((globalIndex == gNetworkPlayerLocal->globalIndex) ? SOUND_MENU_MESSAGE_DISAPPEAR : SOUND_MENU_MESSAGE_APPEAR, gDefaultSoundArgs); - return djui_chat_message_create(chatMsg); + djui_chat_message_create(chatMsg); } -struct DjuiChatMessage* djui_chat_message_create(char* message) { +void djui_chat_message_create(const char* message) { struct DjuiChatMessage* chatMessage = calloc(1, sizeof(struct DjuiChatMessage)); struct DjuiBase* base = &chatMessage->base; djui_base_init(&gDjuiChatBox->chatFlow->base, base, djui_chat_message_render, djui_chat_message_destroy); @@ -86,6 +86,4 @@ struct DjuiChatMessage* djui_chat_message_create(char* message) { // figure out chat message width f32 messageWidth = djui_text_find_width(chatText, 10); chatMessage->messageWidth = messageWidth + 8; - - return chatMessage; } diff --git a/src/pc/djui/djui_chat_message.h b/src/pc/djui/djui_chat_message.h index 777901e4..83829d6f 100644 --- a/src/pc/djui/djui_chat_message.h +++ b/src/pc/djui/djui_chat_message.h @@ -9,5 +9,5 @@ struct DjuiChatMessage { f32 createTime; }; -struct DjuiChatMessage* djui_chat_message_create_from(u8 globalIndex, char* message); -struct DjuiChatMessage* djui_chat_message_create(char* message); +void djui_chat_message_create_from(u8 globalIndex, const char* message); +void djui_chat_message_create(const char* message); diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index bb1ef1e9..4b89ebee 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -185,6 +185,21 @@ int smlua_func_update_character_anim_offset(lua_State* L) { return 1; } + ///////////////////////// + // djui_chat_message.h // +///////////////////////// + +int smlua_func_djui_chat_message_create(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 1)) { return 0; } + + const char* message = smlua_to_string(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + + djui_chat_message_create(message); + + return 1; +} + ////////////////// // djui_popup.h // ////////////////// @@ -2904,6 +2919,9 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "play_character_sound_offset", smlua_func_play_character_sound_offset); smlua_bind_function(L, "update_character_anim_offset", smlua_func_update_character_anim_offset); + // djui_chat_message.h + smlua_bind_function(L, "djui_chat_message_create", smlua_func_djui_chat_message_create); + // djui_popup.h smlua_bind_function(L, "djui_popup_create", smlua_func_djui_popup_create);