Add ledge getup, ledge intangibility limit & fix walk-off velocity (#93)
CI / build-and-test (push) Successful in 1m40s
CI / production-build (push) Successful in 12m14s

Reviewed-on: #93
Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #93.
This commit is contained in:
2026-10-13 15:52:10 +00:00
committed by EIREXE
parent 4fe1b24b1a
commit f1da5c1172
12 changed files with 208 additions and 55 deletions
+4 -1
View File
@@ -2,7 +2,7 @@ use bevy::prelude::*;
use crate::{
camera::MatchCamera, fighter::{
FighterECB, FighterFacingDirection, FighterHitboxes, FighterHitstop, FighterHitstopShake, FighterInvulnerabilityState, FighterPendingRespawn, FighterPreviousFacingDirection, FighterPreviousTranslation, FighterSurfaceState, FighterTranslation, FighterVelocity, animation::FighterAnimationFrame, attack::{
FighterECB, FighterFacingDirection, FighterHitboxes, FighterHitstop, FighterHitstopShake, FighterInvulnerabilityState, FighterLedgeInformation, FighterPendingRespawn, FighterPreviousFacingDirection, FighterPreviousTranslation, FighterSurfaceState, FighterTranslation, FighterVelocity, animation::FighterAnimationFrame, attack::{
FighterDamage, FighterKnockbackVelocity, FighterPendingHitReaction, FighterPendingHits,
FighterSolvedHurtboxes, FighterStaleMoveQueue,
}, baked_animation::FighterBoneMatrices, state::FighterState,
@@ -48,6 +48,7 @@ struct FighterCheckpoint {
surface: FighterSurfaceState,
pending_respawn: FighterPendingRespawn,
invulnerability_state: FighterInvulnerabilityState,
ledge_information: FighterLedgeInformation,
}
pub(super) fn save_or_restore(world: &mut World) {
@@ -151,6 +152,7 @@ pub(super) fn save_or_restore(world: &mut World) {
entity.insert(saved.surface.clone());
entity.insert(saved.pending_respawn.clone());
entity.insert(saved.invulnerability_state.clone());
entity.insert(saved.ledge_information.clone());
}
world.insert_resource(checkpoint.pending_hits.clone());
world.insert_resource(checkpoint.stage_collision);
@@ -188,6 +190,7 @@ fn capture_fighter(world: &World, entity: Entity) -> Option<FighterCheckpoint> {
surface: fighter.get::<FighterSurfaceState>()?.clone(),
pending_respawn: fighter.get::<FighterPendingRespawn>()?.clone(),
invulnerability_state: fighter.get::<FighterInvulnerabilityState>()?.clone(),
ledge_information: fighter.get::<FighterLedgeInformation>()?.clone(),
})
}