Deduplicate fighter state lifecycle policies (#36)
CI / build-and-test (push) Failing after 10m51s
CI / build-and-test (push) Failing after 10m51s
Fixes #22 Extracts shared grounded collision/friction and airborne movement/landing policies while preserving state-specific behavior. Running fighters now pass `can_walk_off = true` so they can run off platform edges. Includes grounded and airborne hitstun call sites. Reviewed-on: #36 Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #36.
This commit is contained in:
@@ -6,8 +6,8 @@ use crate::{
|
||||
CollisionContext, EnterContext, ExitContext, FighterState, FighterStateImpl,
|
||||
InterruptContext, UpdateContext, air,
|
||||
fall::FallState,
|
||||
ground::{GroundedMotionResult, GroundedStateCommon, collide_with_stage_grounded},
|
||||
land::{LandingState, LandingType},
|
||||
ground::{GroundedStateCommon, collision_interrupt},
|
||||
land::LandingType,
|
||||
wait::WaitState,
|
||||
},
|
||||
},
|
||||
@@ -88,29 +88,10 @@ impl FighterStateImpl for HitstunState {
|
||||
) -> Option<FighterState> {
|
||||
match &mut self.hitstop_kind {
|
||||
HitstopStateKind::Grounded(grounded_state_common) => {
|
||||
if let GroundedMotionResult::InAir =
|
||||
collide_with_stage_grounded(state_context, grounded_state_common, true)
|
||||
{
|
||||
Some(FighterState::Fall(FallState {}))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
collision_interrupt(state_context, grounded_state_common, true)
|
||||
}
|
||||
HitstopStateKind::Airborne => {
|
||||
if let Some(res) = state_context.air_collide_with_stage() {
|
||||
// Adjust translation
|
||||
state_context.translation.0 =
|
||||
res.hit_position - state_context.ecb.get_bottom_point();
|
||||
let grounded_common = GroundedStateCommon {
|
||||
current_line_id: res.line_id,
|
||||
};
|
||||
Some(FighterState::Land(LandingState::create(
|
||||
grounded_common,
|
||||
LandingType::Normal,
|
||||
)))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
air::collision_interrupt(state_context, LandingType::Normal)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user