diff options
| author | engineer124 <engineer124engineer124@gmail.com> | 2023-06-11 01:34:53 +1000 |
|---|---|---|
| committer | engineer124 <engineer124engineer124@gmail.com> | 2023-06-11 01:34:53 +1000 |
| commit | 5fc0024b72622125a689aa5ae080337fe578f1ff (patch) | |
| tree | 656ce93b5d46e86ed453980019f2110c877dd869 /src/code/z_message.c | |
| parent | 3dd8096af5af84fab0cd3a664d3e1e888224274d (diff) | |
| parent | 47be99fb0cde762466ab8dd7d2471dd278a59040 (diff) | |
Merge branch 'master' into parameter
Diffstat (limited to 'src/code/z_message.c')
| -rw-r--r-- | src/code/z_message.c | 68 |
1 files changed, 47 insertions, 21 deletions
diff --git a/src/code/z_message.c b/src/code/z_message.c index 4755b4acf..38cdba5f8 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -5,6 +5,27 @@ #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" #if 0 +#define DEFINE_PERSON(_enum, _photo, _description, _metEnum, metMessage, _metFlag) metMessage, +#define DEFINE_EVENT(_enum, _icon, _colorFlag, _description, completedMessage, _completedFlag) completedMessage, + +u16 sBombersNotebookEventMessages[BOMBERS_NOTEBOOK_EVENT_MAX] = { +#include "tables/bombers_notebook/person_table.h" +#include "tables/bombers_notebook/event_table.h" +}; + +#undef DEFINE_PERSON +#undef DEFINE_EVENT + +#define DEFINE_PERSON(_enum, _photo, _description, _metEnum, _metMessage, metFlag) metFlag, +#define DEFINE_EVENT(_enum, _icon, _colorFlag, _description, _completedMessage, completedFlag) completedFlag, + +u16 gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_EVENT_MAX] = { +#include "tables/bombers_notebook/person_table.h" +#include "tables/bombers_notebook/event_table.h" +}; + +#undef DEFINE_PERSON +#undef DEFINE_EVENT s16 D_801D02D8[15] = { ACTOR_OCEFF_WIPE5, ACTOR_OCEFF_WIPE5, // Sonata of Awakening Effect, Sonata of Awakening Effect @@ -20,8 +41,6 @@ s32 D_801D02F8[15] = { 0,1,2,3,4,0,1,0,0,0,0,0,1,1,0 }; #endif -extern u16 D_801C6AB8[]; -extern u16 D_801C6B28[]; extern s16 D_801D02D8[]; extern s32 D_801D02F8[]; extern s16 D_801F6B0C; @@ -225,6 +244,7 @@ void Message_LoadChar(PlayState* play, u16 codePointIndex, s32* offset, f32* arg *arg3 = temp2; } +// TODO: SJIS support // Message_LoadRupees JPN ? void func_8014CCB4(PlayState* play, s16* decodedBufPos, s32* offset, f32* arg3) { MessageContext* msgCtx = &play->msgCtx; @@ -240,7 +260,7 @@ void func_8014CCB4(PlayState* play, s16* decodedBufPos, s32* offset, f32* arg3) k += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[t] = 0x8373; t += 1; - Font_LoadChar(play, 0x815C, k); // Ox815C = ― in JISX0213 + Font_LoadChar(play, 0x815C, k); // 0x815C = ― in JISX0213 k += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[t] = 0x815C; @@ -365,19 +385,19 @@ void func_80151A68(PlayState* play, u16 textId) { } } -void func_80151BB4(PlayState* play, u8 arg1) { +void Message_BombersNotebookQueueEvent(PlayState* play, u8 event) { MessageContext* msgCtx = &play->msgCtx; - u8 temp = arg1; if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if (!CHECK_WEEKEVENTREG(D_801C6B28[arg1])) { - msgCtx->unk120B2[msgCtx->unk120B1] = temp; - msgCtx->unk120B1++; + if (!CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[event])) { + msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount] = event; + msgCtx->bombersNotebookEventQueueCount++; } - } else if (arg1 >= 20) { - if (!CHECK_WEEKEVENTREG(D_801C6B28[arg1])) { - msgCtx->unk120B2[msgCtx->unk120B1] = temp; - msgCtx->unk120B1++; + } else if (event >= BOMBERS_NOTEBOOK_PERSON_MAX) { + // Non MET events are processed even if the player does not have the notebook yet + if (!CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[event])) { + msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount] = event; + msgCtx->bombersNotebookEventQueueCount++; } } } @@ -386,16 +406,22 @@ u32 func_80151C9C(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; while (true) { - if (msgCtx->unk120B1 == 0) { + if (msgCtx->bombersNotebookEventQueueCount == 0) { return false; } - msgCtx->unk120B1--; - - if (!CHECK_WEEKEVENTREG(D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]])) { - SET_WEEKEVENTREG(D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]); - - if ((D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]] != 0) && CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - Message_ContinueTextbox(play, D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]]); + msgCtx->bombersNotebookEventQueueCount--; + + if (!CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]])) { + SET_WEEKEVENTREG(gBombersNotebookWeekEventFlags + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]]); + + if ((sBombersNotebookEventMessages + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]] != 0) && + CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { + Message_ContinueTextbox( + play, sBombersNotebookEventMessages + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]]); play_sound(NA_SE_SY_SCHEDULE_WRITE); return true; } @@ -476,7 +502,7 @@ u8 Message_GetState(MessageContext* msgCtx) { if (msgCtx->msgMode == 0x40) { return TEXT_STATE_13; } - if ((msgCtx->msgMode == 0x43) && (msgCtx->stateTimer == 1) && (msgCtx->unk120B1 == 0)) { + if ((msgCtx->msgMode == 0x43) && (msgCtx->stateTimer == 1) && (msgCtx->bombersNotebookEventQueueCount == 0)) { return TEXT_STATE_CLOSING; } |
