Implement fast falling (#44)
CI / build-and-test (push) Successful in 1m17s

Reviewed-on: #44
Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #44.
This commit is contained in:
2026-09-18 22:23:03 +00:00
committed by EIREXE
parent 9f51207f48
commit 7269a1cb49
12 changed files with 123 additions and 55 deletions
+15 -11
View File
@@ -1,12 +1,24 @@
use super::{CollisionContext, EnterContext, FighterStateImpl, InterruptContext, UpdateContext};
use crate::fighter::animation::AnimKind;
use crate::fighter::state::air::AirborneStateCommon;
use crate::fighter::state::{FighterState, air, jump};
#[derive(Debug, Clone, Copy, Hash)]
pub struct FallState;
#[derive(Debug, Clone, Copy, Hash, Default)]
pub struct FallState {
airborne_state_common: AirborneStateCommon
}
impl FallState {
pub fn new(airborne_state_common: AirborneStateCommon) -> Self {
Self {
airborne_state_common
}
}
}
impl FighterStateImpl for FallState {
const NAME: &'static str = "Fall";
fn check_interrupt(&self, state_context: &mut InterruptContext) -> Option<FighterState> {
jump::check_input_double_jump(state_context)
}
@@ -16,7 +28,7 @@ impl FighterStateImpl for FallState {
}
fn update(&mut self, state_context: &mut UpdateContext) {
air::update_standard_motion(state_context);
air::update_standard_motion(state_context, &mut self.airborne_state_common);
}
fn check_collision_interrupt(
@@ -36,11 +48,3 @@ impl FighterStateImpl for FallState {
}
}
pub fn check_input(state_context: &InterruptContext) -> Option<FighterState> {
let input_frame = state_context.input.get_last_frame();
if input_frame.movement.x.abs() < state_context.game_settings.input_common.stick_deadzone {
return Some(FighterState::Fall(FallState));
}
None
}