Fixed removeobject
clearing the palettes of unloaded dummy sprites.
This commit is contained in:
parent
483d4b3448
commit
13565fc023
1 changed files with 10 additions and 2 deletions
|
@ -1389,8 +1389,16 @@ static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent)
|
||||||
image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size;
|
image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size;
|
||||||
gSprites[objectEvent->spriteId].images = ℑ
|
gSprites[objectEvent->spriteId].images = ℑ
|
||||||
paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum;
|
paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum;
|
||||||
DestroySprite(&gSprites[objectEvent->spriteId]);
|
// It's possible that this function is called while the sprite pointed to `== sDummySprite`, i.e during map resume;
|
||||||
FieldEffectFreePaletteIfUnused(paletteNum);
|
// In this case, don't free the palette as `paletteNum` is likely blank dummy data
|
||||||
|
if (!gSprites[objectEvent->spriteId].inUse &&
|
||||||
|
!gSprites[objectEvent->spriteId].oam.paletteNum &&
|
||||||
|
gSprites[objectEvent->spriteId].callback == SpriteCallbackDummy) {
|
||||||
|
DestroySprite(&gSprites[objectEvent->spriteId]);
|
||||||
|
} else {
|
||||||
|
DestroySprite(&gSprites[objectEvent->spriteId]);
|
||||||
|
FieldEffectFreePaletteIfUnused(paletteNum);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveAllObjectEventsExceptPlayer(void)
|
void RemoveAllObjectEventsExceptPlayer(void)
|
||||||
|
|
Loading…
Reference in a new issue