small ground effect refactoring

This commit is contained in:
cawtds
2024-11-22 11:35:44 +01:00
parent d284a2bde1
commit 8b6daddb88
2 changed files with 66 additions and 43 deletions

View File

@@ -60,27 +60,50 @@ struct StepAnimTable
typedef void (*MovementAction)(u8 direction);
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0)
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << 1)
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN (1 << 2)
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE (1 << 3)
#define GROUND_EFFECT_FLAG_ICE_REFLECTION (1 << 4)
#define GROUND_EFFECT_FLAG_REFLECTION (1 << 5)
#define GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER (1 << 6)
#define GROUND_EFFECT_FLAG_SAND (1 << 7)
#define GROUND_EFFECT_FLAG_DEEP_SAND (1 << 8)
#define GROUND_EFFECT_FLAG_RIPPLES (1 << 9)
#define GROUND_EFFECT_FLAG_PUDDLE (1 << 10)
#define GROUND_EFFECT_FLAG_SAND_PILE (1 << 11)
#define GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS (1 << 12)
#define GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS (1 << 13)
#define GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER (1 << 14)
#define GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER (1 << 15)
#define GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND (1 << 16)
#define GROUND_EFFECT_FLAG_SHORT_GRASS (1 << 17)
#define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18)
#define GROUND_EFFECT_FLAG_SEAWEED (1 << 19)
#define GROUND_EFFECT_FLAG_SNOW (1 << 20)
#define GROUND_EFFECT_TALL_GRASS_ON_SPAWN 0
#define GROUND_EFFECT_TALL_GRASS_ON_MOVE 1
#define GROUND_EFFECT_LONG_GRASS_ON_SPAWN 2
#define GROUND_EFFECT_LONG_GRASS_ON_MOVE 3
#define GROUND_EFFECT_WATER_REFLECTION 4
#define GROUND_EFFECT_ICE_REFLECTION 5
#define GROUND_EFFECT_SHALLOW_FLOWING_WATER 6
#define GROUND_EFFECT_SAND 7
#define GROUND_EFFECT_DEEP_SAND 8
#define GROUND_EFFECT_RIPPLES 9
#define GROUND_EFFECT_PUDDLE 10
#define GROUND_EFFECT_SAND_PILE 11
#define GROUND_EFFECT_LAND_IN_TALL_GRASS 12
#define GROUND_EFFECT_LAND_IN_LONG_GRASS 13
#define GROUND_EFFECT_LAND_IN_SHALLOW_WATER 14
#define GROUND_EFFECT_LAND_IN_DEEP_WATER 15
#define GROUND_EFFECT_LAND_ON_NORMAL_GROUND 16
#define GROUND_EFFECT_SHORT_GRASS 17
#define GROUND_EFFECT_HOT_SPRINGS 18
#define GROUND_EFFECT_SEAWEED 19
#define GROUND_EFFECT_SNOW 20
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << GROUND_EFFECT_TALL_GRASS_ON_SPAWN)
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << GROUND_EFFECT_TALL_GRASS_ON_MOVE)
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN (1 << GROUND_EFFECT_LONG_GRASS_ON_SPAWN)
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE (1 << GROUND_EFFECT_LONG_GRASS_ON_MOVE)
#define GROUND_EFFECT_FLAG_WATER_REFLECTION (1 << GROUND_EFFECT_WATER_REFLECTION)
#define GROUND_EFFECT_FLAG_ICE_REFLECTION (1 << GROUND_EFFECT_ICE_REFLECTION)
#define GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER (1 << GROUND_EFFECT_SHALLOW_FLOWING_WATER)
#define GROUND_EFFECT_FLAG_SAND (1 << GROUND_EFFECT_SAND)
#define GROUND_EFFECT_FLAG_DEEP_SAND (1 << GROUND_EFFECT_DEEP_SAND)
#define GROUND_EFFECT_FLAG_RIPPLES (1 << GROUND_EFFECT_RIPPLES)
#define GROUND_EFFECT_FLAG_PUDDLE (1 << GROUND_EFFECT_PUDDLE)
#define GROUND_EFFECT_FLAG_SAND_PILE (1 << GROUND_EFFECT_SAND_PILE)
#define GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS (1 << GROUND_EFFECT_LAND_IN_TALL_GRASS)
#define GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS (1 << GROUND_EFFECT_LAND_IN_LONG_GRASS)
#define GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER (1 << GROUND_EFFECT_LAND_IN_SHALLOW_WATER)
#define GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER (1 << GROUND_EFFECT_LAND_IN_DEEP_WATER)
#define GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND (1 << GROUND_EFFECT_LAND_ON_NORMAL_GROUND)
#define GROUND_EFFECT_FLAG_SHORT_GRASS (1 << GROUND_EFFECT_SHORT_GRASS)
#define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << GROUND_EFFECT_HOT_SPRINGS)
#define GROUND_EFFECT_FLAG_SEAWEED (1 << GROUND_EFFECT_SEAWEED)
#define GROUND_EFFECT_FLAG_SNOW (1 << GROUND_EFFECT_SNOW)
struct PairedPalettes
{

View File

@@ -9805,7 +9805,7 @@ static void ObjectEventUpdateMetatileBehaviors(struct ObjectEvent *objEvent)
static void GetGroundEffectFlags_Reflection(struct ObjectEvent *objEvent, u32 *flags)
{
u32 reflectionFlags[2] = { GROUND_EFFECT_FLAG_REFLECTION, GROUND_EFFECT_FLAG_ICE_REFLECTION };
u32 reflectionFlags[2] = { GROUND_EFFECT_FLAG_ICE_REFLECTION, GROUND_EFFECT_FLAG_WATER_REFLECTION };
u8 type = ObjectEventCheckForReflectiveSurface(objEvent);
if (type)
@@ -10476,27 +10476,27 @@ void GroundEffect_Seaweed(struct ObjectEvent *objEvent, struct Sprite *sprite)
}
static void (*const sGroundEffectFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite) = {
GroundEffect_SpawnOnTallGrass,
GroundEffect_StepOnTallGrass,
GroundEffect_SpawnOnLongGrass,
GroundEffect_StepOnLongGrass,
GroundEffect_WaterReflection,
GroundEffect_IceReflection,
GroundEffect_FlowingWater,
GroundEffect_SandTracks,
GroundEffect_DeepSandTracks,
GroundEffect_Ripple,
GroundEffect_StepOnPuddle,
GroundEffect_SandHeap,
GroundEffect_JumpOnTallGrass,
GroundEffect_JumpOnLongGrass,
GroundEffect_JumpOnShallowWater,
GroundEffect_JumpOnWater,
GroundEffect_JumpLandingDust,
GroundEffect_ShortGrass,
GroundEffect_HotSprings,
GroundEffect_Seaweed,
GroundEffects_Snow,
[GROUND_EFFECT_TALL_GRASS_ON_SPAWN] = GroundEffect_SpawnOnTallGrass,
[GROUND_EFFECT_TALL_GRASS_ON_MOVE] = GroundEffect_StepOnTallGrass,
[GROUND_EFFECT_LONG_GRASS_ON_SPAWN] = GroundEffect_SpawnOnLongGrass,
[GROUND_EFFECT_LONG_GRASS_ON_MOVE] = GroundEffect_StepOnLongGrass,
[GROUND_EFFECT_WATER_REFLECTION] = GroundEffect_WaterReflection,
[GROUND_EFFECT_ICE_REFLECTION] = GroundEffect_IceReflection,
[GROUND_EFFECT_SHALLOW_FLOWING_WATER] = GroundEffect_FlowingWater,
[GROUND_EFFECT_SAND] = GroundEffect_SandTracks,
[GROUND_EFFECT_DEEP_SAND] = GroundEffect_DeepSandTracks,
[GROUND_EFFECT_RIPPLES] = GroundEffect_Ripple,
[GROUND_EFFECT_PUDDLE] = GroundEffect_StepOnPuddle,
[GROUND_EFFECT_SAND_PILE] = GroundEffect_SandHeap,
[GROUND_EFFECT_LAND_IN_TALL_GRASS] = GroundEffect_JumpOnTallGrass,
[GROUND_EFFECT_LAND_IN_LONG_GRASS] = GroundEffect_JumpOnLongGrass,
[GROUND_EFFECT_LAND_IN_SHALLOW_WATER] = GroundEffect_JumpOnShallowWater,
[GROUND_EFFECT_LAND_IN_DEEP_WATER] = GroundEffect_JumpOnWater,
[GROUND_EFFECT_LAND_ON_NORMAL_GROUND] = GroundEffect_JumpLandingDust,
[GROUND_EFFECT_SHORT_GRASS] = GroundEffect_ShortGrass,
[GROUND_EFFECT_HOT_SPRINGS] = GroundEffect_HotSprings,
[GROUND_EFFECT_SEAWEED] = GroundEffect_Seaweed,
[GROUND_EFFECT_SNOW] = GroundEffects_Snow,
};
static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite *sprite, u32 flags)