From 9401a79cdcd37de642f74248124cf8f784712b9f Mon Sep 17 00:00:00 2001 From: MysterD Date: Mon, 28 Sep 2020 20:11:18 -0700 Subject: [PATCH] Fix chat so remote is filled-in and local is non-filled-in star --- build-windows-visual-studio/sm64ex.vcxproj | 1 + .../sm64ex.vcxproj.filters | 3 ++ src/game/chat.c | 32 ++++++++----------- src/game/chat.h | 1 + src/pc/network/packets/packet_chat.c | 2 +- 5 files changed, 19 insertions(+), 20 deletions(-) diff --git a/build-windows-visual-studio/sm64ex.vcxproj b/build-windows-visual-studio/sm64ex.vcxproj index 853d89c6c..3fa8f31f1 100644 --- a/build-windows-visual-studio/sm64ex.vcxproj +++ b/build-windows-visual-studio/sm64ex.vcxproj @@ -3965,6 +3965,7 @@ + diff --git a/build-windows-visual-studio/sm64ex.vcxproj.filters b/build-windows-visual-studio/sm64ex.vcxproj.filters index b0fa94429..d30786582 100644 --- a/build-windows-visual-studio/sm64ex.vcxproj.filters +++ b/build-windows-visual-studio/sm64ex.vcxproj.filters @@ -15066,6 +15066,9 @@ Source Files\src\pc\network\packets + + Source Files\src\pc\network\packets + diff --git a/src/game/chat.c b/src/game/chat.c index 2a30afacd..bfca10662 100644 --- a/src/game/chat.c +++ b/src/game/chat.c @@ -21,7 +21,7 @@ struct ChatMessage { u8 dialog[CHAT_DIALOG_MAX]; - u8 isLocal; + enum ChatMessageType type; u16 life; }; @@ -51,13 +51,13 @@ static void render_chat_message(struct ChatMessage* chatMessage, u8 index) { create_dl_scale_matrix(MENU_MTX_NOPUSH, chatBoxWidth, CHATBOX_SCALE_Y, 1.0f); u8 boxR, boxG, boxB; - if (chatMessage->isLocal == 2) { + if (chatMessage->type == CMT_INPUT) { boxR = 150; boxG = 150; boxB = 255; } else { f32 rgbScale = (((f32)chatMessage->life - ((f32)CHAT_LIFE_MAX * 0.98f)) / ((f32)CHAT_LIFE_MAX * 0.02f)); - if (chatMessage->isLocal || rgbScale < 0) { rgbScale = 0; } + if (chatMessage->type == CMT_LOCAL || rgbScale < 0) { rgbScale = 0; } boxR = 255 * rgbScale; boxG = 255 * rgbScale; boxB = 255 * rgbScale; @@ -69,18 +69,11 @@ static void render_chat_message(struct ChatMessage* chatMessage, u8 index) { create_dl_scale_matrix(MENU_MTX_NOPUSH, CHAT_SCALE / chatBoxWidth, CHAT_SCALE / CHATBOX_SCALE_Y, 1.0f); u8 textR, textG, textB; - if (chatMessage->isLocal == 1) { - textR = 200; - textG = 200; - textB = 255; - } else if (chatMessage->isLocal == 2) { - textR = 0; - textG = 0; - textB = 0; - } else { - textR = 255; - textG = 255; - textB = 255; + switch (chatMessage->type) { + case CMT_LOCAL: textR = 200; textG = 200; textB = 255; break; + case CMT_INPUT: textR = 0; textG = 0; textB = 0; break; + case CMT_SYSTEM: textR = 255; textG = 255; textB = 190; break; + default: textR = 255; textG = 255; textB = 255; } gSPDisplayList(gDisplayListHead++, dl_ia_text_begin); @@ -94,6 +87,7 @@ static void render_chat_message(struct ChatMessage* chatMessage, u8 index) { void chat_add_message(char* ascii, enum ChatMessageType chatMessageType) { u8 character = '?'; switch (chatMessageType) { + case CMT_INPUT: case CMT_LOCAL: character = 0xFD; break; case CMT_REMOTE: character = 0xFA; break; case CMT_SYSTEM: character = 0xF9; break; @@ -103,9 +97,9 @@ void chat_add_message(char* ascii, enum ChatMessageType chatMessageType) { msg->dialog[1] = 0x9E; str_ascii_to_dialog(ascii, &msg->dialog[2], MIN(strlen(ascii), CHAT_DIALOG_MAX - 3)); msg->life = (sSelectedFileNum != 0) ? CHAT_LIFE_MAX : CHAT_LIFE_MAX / 3; - msg->isLocal = (chatMessageType == CMT_LOCAL); + msg->type = chatMessageType; onMessageIndex = (onMessageIndex + 1) % CHAT_MESSAGES_MAX; - play_sound(msg->isLocal ? SOUND_MENU_MESSAGE_DISAPPEAR : SOUND_MENU_MESSAGE_APPEAR, gDefaultSoundArgs); + play_sound((msg->type == CMT_LOCAL) ? SOUND_MENU_MESSAGE_DISAPPEAR : SOUND_MENU_MESSAGE_APPEAR, gDefaultSoundArgs); } static void chat_stop_input(void) { @@ -117,7 +111,7 @@ static void chat_send_input(void) { sInChatInput = FALSE; keyboard_stop_text_input(); if (strlen(gTextInput) == 0) { return; } - chat_add_message(gTextInput, TRUE); + chat_add_message(gTextInput, CMT_LOCAL); network_send_chat(gTextInput); } @@ -130,10 +124,10 @@ void render_chat(void) { u8 count = 0; if (sInChatInput) { struct ChatMessage inputMessage = { 0 }; + inputMessage.type = CMT_INPUT; inputMessage.dialog[0] = 0xFD; inputMessage.dialog[1] = 0x9E; str_ascii_to_dialog(gTextInput, &inputMessage.dialog[2], MIN(strlen(gTextInput), CHAT_DIALOG_MAX - 3)); - inputMessage.isLocal = 2; inputMessage.life = CHAT_LIFE_MAX; render_chat_message(&inputMessage, count++); } diff --git a/src/game/chat.h b/src/game/chat.h index e7f91ab62..e1dfd0a17 100644 --- a/src/game/chat.h +++ b/src/game/chat.h @@ -5,6 +5,7 @@ enum ChatMessageType { CMT_LOCAL, CMT_REMOTE, CMT_SYSTEM, + CMT_INPUT, }; void render_chat(void); diff --git a/src/pc/network/packets/packet_chat.c b/src/pc/network/packets/packet_chat.c index bba058766..abd2e4ff4 100644 --- a/src/pc/network/packets/packet_chat.c +++ b/src/pc/network/packets/packet_chat.c @@ -45,7 +45,7 @@ void network_receive_chat(struct Packet* p) { onRemoteChatId = (onRemoteChatId + 1) % MAX_CHAT_IDS; // add the message - chat_add_message(remoteMessage, FALSE); + chat_add_message(remoteMessage, CMT_REMOTE); return; }