Correct ground effect flag names for reflections & document sprite data usage
This commit is contained in:
@@ -32,6 +32,11 @@ static void CreateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sp
|
||||
static void sub_8155850(struct Sprite *);
|
||||
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
|
||||
|
||||
#define sReflectionObjEventId data[0]
|
||||
#define sReflectionObjEventLocalId data[1]
|
||||
#define sReflectionVerticalOffset data[2]
|
||||
#define sIsStillReflection data[7]
|
||||
|
||||
void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 stillReflection)
|
||||
{
|
||||
struct Sprite *reflectionSprite;
|
||||
@@ -46,9 +51,9 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo
|
||||
reflectionSprite->affineAnims = gDummySpriteAffineAnimTable;
|
||||
reflectionSprite->affineAnimBeginning = TRUE;
|
||||
reflectionSprite->subspriteMode = SUBSPRITES_OFF;
|
||||
reflectionSprite->data[0] = sprite->data[0];
|
||||
reflectionSprite->data[1] = objectEvent->localId;
|
||||
reflectionSprite->data[7] = stillReflection;
|
||||
reflectionSprite->sReflectionObjEventId = sprite->data[0];
|
||||
reflectionSprite->sReflectionObjEventLocalId = objectEvent->localId;
|
||||
reflectionSprite->sIsStillReflection = stillReflection;
|
||||
LoadObjectReflectionPalette(objectEvent, reflectionSprite);
|
||||
|
||||
if (!stillReflection)
|
||||
@@ -60,19 +65,19 @@ static s16 GetReflectionVerticalOffset(struct ObjectEvent *objectEvent)
|
||||
return GetObjectEventGraphicsInfo(objectEvent->graphicsId)->height - 2;
|
||||
}
|
||||
|
||||
static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *reflectionSprite)
|
||||
{
|
||||
u8 bridgeType;
|
||||
u16 bridgeReflectionVerticalOffsets[] = { 12, 28, 44 };
|
||||
sprite->data[2] = 0;
|
||||
reflectionSprite->sReflectionVerticalOffset = 0;
|
||||
if (!GetObjectEventGraphicsInfo(objectEvent->graphicsId)->disableReflectionPaletteLoad && ((bridgeType = MetatileBehavior_GetBridgeType(objectEvent->previousMetatileBehavior)) || (bridgeType = MetatileBehavior_GetBridgeType(objectEvent->currentMetatileBehavior))))
|
||||
{
|
||||
sprite->data[2] = bridgeReflectionVerticalOffsets[bridgeType - 1];
|
||||
LoadObjectHighBridgeReflectionPalette(objectEvent, sprite->oam.paletteNum);
|
||||
reflectionSprite->sReflectionVerticalOffset = bridgeReflectionVerticalOffsets[bridgeType - 1];
|
||||
LoadObjectHighBridgeReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadObjectRegularReflectionPalette(objectEvent, sprite->oam.paletteNum);
|
||||
LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,9 +123,9 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
struct ObjectEvent *objectEvent;
|
||||
struct Sprite *mainSprite;
|
||||
|
||||
objectEvent = &gObjectEvents[reflectionSprite->data[0]];
|
||||
objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId];
|
||||
mainSprite = &gSprites[objectEvent->spriteId];
|
||||
if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->data[1])
|
||||
if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->sReflectionObjEventLocalId)
|
||||
{
|
||||
reflectionSprite->inUse = FALSE;
|
||||
}
|
||||
@@ -135,8 +140,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum;
|
||||
reflectionSprite->invisible = mainSprite->invisible;
|
||||
reflectionSprite->pos1.x = mainSprite->pos1.x;
|
||||
// reflectionSprite->data[2] holds an additional vertical offset, used by the high bridges on Route 120
|
||||
reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->data[2];
|
||||
reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset;
|
||||
reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX;
|
||||
reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY;
|
||||
reflectionSprite->pos2.x = mainSprite->pos2.x;
|
||||
@@ -146,8 +150,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
if (objectEvent->hideReflection == TRUE)
|
||||
reflectionSprite->invisible = TRUE;
|
||||
|
||||
// Check if the reflection is not still.
|
||||
if (reflectionSprite->data[7] == FALSE)
|
||||
if (reflectionSprite->sIsStillReflection == FALSE)
|
||||
{
|
||||
// Sets the reflection sprite's rot/scale matrix to the appropriate
|
||||
// matrix based on whether or not the main sprite is horizontally flipped.
|
||||
@@ -159,6 +162,11 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
}
|
||||
}
|
||||
|
||||
#undef sReflectionObjEventId
|
||||
#undef sReflectionObjEventLocalId
|
||||
#undef sReflectionVerticalOffset
|
||||
#undef sIsStillReflection
|
||||
|
||||
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
|
||||
|
||||
u8 CreateWarpArrowSprite(void)
|
||||
|
||||
Reference in New Issue
Block a user