Flatten pos fields in struct Sprite
This commit is contained in:
@@ -44,7 +44,7 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo
|
||||
{
|
||||
struct Sprite *reflectionSprite;
|
||||
|
||||
reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
|
||||
reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)];
|
||||
reflectionSprite->callback = UpdateObjectReflectionSprite;
|
||||
reflectionSprite->oam.priority = 3;
|
||||
reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum];
|
||||
@@ -142,12 +142,12 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
reflectionSprite->subspriteTables = mainSprite->subspriteTables;
|
||||
reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum;
|
||||
reflectionSprite->invisible = mainSprite->invisible;
|
||||
reflectionSprite->pos1.x = mainSprite->pos1.x;
|
||||
reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset;
|
||||
reflectionSprite->x = mainSprite->x;
|
||||
reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset;
|
||||
reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX;
|
||||
reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY;
|
||||
reflectionSprite->pos2.x = mainSprite->pos2.x;
|
||||
reflectionSprite->pos2.y = -mainSprite->pos2.y;
|
||||
reflectionSprite->x2 = mainSprite->x2;
|
||||
reflectionSprite->y2 = -mainSprite->y2;
|
||||
reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
|
||||
|
||||
if (objectEvent->hideReflection == TRUE)
|
||||
@@ -204,8 +204,8 @@ void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y)
|
||||
{
|
||||
SetSpritePosToMapCoords(x, y, &x2, &y2);
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->pos1.x = x2 + 8;
|
||||
sprite->pos1.y = y2 + 8;
|
||||
sprite->x = x2 + 8;
|
||||
sprite->y = y2 + 8;
|
||||
sprite->invisible = FALSE;
|
||||
sprite->data[0] = x;
|
||||
sprite->data[1] = y;
|
||||
@@ -262,8 +262,8 @@ void UpdateShadowFieldEffect(struct Sprite *sprite)
|
||||
objectEvent = &gObjectEvents[objectEventId];
|
||||
linkedSprite = &gSprites[objectEvent->spriteId];
|
||||
sprite->oam.priority = linkedSprite->oam.priority;
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3];
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = linkedSprite->y + sprite->data[3];
|
||||
if (!objectEvent->active || !objectEvent->hasShadow
|
||||
|| MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior)
|
||||
|| MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior)
|
||||
@@ -517,8 +517,8 @@ u32 FldEff_ShortGrass(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].y;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -539,8 +539,8 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
|
||||
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
|
||||
y = linkedSprite->pos1.y;
|
||||
x = linkedSprite->pos1.x;
|
||||
y = linkedSprite->y;
|
||||
x = linkedSprite->x;
|
||||
if (x != sprite->data[3] || y != sprite->data[4])
|
||||
{
|
||||
sprite->data[3] = x;
|
||||
@@ -550,9 +550,9 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
}
|
||||
sprite->pos1.x = x;
|
||||
sprite->pos1.y = y;
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
sprite->oam.priority = linkedSprite->oam.priority;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, linkedSprite->invisible);
|
||||
@@ -665,7 +665,7 @@ u32 FldEff_Splash(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 4;
|
||||
PlaySE(SE_PUDDLE);
|
||||
}
|
||||
return 0;
|
||||
@@ -681,8 +681,8 @@ void UpdateSplashFieldEffect(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
|
||||
sprite->pos1.y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
|
||||
sprite->x = gSprites[gObjectEvents[objectEventId].spriteId].x;
|
||||
sprite->y = gSprites[gObjectEvents[objectEventId].spriteId].y;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
@@ -746,7 +746,7 @@ u32 FldEff_FeetInFlowingWater(void)
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = -1;
|
||||
sprite->data[4] = -1;
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 4;
|
||||
StartSpriteAnim(sprite, 1);
|
||||
}
|
||||
return 0;
|
||||
@@ -766,8 +766,8 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
objectEvent = &gObjectEvents[objectEventId];
|
||||
linkedSprite = &gSprites[objectEvent->spriteId];
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = linkedSprite->pos1.y;
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = linkedSprite->y;
|
||||
sprite->subpriority = linkedSprite->subpriority;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4])
|
||||
@@ -816,8 +816,8 @@ u32 FldEff_HotSpringsWater(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].y;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -836,8 +836,8 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
|
||||
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
@@ -1092,7 +1092,7 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit
|
||||
u8 i;
|
||||
s16 x = playerObj->currentCoords.x;
|
||||
s16 y = playerObj->currentCoords.y;
|
||||
s32 spriteY = sprite->pos2.y;
|
||||
s32 spriteY = sprite->y2;
|
||||
|
||||
if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7]))
|
||||
{
|
||||
@@ -1120,7 +1120,7 @@ static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *pl
|
||||
// Update bobbing position of surf blob
|
||||
if (((u16)(++sprite->data[4]) & intervals[sprite->data[5]]) == 0)
|
||||
{
|
||||
sprite->pos2.y += sprite->data[3];
|
||||
sprite->y2 += sprite->data[3];
|
||||
}
|
||||
if ((sprite->data[4] & 15) == 0)
|
||||
{
|
||||
@@ -1130,11 +1130,11 @@ static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *pl
|
||||
{
|
||||
// Update bobbing position of player
|
||||
if (!GetSurfBlob_HasPlayerOffset(sprite))
|
||||
playerSprite->pos2.y = sprite->pos2.y;
|
||||
playerSprite->y2 = sprite->y2;
|
||||
else
|
||||
playerSprite->pos2.y = sprite->tPlayerOffset + sprite->pos2.y;
|
||||
sprite->pos1.x = playerSprite->pos1.x;
|
||||
sprite->pos1.y = playerSprite->pos1.y + 8;
|
||||
playerSprite->y2 = sprite->tPlayerOffset + sprite->y2;
|
||||
sprite->x = playerSprite->x;
|
||||
sprite->y = playerSprite->y + 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1167,7 +1167,7 @@ static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite)
|
||||
blobSprite = &gSprites[sprite->sSpriteId];
|
||||
if (((sprite->sTimer++) & 3) == 0)
|
||||
{
|
||||
blobSprite->pos2.y += sprite->sBobY;
|
||||
blobSprite->y2 += sprite->sBobY;
|
||||
}
|
||||
if ((sprite->sTimer & 15) == 0)
|
||||
{
|
||||
@@ -1217,9 +1217,9 @@ u32 FldEff_SandPile(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].y;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 2;
|
||||
SeekSpriteAnim(sprite, 2);
|
||||
}
|
||||
return 0;
|
||||
@@ -1237,8 +1237,8 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
|
||||
x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
|
||||
y = gSprites[gObjectEvents[objectEventId].spriteId].y;
|
||||
x = gSprites[gObjectEvents[objectEventId].spriteId].x;
|
||||
if (x != sprite->data[3] || y != sprite->data[4])
|
||||
{
|
||||
sprite->data[3] = x;
|
||||
@@ -1248,8 +1248,8 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
}
|
||||
sprite->pos1.x = x;
|
||||
sprite->pos1.y = y;
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
@@ -1275,7 +1275,7 @@ void UpdateBubblesFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] += 0x80;
|
||||
sprite->data[0] &= 0x100;
|
||||
sprite->pos1.y -= sprite->data[0] >> 8;
|
||||
sprite->y -= sprite->data[0] >> 8;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (sprite->invisible || sprite->animEnded)
|
||||
{
|
||||
@@ -1359,8 +1359,8 @@ void UpdateDisguiseFieldEffect(struct Sprite *sprite)
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
|
||||
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
|
||||
sprite->invisible = linkedSprite->invisible;
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 16;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
|
||||
if (sprite->sState == 1)
|
||||
@@ -1468,25 +1468,25 @@ static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
|
||||
switch (sprite->sAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.x += GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
sprite->x2 += GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->x2 -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
sprite->x2 -= GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->x2 += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
break;
|
||||
}
|
||||
|
||||
// Update spotlight to sweep left and right with Rayquaza
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->pos2.x);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->x2);
|
||||
|
||||
if (++sprite->sAnimCounter == FIGURE_8_LENGTH)
|
||||
{
|
||||
@@ -1495,8 +1495,8 @@ static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
|
||||
}
|
||||
if (sprite->sAnimState == 4)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
finished = TRUE;
|
||||
}
|
||||
|
||||
@@ -1528,7 +1528,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
|
||||
sprite->y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
|
||||
if (sprite->sTimer == 189)
|
||||
{
|
||||
sprite->sState = 2;
|
||||
@@ -1549,7 +1549,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sprite->pos2.y == 0)
|
||||
if (sprite->y2 == 0)
|
||||
{
|
||||
sprite->sTimer = 0;
|
||||
sprite->sState++;
|
||||
@@ -1557,10 +1557,10 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
if (sprite->sTimer == 5)
|
||||
{
|
||||
sprite->sTimer = 0;
|
||||
if (sprite->pos2.y > 0)
|
||||
sprite->pos2.y--;
|
||||
if (sprite->y2 > 0)
|
||||
sprite->y2--;
|
||||
else
|
||||
sprite->pos2.y++;
|
||||
sprite->y2++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
@@ -1614,7 +1614,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
if (sprite->sState == 1)
|
||||
{
|
||||
if ((sprite->data[1] & 7) == 0)
|
||||
sprite->pos2.y += sprite->data[3];
|
||||
sprite->y2 += sprite->data[3];
|
||||
if ((sprite->data[1] & 15) == 0)
|
||||
sprite->data[3] = -sprite->data[3];
|
||||
sprite->data[1]++;
|
||||
@@ -1667,13 +1667,13 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 of
|
||||
{
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
linkedSprite = &gSprites[objectEvent->spriteId];
|
||||
xhi = sprite->pos1.x + sprite->centerToCornerVecX;
|
||||
var = sprite->pos1.x - sprite->centerToCornerVecX;
|
||||
if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x)
|
||||
xhi = sprite->x + sprite->centerToCornerVecX;
|
||||
var = sprite->x - sprite->centerToCornerVecX;
|
||||
if (xhi < linkedSprite->x && var > linkedSprite->x)
|
||||
{
|
||||
lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
|
||||
var = linkedSprite->pos1.y;
|
||||
ylo = sprite->pos1.y - sprite->centerToCornerVecY;
|
||||
lyhi = linkedSprite->y + linkedSprite->centerToCornerVecY;
|
||||
var = linkedSprite->y;
|
||||
ylo = sprite->y - sprite->centerToCornerVecY;
|
||||
yhi = ylo + linkedSprite->centerToCornerVecY;
|
||||
if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user