Document field_message_box.c
This commit is contained in:
@@ -10,13 +10,13 @@ enum
|
|||||||
};
|
};
|
||||||
|
|
||||||
bool8 ShowFieldMessage(const u8 *message);
|
bool8 ShowFieldMessage(const u8 *message);
|
||||||
bool8 sub_8098238(const u8 *message);
|
bool8 ShowPokenavFieldMessage(const u8 *message);
|
||||||
bool8 sub_80982B8(void);
|
bool8 ShowFieldMessageFromBuffer(void);
|
||||||
bool8 ShowFieldAutoScrollMessage(const u8 *message);
|
bool8 ShowFieldAutoScrollMessage(const u8 *message);
|
||||||
void HideFieldMessageBox(void);
|
void HideFieldMessageBox(void);
|
||||||
bool8 IsFieldMessageBoxHidden(void);
|
bool8 IsFieldMessageBoxHidden(void);
|
||||||
u8 GetFieldMessageBoxMode(void);
|
u8 GetFieldMessageBoxMode(void);
|
||||||
void sub_8098374(void);
|
void StopFieldMessage(void);
|
||||||
void InitFieldMessageBox(void);
|
void InitFieldMessageBox(void);
|
||||||
|
|
||||||
#endif // GUARD_FIELD_MESSAGE_BOX_H
|
#endif // GUARD_FIELD_MESSAGE_BOX_H
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ s32 GetRematchIdxByTrainerIdx(s32 trainerIdx);
|
|||||||
void InitMatchCallCounters(void);
|
void InitMatchCallCounters(void);
|
||||||
bool32 TryStartMatchCall(void);
|
bool32 TryStartMatchCall(void);
|
||||||
bool32 IsMatchCallTaskActive(void);
|
bool32 IsMatchCallTaskActive(void);
|
||||||
void StartMatchCallFromScript(u8 *message);
|
void StartMatchCallFromScript(const u8 *message);
|
||||||
void BufferPokedexRatingForMatchCall(u8 *destStr);
|
void BufferPokedexRatingForMatchCall(u8 *destStr);
|
||||||
bool32 SelectMatchCallMessage(int, u8 *);
|
bool32 SelectMatchCallMessage(int, u8 *);
|
||||||
void sub_8197184(u32 windowId, u32 destOffset, u32 paletteId);
|
void sub_8197184(u32 windowId, u32 destOffset, u32 paletteId);
|
||||||
|
|||||||
+2
-2
@@ -1360,7 +1360,7 @@ void ShowTrainerIntroSpeech(void)
|
|||||||
else
|
else
|
||||||
CopyPyramidTrainerSpeechBefore(LocalIdToPyramidTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId));
|
CopyPyramidTrainerSpeechBefore(LocalIdToPyramidTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId));
|
||||||
|
|
||||||
sub_80982B8();
|
ShowFieldMessageFromBuffer();
|
||||||
}
|
}
|
||||||
else if (InTrainerHillChallenge())
|
else if (InTrainerHillChallenge())
|
||||||
{
|
{
|
||||||
@@ -1369,7 +1369,7 @@ void ShowTrainerIntroSpeech(void)
|
|||||||
else
|
else
|
||||||
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_INTRO, LocalIdToHillTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId));
|
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_INTRO, LocalIdToHillTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId));
|
||||||
|
|
||||||
sub_80982B8();
|
ShowFieldMessageFromBuffer();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -524,7 +524,7 @@ static void sub_80B2CEC(u8 taskId)
|
|||||||
{
|
{
|
||||||
gSpecialVar_Result = 5;
|
gSpecialVar_Result = 5;
|
||||||
sub_80B241C(gTasks[taskId].data[5]);
|
sub_80B241C(gTasks[taskId].data[5]);
|
||||||
sub_8098374();
|
StopFieldMessage();
|
||||||
RemoveWindow(gTasks[taskId].data[5]);
|
RemoveWindow(gTasks[taskId].data[5]);
|
||||||
EnableBothScriptContexts();
|
EnableBothScriptContexts();
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
|
|||||||
+59
-50
@@ -5,128 +5,136 @@
|
|||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "text.h"
|
#include "text.h"
|
||||||
#include "match_call.h"
|
#include "match_call.h"
|
||||||
|
#include "field_message_box.h"
|
||||||
|
|
||||||
static EWRAM_DATA u8 sFieldMessageBoxMode = 0;
|
static EWRAM_DATA u8 sFieldMessageBoxMode = 0;
|
||||||
|
|
||||||
static void textbox_fdecode_auto_and_task_add(u8*, bool32);
|
static void ExpandStringAndStartDrawFieldMessage(const u8*, bool32);
|
||||||
static void textbox_auto_and_task_add(void);
|
static void StartDrawFieldMessage(void);
|
||||||
|
|
||||||
void InitFieldMessageBox(void)
|
void InitFieldMessageBox(void)
|
||||||
{
|
{
|
||||||
sFieldMessageBoxMode = 0;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
|
||||||
gTextFlags.canABSpeedUpPrint = 0;
|
gTextFlags.canABSpeedUpPrint = FALSE;
|
||||||
gTextFlags.useAlternateDownArrow = 0;
|
gTextFlags.useAlternateDownArrow = FALSE;
|
||||||
gTextFlags.autoScroll = 0;
|
gTextFlags.autoScroll = FALSE;
|
||||||
gTextFlags.forceMidTextSpeed = 0;
|
gTextFlags.forceMidTextSpeed = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8098154(u8 taskId)
|
#define tState data[0]
|
||||||
|
|
||||||
|
static void Task_DrawFieldMessage(u8 taskId)
|
||||||
{
|
{
|
||||||
struct Task *task = &gTasks[taskId];
|
struct Task *task = &gTasks[taskId];
|
||||||
|
|
||||||
switch (task->data[0])
|
switch (task->tState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
LoadMessageBoxAndBorderGfx();
|
LoadMessageBoxAndBorderGfx();
|
||||||
task->data[0]++;
|
task->tState++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
DrawDialogueFrame(0, 1);
|
DrawDialogueFrame(0, 1);
|
||||||
task->data[0]++;
|
task->tState++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (RunTextPrintersAndIsPrinter0Active() != 1)
|
if (RunTextPrintersAndIsPrinter0Active() != TRUE)
|
||||||
{
|
{
|
||||||
sFieldMessageBoxMode = 0;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_add_textbox(void)
|
#undef tState
|
||||||
|
|
||||||
|
static void CreateTask_DrawFieldMessage(void)
|
||||||
{
|
{
|
||||||
CreateTask(sub_8098154, 0x50);
|
CreateTask(Task_DrawFieldMessage, 0x50);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_del_textbox(void)
|
static void DestroyTask_DrawFieldMessage(void)
|
||||||
{
|
{
|
||||||
u8 taskId = FindTaskIdByFunc(sub_8098154);
|
u8 taskId = FindTaskIdByFunc(Task_DrawFieldMessage);
|
||||||
if (taskId != 0xFF)
|
if (taskId != 0xFF)
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 ShowFieldMessage(u8 *str)
|
bool8 ShowFieldMessage(const u8 *str)
|
||||||
{
|
{
|
||||||
if (sFieldMessageBoxMode != 0)
|
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
textbox_fdecode_auto_and_task_add(str, 1);
|
ExpandStringAndStartDrawFieldMessage(str, TRUE);
|
||||||
sFieldMessageBoxMode = 2;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8098214(u8 taskId)
|
static void Task_HidePokenavMessageWhenDone(u8 taskId)
|
||||||
{
|
{
|
||||||
if (!IsMatchCallTaskActive())
|
if (!IsMatchCallTaskActive())
|
||||||
{
|
{
|
||||||
sFieldMessageBoxMode = 0;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8098238(u8 *str)
|
bool8 ShowPokenavFieldMessage(const u8 *str)
|
||||||
{
|
{
|
||||||
if (sFieldMessageBoxMode != 0)
|
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
StringExpandPlaceholders(gStringVar4, str);
|
StringExpandPlaceholders(gStringVar4, str);
|
||||||
CreateTask(sub_8098214, 0);
|
CreateTask(Task_HidePokenavMessageWhenDone, 0);
|
||||||
StartMatchCallFromScript(str);
|
StartMatchCallFromScript(str);
|
||||||
sFieldMessageBoxMode = 2;
|
sFieldMessageBoxMode = 2;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 ShowFieldAutoScrollMessage(u8 *str)
|
bool8 ShowFieldAutoScrollMessage(const u8 *str)
|
||||||
{
|
{
|
||||||
if (sFieldMessageBoxMode != 0)
|
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
sFieldMessageBoxMode = 3;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL;
|
||||||
textbox_fdecode_auto_and_task_add(str, 0);
|
ExpandStringAndStartDrawFieldMessage(str, FALSE);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_80982A0(u8 *str)
|
// Unused
|
||||||
|
static bool8 ForceShowFieldAutoScrollMessage(const u8 *str)
|
||||||
{
|
{
|
||||||
sFieldMessageBoxMode = 3;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL;
|
||||||
textbox_fdecode_auto_and_task_add(str, 1);
|
ExpandStringAndStartDrawFieldMessage(str, TRUE);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_80982B8(void)
|
// Same as ShowFieldMessage, but instead of accepting a
|
||||||
|
// string arg it just prints whats already in gStringVar4
|
||||||
|
bool8 ShowFieldMessageFromBuffer(void)
|
||||||
{
|
{
|
||||||
if (sFieldMessageBoxMode != 0)
|
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
sFieldMessageBoxMode = 2;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL;
|
||||||
textbox_auto_and_task_add();
|
StartDrawFieldMessage();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void textbox_fdecode_auto_and_task_add(u8* str, bool32 allowSkippingDelayWithButtonPress)
|
static void ExpandStringAndStartDrawFieldMessage(const u8* str, bool32 allowSkippingDelayWithButtonPress)
|
||||||
{
|
{
|
||||||
StringExpandPlaceholders(gStringVar4, str);
|
StringExpandPlaceholders(gStringVar4, str);
|
||||||
AddTextPrinterForMessage(allowSkippingDelayWithButtonPress);
|
AddTextPrinterForMessage(allowSkippingDelayWithButtonPress);
|
||||||
task_add_textbox();
|
CreateTask_DrawFieldMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void textbox_auto_and_task_add(void)
|
static void StartDrawFieldMessage(void)
|
||||||
{
|
{
|
||||||
AddTextPrinterForMessage(TRUE);
|
AddTextPrinterForMessage(TRUE);
|
||||||
task_add_textbox();
|
CreateTask_DrawFieldMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HideFieldMessageBox(void)
|
void HideFieldMessageBox(void)
|
||||||
{
|
{
|
||||||
task_del_textbox();
|
DestroyTask_DrawFieldMessage();
|
||||||
ClearDialogWindowAndFrame(0, 1);
|
ClearDialogWindowAndFrame(0, 1);
|
||||||
sFieldMessageBoxMode = 0;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 GetFieldMessageBoxMode(void)
|
u8 GetFieldMessageBoxMode(void)
|
||||||
@@ -136,20 +144,21 @@ u8 GetFieldMessageBoxMode(void)
|
|||||||
|
|
||||||
bool8 IsFieldMessageBoxHidden(void)
|
bool8 IsFieldMessageBoxHidden(void)
|
||||||
{
|
{
|
||||||
if (sFieldMessageBoxMode == 0)
|
if (sFieldMessageBoxMode == FIELD_MESSAGE_BOX_HIDDEN)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8098358(void)
|
// Unused
|
||||||
|
static void ReplaceFieldMessageWithFrame(void)
|
||||||
{
|
{
|
||||||
task_del_textbox();
|
DestroyTask_DrawFieldMessage();
|
||||||
DrawStdWindowFrame(0, 1);
|
DrawStdWindowFrame(0, 1);
|
||||||
sFieldMessageBoxMode = 0;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8098374(void)
|
void StopFieldMessage(void)
|
||||||
{
|
{
|
||||||
task_del_textbox();
|
DestroyTask_DrawFieldMessage();
|
||||||
sFieldMessageBoxMode = 0;
|
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1098,7 +1098,7 @@ bool32 TryStartMatchCall(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartMatchCallFromScript(u8 *message)
|
void StartMatchCallFromScript(const u8 *message)
|
||||||
{
|
{
|
||||||
gMatchCallState.triggeredFromScript = 1;
|
gMatchCallState.triggeredFromScript = 1;
|
||||||
StartMatchCall();
|
StartMatchCall();
|
||||||
|
|||||||
+1
-1
@@ -1282,7 +1282,7 @@ bool8 ScrCmd_pokenavcall(struct ScriptContext *ctx)
|
|||||||
|
|
||||||
if (msg == NULL)
|
if (msg == NULL)
|
||||||
msg = (const u8 *)ctx->data[0];
|
msg = (const u8 *)ctx->data[0];
|
||||||
sub_8098238(msg);
|
ShowPokenavFieldMessage(msg);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -904,7 +904,7 @@ const u8 *GetTrainerHillTrainerScript(void)
|
|||||||
static void ShowTrainerHillPostBattleText(void)
|
static void ShowTrainerHillPostBattleText(void)
|
||||||
{
|
{
|
||||||
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_AFTER, gSpecialVar_LastTalked);
|
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_AFTER, gSpecialVar_LastTalked);
|
||||||
sub_80982B8();
|
ShowFieldMessageFromBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreateNPCTrainerHillParty(u16 trainerId, u8 firstMonId)
|
static void CreateNPCTrainerHillParty(u16 trainerId, u8 firstMonId)
|
||||||
|
|||||||
Reference in New Issue
Block a user