Add the ability to respawn and improve controller port mapping (#72)
CI / build-and-test (push) Successful in 2m2s
CI / production-build (push) Successful in 12m18s

Reviewed-on: #72
Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #72.
This commit is contained in:
2026-09-27 11:54:08 +00:00
committed by EIREXE
parent bb238d2cbc
commit 6f1d8a7706
15 changed files with 438 additions and 85 deletions
+10 -1
View File
@@ -20,6 +20,7 @@ pub mod motion;
pub mod state;
pub mod surface;
pub mod visual;
pub mod blast_zones;
// The fighter components are re-exported so the rest of the crate can say
// `fighter::FighterVelocity` without caring which file it lives in. Named
@@ -128,11 +129,15 @@ impl FighterFacingDirection {
#[require(Transform)]
pub struct FighterVisual;
#[derive(Component, DerefMut, Deref, Debug, Default, Hash, Clone, Copy)]
pub struct FighterPendingRespawn(bool);
#[derive(Component)]
#[require(
FighterStaleMoveQueue,
FighterDamage,
FighterPendingHitReaction,
FighterPendingRespawn,
FighterHitstop,
FighterKnockbackVelocity,
FighterTranslation
@@ -177,7 +182,7 @@ impl Plugin for FighterPlugin {
.add_systems(
GgrsSchedule,
(
(ecb::update_ecb, ecb::decrement_ecb_lockout, state::state_collision_interrupt_system).chain(),
(blast_zones::apply_blast_zones, ecb::update_ecb, ecb::decrement_ecb_lockout, state::state_collision_interrupt_system).chain(),
baked_animation::update_fighter_bone_matrices,
)
.chain()
@@ -220,6 +225,8 @@ impl Plugin for FighterPlugin {
.checksum_component_with_hash::<FighterDamage>()
.rollback_component_with_clone::<FighterPendingHitReaction>()
.checksum_component_with_hash::<FighterPendingHitReaction>()
.rollback_component_with_copy::<FighterPendingRespawn>()
.checksum_component_with_hash::<FighterPendingRespawn>()
.rollback_component_with_copy::<FighterHitstop>()
.checksum_component_with_hash::<FighterHitstop>()
.rollback_component_with_copy::<FighterKnockbackVelocity>()
@@ -281,6 +288,7 @@ pub struct FighterHitboxes(pub Option<FighterActiveAttack>);
pub fn spawn_fighter(
commands: &mut Commands,
player_handle: usize,
controller_port: usize,
spawn_position: FGVec2,
manifest: Handle<FighterManifest>,
model_scale: FGi32,
@@ -294,6 +302,7 @@ pub fn spawn_fighter(
Name(format!("Fighter {player_handle}").into()),
Player {
handle: player_handle,
controller_port,
},
Fighter { manifest: manifest },
FighterFacingDirection::Right,