Updated follower color fill palette logic.

This commit is contained in:
Ariel A 2023-05-05 00:33:07 -04:00
parent d12efe8cd7
commit 8b0457197a

View file

@ -484,6 +484,8 @@ const u8 gInitialMovementTypeFacingDirections[] = {
#define OBJ_EVENT_PAL_TAG_CASTFORM_RAINY 0x1126
#define OBJ_EVENT_PAL_TAG_CASTFORM_SNOWY 0x1127
#define OBJ_EVENT_PAL_TAG_EMOTES 0x8002
// Not a real OW palette tag; used for the white flash applied to followers
#define OBJ_EVENT_PAL_TAG_WHITE (OBJ_EVENT_PAL_TAG_NONE - 1)
#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
#include "data/object_events/object_event_graphics_info_pointers.h"
@ -6646,11 +6648,11 @@ bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent,
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
// Copy and load objectEvent's palette, but set all opaque colors to white
static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) {
// Update sprite with a palette filled with a solid color
static u8 LoadFillColorPalette(u16 color, u16 paletteTag, struct Sprite *sprite) {
u16 paletteData[16];
struct SpritePalette dynamicPalette = {.tag = OBJ_EVENT_PAL_TAG_NONE-1, .data = paletteData}; // TODO: Use a proper palette tag here
CpuFill16(RGB_WHITE, paletteData, 32);
struct SpritePalette dynamicPalette = {.tag = paletteTag, .data = paletteData};
CpuFill16(color, paletteData, PLTT_SIZE_4BPP);
return UpdateSpritePalette(&dynamicPalette, sprite);
}
@ -6729,7 +6731,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct
// Set graphics, palette, and affine animation
} else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) {
FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny);
LoadWhiteFlashPalette(objectEvent, sprite);
LoadFillColorPalette(RGB_WHITE, OBJ_EVENT_PAL_TAG_WHITE, sprite);
// Initialize affine animation
sprite->affineAnims = sAffineAnims_PokeballFollower;
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
@ -6761,7 +6763,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct
sprite->data[2] = 2;
return FALSE;
} else if (sprite->data[3] == 11) { // Set palette to white & start affine
LoadWhiteFlashPalette(objectEvent, sprite);
LoadFillColorPalette(RGB_WHITE, OBJ_EVENT_PAL_TAG_WHITE, sprite);
sprite->affineAnims = sAffineAnims_PokeballFollower;
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
InitSpriteAffineAnim(sprite);