move_relearner_state_machine_defines
This commit is contained in:
+119
-26
@@ -17,6 +17,99 @@
|
|||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
#include "constants/moves.h"
|
#include "constants/moves.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Move relearner state machine
|
||||||
|
* ------------------------
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_FADE_TO_BLACK
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_WAIT_FOR_FADE
|
||||||
|
* - Go to MENU_STATE_IDLE_BATTLE_MODE
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_SETUP_BATTLE_MODE
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_IDLE_BATTLE_MODE
|
||||||
|
* - If the player selected a move (pressed A), go to MENU_STATE_PRINT_TEACH_MOVE_PROMPT.
|
||||||
|
* - If the player cancelled (pressed B), go to MENU_STATE_PRINT_GIVE_UP_PROMPT.
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_PRINT_TEACH_MOVE_PROMPT
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_TEACH_MOVE_CONFIRM
|
||||||
|
* - Wait for the player to confirm.
|
||||||
|
* - If cancelled, go to MENU_STATE_SETUP_BATTLE_MODE.
|
||||||
|
* - If confirmed and the pokemon had an empty move slot, set VAR_0x8004 to TRUE and go to
|
||||||
|
* MENU_STATE_PRINT_TEXT_THEN_FANFARE.
|
||||||
|
* - If confirmed and the pokemon doesn't have an empty move slot, go to
|
||||||
|
* MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT.
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_WAIT_FOR_TRYING_TO_LEARN
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_CONFIRM_DELETE_OLD_MOVE
|
||||||
|
* - If the player confirms, go to MENU_STATE_PRINT_WHICH_MOVE_PROMPT.
|
||||||
|
* - If the player cancels, go to MENU_STATE_PRINT_STOP_TEACHING
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_PRINT_STOP_TEACHING
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_WAIT_FOR_STOP_TEACHING
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_CONFIRM_STOP_TEACHING
|
||||||
|
* - If the player confirms, go to MENU_STATE_CHOOSE_SETUP_STATE.
|
||||||
|
* - If the player cancels, go back to MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT.
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_PRINT_WHICH_MOVE_PROMPT
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_SHOW_MOVE_SUMMARY_SCREEN
|
||||||
|
* - Go to ShowSelectMovePokemonSummaryScreen. When done, control returns to
|
||||||
|
* CB2_InitLearnMoveReturnFromSelectMove.
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_PRINT_TEXT_THEN_FANFARE
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_WAIT_FOR_FANFARE
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_WAIT_FOR_A_BUTTON
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_FADE_AND_RETURN
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_RETURN_TO_FIELD
|
||||||
|
* - Clean up and go to CB2_ReturnToField.
|
||||||
|
*
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_PRINT_GIVE_UP_PROMPT
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_GIVE_UP_CONFIRM
|
||||||
|
* - If the player confirms, go to MENU_STATE_FADE_AND_RETURN, and set VAR_0x8004 to FALSE.
|
||||||
|
* - If the player cancels, go to MENU_STATE_SETUP_BATTLE_MODE.
|
||||||
|
*
|
||||||
|
* CB2_InitLearnMoveReturnFromSelectMove:
|
||||||
|
* - Do most of the same stuff as CB2_InitLearnMove.
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_FADE_FROM_SUMMARY_SCREEN
|
||||||
|
* MoveRelearnerStateMachine: MENU_STATE_TRY_OVERWRITE_MOVE
|
||||||
|
* - If any of the pokemon's existing moves were chosen, overwrite the move and
|
||||||
|
* go to MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE and set VAR_0x8004 to TRUE.
|
||||||
|
* - If the chosen move is the one the player selected before the summary screen,
|
||||||
|
* go to MENU_STATE_PRINT_STOP_TEACHING.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MENU_STATE_FADE_TO_BLACK 0
|
||||||
|
#define MENU_STATE_WAIT_FOR_FADE 1
|
||||||
|
#define MENU_STATE_UNREACHABLE 2
|
||||||
|
#define MENU_STATE_SETUP_BATTLE_MODE 3
|
||||||
|
#define MENU_STATE_IDLE_BATTLE_MODE 4
|
||||||
|
// States 5, 6, and 7 are skipped.
|
||||||
|
#define MENU_STATE_PRINT_TEACH_MOVE_PROMPT 8
|
||||||
|
#define MENU_STATE_TEACH_MOVE_CONFIRM 9
|
||||||
|
// States 10 and 11 are skipped.
|
||||||
|
#define MENU_STATE_PRINT_GIVE_UP_PROMPT 12
|
||||||
|
#define MENU_STATE_GIVE_UP_CONFIRM 13
|
||||||
|
#define MENU_STATE_FADE_AND_RETURN 14
|
||||||
|
#define MENU_STATE_RETURN_TO_FIELD 15
|
||||||
|
#define MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT 16
|
||||||
|
#define MENU_STATE_WAIT_FOR_TRYING_TO_LEARN 17
|
||||||
|
#define MENU_STATE_CONFIRM_DELETE_OLD_MOVE 18
|
||||||
|
#define MENU_STATE_PRINT_WHICH_MOVE_PROMPT 19
|
||||||
|
#define MENU_STATE_SHOW_MOVE_SUMMARY_SCREEN 20
|
||||||
|
// States 21, 22, and 23 are skipped.
|
||||||
|
#define MENU_STATE_PRINT_STOP_TEACHING 24
|
||||||
|
#define MENU_STATE_WAIT_FOR_STOP_TEACHING 25
|
||||||
|
#define MENU_STATE_CONFIRM_STOP_TEACHING 26
|
||||||
|
#define MENU_STATE_CHOOSE_SETUP_STATE 27
|
||||||
|
#define MENU_STATE_FADE_FROM_SUMMARY_SCREEN 28
|
||||||
|
#define MENU_STATE_TRY_OVERWRITE_MOVE 29
|
||||||
|
#define MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE 30
|
||||||
|
#define MENU_STATE_PRINT_TEXT_THEN_FANFARE 31
|
||||||
|
#define MENU_STATE_WAIT_FOR_FANFARE 32
|
||||||
|
#define MENU_STATE_WAIT_FOR_A_BUTTON 33
|
||||||
|
|
||||||
struct MoveTutorMoveInfoHeaders
|
struct MoveTutorMoveInfoHeaders
|
||||||
{
|
{
|
||||||
const u8 *text;
|
const u8 *text;
|
||||||
@@ -383,7 +476,7 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
|
|
||||||
switch (sMoveRelearner->state)
|
switch (sMoveRelearner->state)
|
||||||
{
|
{
|
||||||
case 0:
|
case MENU_STATE_FADE_TO_BLACK:
|
||||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
||||||
ShowBg(0);
|
ShowBg(0);
|
||||||
ShowBg(1);
|
ShowBg(1);
|
||||||
@@ -394,26 +487,26 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
MoveLearnerInitListMenu();
|
MoveLearnerInitListMenu();
|
||||||
sMoveRelearner->scheduleMoveInfoUpdate = TRUE;
|
sMoveRelearner->scheduleMoveInfoUpdate = TRUE;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case MENU_STATE_WAIT_FOR_FADE:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
sMoveRelearner->state = 4;
|
sMoveRelearner->state = 4;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case MENU_STATE_UNREACHABLE:
|
||||||
sMoveRelearner->state++;
|
sMoveRelearner->state++;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case MENU_STATE_SETUP_BATTLE_MODE:
|
||||||
PrintTeachWhichMoveToStrVar1(FALSE);
|
PrintTeachWhichMoveToStrVar1(FALSE);
|
||||||
sMoveRelearner->scheduleMoveInfoUpdate = TRUE;
|
sMoveRelearner->scheduleMoveInfoUpdate = TRUE;
|
||||||
sMoveRelearner->state++;
|
sMoveRelearner->state++;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case MENU_STATE_IDLE_BATTLE_MODE:
|
||||||
MoveRelearnerMenuHandleInput();
|
MoveRelearnerMenuHandleInput();
|
||||||
break;
|
break;
|
||||||
case 8:
|
case MENU_STATE_PRINT_TEACH_MOVE_PROMPT:
|
||||||
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
||||||
sMoveRelearner->state++;
|
sMoveRelearner->state++;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case MENU_STATE_TEACH_MOVE_CONFIRM :
|
||||||
switch (YesNoMenuProcessInput())
|
switch (YesNoMenuProcessInput())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@@ -434,11 +527,11 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 12:
|
case MENU_STATE_PRINT_GIVE_UP_PROMPT:
|
||||||
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
||||||
sMoveRelearner->state++;
|
sMoveRelearner->state++;
|
||||||
break;
|
break;
|
||||||
case 13:
|
case MENU_STATE_GIVE_UP_CONFIRM:
|
||||||
switch (YesNoMenuProcessInput())
|
switch (YesNoMenuProcessInput())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@@ -451,15 +544,15 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 16:
|
case MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT:
|
||||||
StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_MonIsTryingToLearnMove);
|
StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_MonIsTryingToLearnMove);
|
||||||
sMoveRelearner->state++;
|
sMoveRelearner->state++;
|
||||||
break;
|
break;
|
||||||
case 17:
|
case MENU_STATE_WAIT_FOR_TRYING_TO_LEARN:
|
||||||
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
||||||
sMoveRelearner->state = 18;
|
sMoveRelearner->state = 18;
|
||||||
break;
|
break;
|
||||||
case 18:
|
case MENU_STATE_CONFIRM_DELETE_OLD_MOVE:
|
||||||
switch (YesNoMenuProcessInput())
|
switch (YesNoMenuProcessInput())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@@ -472,15 +565,15 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 24:
|
case MENU_STATE_PRINT_STOP_TEACHING:
|
||||||
StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_StopLearningMove);
|
StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_StopLearningMove);
|
||||||
sMoveRelearner->state++;
|
sMoveRelearner->state++;
|
||||||
break;
|
break;
|
||||||
case 25:
|
case MENU_STATE_WAIT_FOR_STOP_TEACHING:
|
||||||
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
|
||||||
sMoveRelearner->state = 26;
|
sMoveRelearner->state = 26;
|
||||||
break;
|
break;
|
||||||
case 26:
|
case MENU_STATE_CONFIRM_STOP_TEACHING:
|
||||||
switch (YesNoMenuProcessInput())
|
switch (YesNoMenuProcessInput())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@@ -492,14 +585,14 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 27:
|
case MENU_STATE_CHOOSE_SETUP_STATE :
|
||||||
sMoveRelearner->state = 3;
|
sMoveRelearner->state = 3;
|
||||||
break;
|
break;
|
||||||
case 19:
|
case MENU_STATE_PRINT_WHICH_MOVE_PROMPT:
|
||||||
sMoveRelearner->state = 20;
|
sMoveRelearner->state = 20;
|
||||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||||
break;
|
break;
|
||||||
case 20:
|
case MENU_STATE_SHOW_MOVE_SUMMARY_SCREEN:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
ListMenuGetScrollAndRow(sMoveRelearner->listMenuTaskId, &sMoveRelearner->listMenuScrollPos, &sMoveRelearner->listMenuScrollRow);
|
ListMenuGetScrollAndRow(sMoveRelearner->listMenuTaskId, &sMoveRelearner->listMenuScrollPos, &sMoveRelearner->listMenuScrollRow);
|
||||||
@@ -514,11 +607,11 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
case 22:
|
case 22:
|
||||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
||||||
break;
|
break;
|
||||||
case 14:
|
case MENU_STATE_FADE_AND_RETURN:
|
||||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||||
sMoveRelearner->state++;
|
sMoveRelearner->state++;
|
||||||
break;
|
break;
|
||||||
case 15:
|
case MENU_STATE_RETURN_TO_FIELD:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
@@ -526,7 +619,7 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
SetMainCallback2(CB2_ReturnToField);
|
SetMainCallback2(CB2_ReturnToField);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 28:
|
case MENU_STATE_FADE_FROM_SUMMARY_SCREEN:
|
||||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
||||||
ShowBg(0);
|
ShowBg(0);
|
||||||
ShowBg(1);
|
ShowBg(1);
|
||||||
@@ -537,7 +630,7 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
PrintTeachWhichMoveToStrVar1(TRUE);
|
PrintTeachWhichMoveToStrVar1(TRUE);
|
||||||
PrintMoveInfoHandleCancel_CopyToVram();
|
PrintMoveInfoHandleCancel_CopyToVram();
|
||||||
break;
|
break;
|
||||||
case 29:
|
case MENU_STATE_TRY_OVERWRITE_MOVE:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
if (sMoveRelearner->selectedMoveSlot == 4)
|
if (sMoveRelearner->selectedMoveSlot == 4)
|
||||||
@@ -557,20 +650,20 @@ static void MoveRelearnerStateMachine(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 30:
|
case MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE:
|
||||||
StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_MonForgotOldMoveAndMonLearnedNewMove);
|
StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_MonForgotOldMoveAndMonLearnedNewMove);
|
||||||
sMoveRelearner->state = 31;
|
sMoveRelearner->state = 31;
|
||||||
PlayFanfare(MUS_FANFA1);
|
PlayFanfare(MUS_FANFA1);
|
||||||
break;
|
break;
|
||||||
case 31:
|
case MENU_STATE_PRINT_TEXT_THEN_FANFARE:
|
||||||
PlayFanfare(MUS_FANFA1);
|
PlayFanfare(MUS_FANFA1);
|
||||||
sMoveRelearner->state = 32;
|
sMoveRelearner->state = 32;
|
||||||
break;
|
break;
|
||||||
case 32:
|
case MENU_STATE_WAIT_FOR_FANFARE:
|
||||||
if (IsFanfareTaskInactive())
|
if (IsFanfareTaskInactive())
|
||||||
sMoveRelearner->state = 33;
|
sMoveRelearner->state = 33;
|
||||||
break;
|
break;
|
||||||
case 33:
|
case MENU_STATE_WAIT_FOR_A_BUTTON:
|
||||||
if (JOY_NEW(A_BUTTON))
|
if (JOY_NEW(A_BUTTON))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
|
|||||||
Reference in New Issue
Block a user