diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-05 21:10:14 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-05 21:10:14 -0500 |
commit | 113a817a56a5231971ad9bd3ab1cdf2f7b0c9305 (patch) | |
tree | 2eee3d0caf8b526d6349a9afb2f99508fc4f8539 /src | |
parent | c493213db338da26d52ffdb981cf9c27b027e632 (diff) |
Decompile field_message_box
Diffstat (limited to 'src')
-rw-r--r-- | src/field_message_box.c | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/src/field_message_box.c b/src/field_message_box.c new file mode 100644 index 000000000..272f8ee24 --- /dev/null +++ b/src/field_message_box.c @@ -0,0 +1,140 @@ +#include "global.h" +#include "gflib.h" +#include "new_menu_helpers.h" +#include "quest_log.h" +#include "script.h" +#include "text_window.h" + +EWRAM_DATA u8 gUnknown_203709C = 0; + +void textbox_fdecode_auto_and_task_add(const u8 *str); +void textbox_auto_and_task_add(void); + +void sub_8069348(void) +{ + gUnknown_203709C = 0; + gTextFlags.canABSpeedUpPrint = FALSE; + gTextFlags.useAlternateDownArrow = FALSE; + gTextFlags.autoScroll = FALSE; +} + +void sub_8069370(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + if (gQuestLogState == 2) + { + gTextFlags.autoScroll = TRUE; + TextWindow_LoadTilesStdFrame1(0, 0x200); + } + else if (!IsMsgSignPost()) + { + LoadStdWindowFrameGfx(); + } + else + { + sub_80F79A4(); + } + task->data[0]++; + break; + case 1: + DrawDialogueFrame(0, TRUE); + task->data[0]++; + break; + case 2: + if (RunTextPrinters_CheckPrinter0Active() != TRUE) + { + gUnknown_203709C = 0; + DestroyTask(taskId); + } + break; + } +} + +void task_add_textbox(void) +{ + CreateTask(sub_8069370, 80); +} + +void task_del_textbox(void) +{ + u8 taskId = FindTaskIdByFunc(sub_8069370); + if (taskId != 0xFF) + DestroyTask(taskId); +} + +bool8 ShowFieldMessage(const u8 *str) +{ + if (gUnknown_203709C != 0) + return FALSE; + textbox_fdecode_auto_and_task_add(str); + gUnknown_203709C = 2; + return TRUE; +} + +bool8 ShowFieldAutoScrollMessage(const u8 *str) +{ + if (gUnknown_203709C != 0) + return FALSE; + gUnknown_203709C = 3; + textbox_fdecode_auto_and_task_add(str); + return TRUE; +} + +bool8 sub_806948C(const u8 *str) +{ + gUnknown_203709C = 3; + textbox_fdecode_auto_and_task_add(str); + return TRUE; +} + +bool8 sub_80694A4(const u8 *str) +{ + if (gUnknown_203709C != 0) + return FALSE; + gUnknown_203709C = 2; + textbox_auto_and_task_add(); + return TRUE; +} + +void textbox_fdecode_auto_and_task_add(const u8 *str) +{ + StringExpandPlaceholders(gStringVar4, str); + AddTextPrinterDiffStyle(TRUE); + task_add_textbox(); +} + +void textbox_auto_and_task_add(void) +{ + AddTextPrinterDiffStyle(TRUE); + task_add_textbox(); +} + +void HideFieldMessageBox(void) +{ + task_del_textbox(); + ClearDialogWindowAndFrame(0, TRUE); + gUnknown_203709C = 0; +} + +u8 textbox_any_visible(void) +{ + return gUnknown_203709C; +} + +bool8 IsFieldMessageBoxHidden(void) +{ + if (gUnknown_203709C == 0) + return TRUE; + else + return FALSE; +} + +void sub_8069538(void) +{ + task_del_textbox(); + DrawStdWindowFrame(0, TRUE); + gUnknown_203709C = 0; +} |