Merge pull request #1400 from GriffinRichards/doc-pokemonanim

Document Pokémon animation
This commit is contained in:
GriffinR
2021-04-13 01:36:15 -04:00
committed by GitHub
7 changed files with 2480 additions and 2381 deletions
+13 -10
View File
@@ -175,7 +175,7 @@ static EWRAM_DATA struct PokemonSummaryScreenData
} *sMonSummaryScreen = NULL;
EWRAM_DATA u8 gLastViewedMonIndex = 0;
static EWRAM_DATA u8 sMoveSlotToReplace = 0;
ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0;
ALIGNED(4) static EWRAM_DATA u8 sAnimDelayTaskId = 0;
// forward declarations
static bool8 LoadGraphics(void);
@@ -296,6 +296,7 @@ static void SpriteCb_MoveSelector(struct Sprite *sprite);
static void DestroyMoveSelectorSprites(u8 firstArrayId);
static void SetMainMoveSelectorColor(u8 whichColor);
static void KeepMoveSelectorVisible(u8 firstSpriteId);
static void SummaryScreen_DestroyAnimDelayTask(void);
// const rom data
#include "data/text/move_descriptions.h"
@@ -1094,7 +1095,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
}
sMonSummaryScreen->currPageIndex = sMonSummaryScreen->minPageIndex;
SummaryScreen_SetUnknownTaskId(0xFF);
SummaryScreen_SetAnimDelayTaskId(TASK_NONE);
if (gMonSpritesGfxPtr == NULL)
sub_806F2AC(0, 0);
@@ -1480,7 +1481,7 @@ static void CloseSummaryScreen(u8 taskId)
{
SetMainCallback2(sMonSummaryScreen->callback);
gLastViewedMonIndex = sMonSummaryScreen->curMonIndex;
SummaryScreen_DestroyUnknownTask();
SummaryScreen_DestroyAnimDelayTask();
ResetSpriteData();
FreeAllSpritePalettes();
StopCryAndClearCrySongs();
@@ -1598,7 +1599,7 @@ static void Task_ChangeSummaryMon(u8 taskId)
StopCryAndClearCrySongs();
break;
case 1:
SummaryScreen_DestroyUnknownTask();
SummaryScreen_DestroyAnimDelayTask();
DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[SPRITE_ARR_ID_MON]]);
break;
case 2:
@@ -3933,17 +3934,19 @@ static void SpriteCB_Pokemon(struct Sprite *sprite)
}
}
void SummaryScreen_SetUnknownTaskId(u8 taskId)
// Track and then destroy Task_PokemonSummaryAnimateAfterDelay
// Normally destroys itself but it can be interrupted before the animation starts
void SummaryScreen_SetAnimDelayTaskId(u8 taskId)
{
sUnknownTaskId = taskId;
sAnimDelayTaskId = taskId;
}
void SummaryScreen_DestroyUnknownTask(void)
static void SummaryScreen_DestroyAnimDelayTask(void)
{
if (sUnknownTaskId != TASK_NONE)
if (sAnimDelayTaskId != TASK_NONE)
{
DestroyTask(sUnknownTaskId);
sUnknownTaskId = TASK_NONE;
DestroyTask(sAnimDelayTaskId);
sAnimDelayTaskId = TASK_NONE;
}
}