From 8b6daddb88b94d66223c37ce88faa2b4ba2eeb5c Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Fri, 22 Nov 2024 11:35:44 +0100 Subject: [PATCH] small ground effect refactoring --- include/event_object_movement.h | 65 ++++++++++++++++++++++----------- src/event_object_movement.c | 44 +++++++++++----------- 2 files changed, 66 insertions(+), 43 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index ab5594378..d0b5b5597 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -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 { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 9d8cb9a63..fd69167a4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -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)