From 396a44cd1748cb1a594eb6b184d5941dba112f3a Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 18 Jan 2024 15:54:36 -0300 Subject: [PATCH] Follower animation in debug menu --- src/pokemon_debug.c | 66 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index f2f73b412e..26ce53cbba 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -56,6 +56,37 @@ static struct PokemonDebugMenu *GetStructPtr(u8 taskId) return (struct PokemonDebugMenu*)(T1_READ_PTR(taskDataPtr)); } +static const union AnimCmd sAnim_Follower_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(2, 30), + ANIMCMD_FRAME(3, 30), + ANIMCMD_FRAME(2, 30), + ANIMCMD_FRAME(3, 30), + ANIMCMD_FRAME(2, 10), + ANIMCMD_FRAME(4, 30), + ANIMCMD_FRAME(5, 30), + ANIMCMD_FRAME(4, 30), + ANIMCMD_FRAME(5, 30), + ANIMCMD_FRAME(4, 10), + ANIMCMD_FRAME(4, 30, .hFlip = TRUE), + ANIMCMD_FRAME(5, 30, .hFlip = TRUE), + ANIMCMD_FRAME(4, 30, .hFlip = TRUE), + ANIMCMD_FRAME(5, 30, .hFlip = TRUE), + ANIMCMD_FRAME(4, 10, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_Follower[] = +{ + sAnim_GeneralFrame0, + sAnim_Follower_1, +}; + //BgTemplates static const struct BgTemplate sBgTemplates[] = { @@ -743,6 +774,35 @@ static void SpriteCB_EnemyShadowCustom(struct Sprite *shadowSprite) shadowSprite->x2 = battlerSprite->x2; } +static void SpriteCB_Follower(struct Sprite *sprite) +{ + if (sprite->animDelayCounter == 0) + { + sprite->animDelayCounter = 60; + switch (sprite->animNum) + { + default: + case 0: + case 1: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH)); + break; + case 2: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST)); + break; + case 3: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST)); + break; + case 4: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH)); + break; + } + } + else + { + sprite->animDelayCounter--; + } +} + static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonDebugMenu *data, u16 species) { u8 x, y; @@ -1103,8 +1163,9 @@ void CB2_Debug_Pokemon(void) gSprites[data->iconspriteId].oam.priority = 0; //Follower Sprite - data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MON_BASE + species, SpriteCallbackDummy, DEBUG_FOLLOWER_X, DEBUG_FOLLOWER_Y, 0); + data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MON_BASE + species, SpriteCB_Follower, DEBUG_FOLLOWER_X, DEBUG_FOLLOWER_Y, 0); gSprites[data->followerspriteId].oam.priority = 0; + gSprites[data->followerspriteId].anims = sAnims_Follower; //Modify Arrows SetUpModifyArrows(data); @@ -1658,8 +1719,9 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) gSprites[data->iconspriteId].oam.priority = 0; //Follower Sprite - data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MON_BASE + species, SpriteCallbackDummy, DEBUG_FOLLOWER_X, DEBUG_FOLLOWER_Y, 0); + data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MON_BASE + species, SpriteCB_Follower, DEBUG_FOLLOWER_X, DEBUG_FOLLOWER_Y, 0); gSprites[data->followerspriteId].oam.priority = 0; + gSprites[data->followerspriteId].anims = sAnims_Follower; //Modify Arrows LoadSpritePalette(&gSpritePalette_Arrow);