Implement grounded fighter pushing #85

Merged
EIREXE merged 4 commits from feature/grounded-fighter-pushing into master 2026-10-07 07:29:02 +00:00
2 changed files with 16 additions and 5 deletions
Showing only changes of commit da8ae800de - Show all commits
+3 -1
View File
@@ -201,7 +201,9 @@ impl Plugin for FighterPlugin {
)
.add_systems(
GgrsSchedule,
push::apply_grounded_pushes.in_set(GameplaySet::Physics),
push::apply_grounded_pushes
.before(state::state_update_system)
.in_set(GameplaySet::StateUpdate),
)
.add_systems(
PostUpdate,
+13 -4
View File
@@ -75,13 +75,12 @@ fn calculate_push_deltas(
pub fn apply_grounded_pushes(
roster: Res<FighterRoster>,
fighters: Query<(
mut fighters: Query<(
&Fighter,
&FighterTranslation,
&mut FighterTranslation,
&FighterFacingDirection,
&FighterSurfaceState,
)>,
mut translations: Query<&mut FighterTranslation>,
manifests: Res<Assets<FighterManifest>>,
settings: Res<GameSettings>,
stage: Res<StageCollision>,
@@ -115,7 +114,7 @@ pub fn apply_grounded_pushes(
if delta == FGi32::ZERO {
continue;
}
if let Ok(mut translation) = translations.get_mut(*entity) {
if let Ok((_, mut translation, _, _)) = fighters.get_mut(*entity) {
translation.x += delta;
}
}
@@ -135,6 +134,7 @@ mod tests {
(FGVec2::lit("0", "0"), StagePolyLineSegmentType::Floor),
(FGVec2::lit("10", "0"), StagePolyLineSegmentType::Floor),
(FGVec2::lit("20", "0"), StagePolyLineSegmentType::Floor),
(FGVec2::lit("30", "0"), StagePolyLineSegmentType::Floor),
],
)],
}
@@ -204,4 +204,13 @@ mod tests {
vec![FGi32::lit("-0.6"), FGi32::ZERO, FGi32::lit("0.6")]
);
}
#[test]
fn system_parameters_initialize_without_query_conflicts() {
let mut world = World::new();
let mut schedule = Schedule::default();
schedule.add_systems(apply_grounded_pushes);
schedule.initialize(&mut world).unwrap();
}
}