Added chat message creation to Lua

This commit is contained in:
MysterD 2022-02-03 00:42:48 -08:00
parent 271a375510
commit a3467bb6dc
5 changed files with 56 additions and 7 deletions

View file

@ -27,6 +27,7 @@ in_files = [
"src/game/thread6.c", "src/game/thread6.c",
"src/pc/djui/djui_popup.h", "src/pc/djui/djui_popup.h",
"src/pc/network/network_utils.h", "src/pc/network/network_utils.h",
"src/pc/djui/djui_chat_message.h",
] ]
override_allowed_functions = { override_allowed_functions = {
@ -48,6 +49,7 @@ override_disallowed_functions = {
"src/game/mario_actions_submerged.c": [ "^[us]32 act_.*" ], "src/game/mario_actions_submerged.c": [ "^[us]32 act_.*" ],
"src/game/mario_step.h": [ " stub_mario_step", "transfer_bully_speed"], "src/game/mario_step.h": [ " stub_mario_step", "transfer_bully_speed"],
"src/game/mario.h": [ " init_mario" ], "src/game/mario.h": [ " init_mario" ],
"src/pc/djui/djui_chat_message.h": [ "create_from" ],
} }
########################################################### ###########################################################

View file

@ -20,6 +20,11 @@
<br /> <br />
- djui_chat_message.h
- [djui_chat_message_create](#djui_chat_message_create)
<br />
- djui_popup.h - djui_popup.h
- [djui_popup_create](#djui_popup_create) - [djui_popup_create](#djui_popup_create)
@ -502,6 +507,32 @@
<br /> <br />
---
# functions from djui_chat_message.h
<br />
## [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:](#)
<br />
--- ---
# functions from djui_popup.h # functions from djui_popup.h

View file

@ -43,16 +43,16 @@ static void djui_chat_message_destroy(struct DjuiBase* base) {
free(chatMessage); 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); struct NetworkPlayer* np = network_player_from_global_index(globalIndex);
u8* rgb = get_player_color(np->paletteIndex, 0); u8* rgb = get_player_color(np->paletteIndex, 0);
char chatMsg[256] = { 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); 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); 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 DjuiChatMessage* chatMessage = calloc(1, sizeof(struct DjuiChatMessage));
struct DjuiBase* base = &chatMessage->base; struct DjuiBase* base = &chatMessage->base;
djui_base_init(&gDjuiChatBox->chatFlow->base, base, djui_chat_message_render, djui_chat_message_destroy); 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 // figure out chat message width
f32 messageWidth = djui_text_find_width(chatText, 10); f32 messageWidth = djui_text_find_width(chatText, 10);
chatMessage->messageWidth = messageWidth + 8; chatMessage->messageWidth = messageWidth + 8;
return chatMessage;
} }

View file

@ -9,5 +9,5 @@ struct DjuiChatMessage {
f32 createTime; f32 createTime;
}; };
struct DjuiChatMessage* djui_chat_message_create_from(u8 globalIndex, char* message); void djui_chat_message_create_from(u8 globalIndex, const char* message);
struct DjuiChatMessage* djui_chat_message_create(char* message); void djui_chat_message_create(const char* message);

View file

@ -185,6 +185,21 @@ int smlua_func_update_character_anim_offset(lua_State* L) {
return 1; 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 // // 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, "play_character_sound_offset", smlua_func_play_character_sound_offset);
smlua_bind_function(L, "update_character_anim_offset", smlua_func_update_character_anim_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 // djui_popup.h
smlua_bind_function(L, "djui_popup_create", smlua_func_djui_popup_create); smlua_bind_function(L, "djui_popup_create", smlua_func_djui_popup_create);