From 951b72145f9d68d7c2638b4d14c1c337731da502 Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sun, 3 Jul 2022 23:48:40 +0800 Subject: [PATCH 1/2] Document src/field_message_box.c --- include/field_message_box.h | 2 +- src/cable_club.c | 4 +- src/field_message_box.c | 87 ++++++++++++++++++++----------------- 3 files changed, 51 insertions(+), 42 deletions(-) diff --git a/include/field_message_box.h b/include/field_message_box.h index 54f0b0fd5..0f81efb20 100644 --- a/include/field_message_box.h +++ b/include/field_message_box.h @@ -7,7 +7,7 @@ bool8 ShowFieldMessage(const u8 *message); bool8 ShowFieldAutoScrollMessage(const u8 *message); void HideFieldMessageBox(void); bool8 IsFieldMessageBoxHidden(void); -bool8 textbox_any_visible(void); +u8 GetFieldMessageBoxType(void); void InitFieldMessageBox(void); #endif // GUARD_FIELD_MESSAGE_BOX_H diff --git a/src/cable_club.c b/src/cable_club.c index f3e4244d3..1f7415b04 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -219,7 +219,7 @@ static void Task_Linkup1(u8 taskId) static void Task_LinkupMaster_2(u8 taskId) { - if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !textbox_any_visible()) + if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !GetFieldMessageBoxType()) { gTasks[taskId].data[3] = 0; gTasks[taskId].func = Task_LinkupMaster_3; @@ -246,7 +246,7 @@ static void Task_LinkupMaster_3(u8 taskId) static void Task_LinkupMaster_4(u8 taskId) { - if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !textbox_any_visible()) + if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !GetFieldMessageBoxType()) { if (GetSavedPlayerCount() != GetLinkPlayerCount_2()) { diff --git a/src/field_message_box.c b/src/field_message_box.c index c9d54a2a9..2281ba134 100644 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -5,22 +5,30 @@ #include "script.h" #include "text_window.h" -static EWRAM_DATA u8 sMessageBoxType = 0; +enum +{ + FIELD_MESSAGE_BOX_HIDDEN, + FIELD_MESSAGE_BOX_UNUSED, + FIELD_MESSAGE_BOX_NORMAL, + FIELD_MESSAGE_BOX_AUTO_SCROLL, +}; -static void textbox_fdecode_auto_and_task_add(const u8 *str); -static void textbox_auto_and_task_add(void); +static EWRAM_DATA u8 sMessageBoxType = FIELD_MESSAGE_BOX_HIDDEN; + +static void ExpandStringAndStartDrawFieldMessageBox(const u8 *str); +static void StartDrawFieldMessageBox(void); void InitFieldMessageBox(void) { - sMessageBoxType = 0; + sMessageBoxType = FIELD_MESSAGE_BOX_HIDDEN; gTextFlags.canABSpeedUpPrint = FALSE; gTextFlags.useAlternateDownArrow = FALSE; gTextFlags.autoScroll = FALSE; } -static void Task_RunFieldMessageBoxPrinter(u8 taskId) +static void Task_DrawFieldMessageBox(u8 taskId) { - struct Task * task = &gTasks[taskId]; + struct Task *task = &gTasks[taskId]; switch (task->data[0]) { case 0: @@ -30,13 +38,9 @@ static void Task_RunFieldMessageBoxPrinter(u8 taskId) TextWindow_LoadTilesStdFrame1(0, 0x200); } else if (!IsMsgSignPost()) - { LoadStdWindowFrameGfx(); - } else - { LoadSignPostWindowFrameGfx(); - } task->data[0]++; break; case 1: @@ -46,95 +50,100 @@ static void Task_RunFieldMessageBoxPrinter(u8 taskId) case 2: if (RunTextPrinters_CheckPrinter0Active() != TRUE) { - sMessageBoxType = 0; + sMessageBoxType = FIELD_MESSAGE_BOX_HIDDEN; DestroyTask(taskId); } break; } } -static void task_add_textbox(void) +static void CreateTask_DrawFieldMessageBox(void) { - CreateTask(Task_RunFieldMessageBoxPrinter, 80); + CreateTask(Task_DrawFieldMessageBox, 80); } -static void task_del_textbox(void) +static void DestroyTask_DrawFieldMessageBox(void) { - u8 taskId = FindTaskIdByFunc(Task_RunFieldMessageBoxPrinter); + u8 taskId = FindTaskIdByFunc(Task_DrawFieldMessageBox); if (taskId != 0xFF) DestroyTask(taskId); } bool8 ShowFieldMessage(const u8 *str) { - if (sMessageBoxType != 0) + if (sMessageBoxType != FIELD_MESSAGE_BOX_HIDDEN) return FALSE; - textbox_fdecode_auto_and_task_add(str); - sMessageBoxType = 2; + ExpandStringAndStartDrawFieldMessageBox(str); + sMessageBoxType = FIELD_MESSAGE_BOX_NORMAL; return TRUE; } bool8 ShowFieldAutoScrollMessage(const u8 *str) { - if (sMessageBoxType != 0) + if (sMessageBoxType != FIELD_MESSAGE_BOX_HIDDEN) return FALSE; - sMessageBoxType = 3; - textbox_fdecode_auto_and_task_add(str); + sMessageBoxType = FIELD_MESSAGE_BOX_AUTO_SCROLL; + ExpandStringAndStartDrawFieldMessageBox(str); return TRUE; } -bool8 sub_806948C(const u8 *str) +// Unused +static bool8 ForceShowFieldAutoScrollMessage(const u8 *str) { - sMessageBoxType = 3; - textbox_fdecode_auto_and_task_add(str); + sMessageBoxType = FIELD_MESSAGE_BOX_AUTO_SCROLL; + ExpandStringAndStartDrawFieldMessageBox(str); return TRUE; } -bool8 sub_80694A4(const u8 *str) +// Unused +// Same as ShowFieldMessage, but instead of accepting a string argument, +// it just prints whatever that's already in gStringVar4 +static bool8 ShowFieldMessageFromBuffer(void) { - if (sMessageBoxType != 0) + if (sMessageBoxType != FIELD_MESSAGE_BOX_HIDDEN) return FALSE; - sMessageBoxType = 2; - textbox_auto_and_task_add(); + sMessageBoxType = FIELD_MESSAGE_BOX_NORMAL; + StartDrawFieldMessageBox(); return TRUE; } -static void textbox_fdecode_auto_and_task_add(const u8 *str) +static void ExpandStringAndStartDrawFieldMessageBox(const u8 *str) { StringExpandPlaceholders(gStringVar4, str); AddTextPrinterDiffStyle(TRUE); - task_add_textbox(); + CreateTask_DrawFieldMessageBox(); } -static void textbox_auto_and_task_add(void) +static void StartDrawFieldMessageBox(void) { AddTextPrinterDiffStyle(TRUE); - task_add_textbox(); + CreateTask_DrawFieldMessageBox(); } void HideFieldMessageBox(void) { - task_del_textbox(); + DestroyTask_DrawFieldMessageBox(); ClearDialogWindowAndFrame(0, TRUE); - sMessageBoxType = 0; + sMessageBoxType = FIELD_MESSAGE_BOX_HIDDEN; } -u8 textbox_any_visible(void) +u8 GetFieldMessageBoxType(void) { return sMessageBoxType; } bool8 IsFieldMessageBoxHidden(void) { - if (sMessageBoxType == 0) + if (sMessageBoxType == FIELD_MESSAGE_BOX_HIDDEN) return TRUE; else return FALSE; } -void sub_8069538(void) +// Unused +static void ReplaceFieldMessageWithFrame(void) { - task_del_textbox(); + DestroyTask_DrawFieldMessageBox(); DrawStdWindowFrame(0, TRUE); - sMessageBoxType = 0; + sMessageBoxType = FIELD_MESSAGE_BOX_HIDDEN; } From a4327cd0930668a5b1df7b564967fe4f7a733c31 Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Mon, 4 Jul 2022 00:28:09 +0800 Subject: [PATCH 2/2] Remove use of enum when defining sMessageBoxType --- src/field_message_box.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field_message_box.c b/src/field_message_box.c index 2281ba134..5a682c382 100644 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -13,7 +13,7 @@ enum FIELD_MESSAGE_BOX_AUTO_SCROLL, }; -static EWRAM_DATA u8 sMessageBoxType = FIELD_MESSAGE_BOX_HIDDEN; +static EWRAM_DATA u8 sMessageBoxType = 0; static void ExpandStringAndStartDrawFieldMessageBox(const u8 *str); static void StartDrawFieldMessageBox(void);