diff --git a/rust/src/player/local_player.rs b/rust/src/player/local_player.rs index a174584..5860018 100644 --- a/rust/src/player/local_player.rs +++ b/rust/src/player/local_player.rs @@ -421,11 +421,10 @@ impl IPlayer for LocalPlayer { area.signals() .body_entered() - .connect_other(self, |s, other| s.body_entered(other)); + .connect_other(self, |s, other| s.on_body_entered(other)); self.base_mut().add_child(&area); - godot_print!("added area"); self.telefrag_frames = 1; self.telefrag_area = Some(area); @@ -789,7 +788,6 @@ impl ICharacterBody3D for LocalPlayer { if self.telefrag_frames == 0 { if let Some(area) = &mut self.telefrag_area.take() { - godot_print!("removed area"); area.queue_free(); } } else { @@ -905,22 +903,6 @@ impl LocalPlayer { mat.set("shader_parameter/Color", &color.to_variant()); } } - - fn body_entered(&mut self, collider: Gd) { - if !NetworkManager::singleton().bind().is_host() { - return; - } - if collider.instance_id() == self.base().instance_id() { - return; - } - if let Ok(mut player) = collider.try_dynify::() { - player.dyn_bind_mut().take_damage( - DamageSource::Player(self.get_player_id().unwrap_or(0)), - 1000, - true, - ); - } - } } #[godot_dyn] diff --git a/rust/src/player/mod.rs b/rust/src/player/mod.rs index 17e89cc..0e8281f 100644 --- a/rust/src/player/mod.rs +++ b/rust/src/player/mod.rs @@ -93,6 +93,7 @@ pub trait PlayerCommon { fn try_punch_common(&mut self, to: Vector3, deal_damage: bool) -> bool; fn throw_telegrenade_common(&mut self, to: Vector3) -> bool; fn telegrenade_teleport_common(&mut self, to: Vector3) -> bool; + fn on_body_entered(&self, other: Gd); } impl PlayerCommon for T { @@ -324,6 +325,22 @@ impl PlayerCommon for T { self.set_telefrag_frame(); true } + + fn on_body_entered(&self, collider: Gd) { + if !NetworkManager::singleton().bind().is_host() { + return; + } + if collider.instance_id() == self.base().instance_id() { + return; + } + if let Ok(mut player) = collider.try_dynify::() { + player.dyn_bind_mut().take_damage( + DamageSource::Player(self.get_player_id().unwrap_or(0)), + 1000, + true, + ); + } + } } #[derive(Clone, Copy, Debug, Serialize, Deserialize)] diff --git a/rust/src/player/remote_player.rs b/rust/src/player/remote_player.rs index 9b9e20b..f32d015 100644 --- a/rust/src/player/remote_player.rs +++ b/rust/src/player/remote_player.rs @@ -372,12 +372,10 @@ impl IPlayer for RemotePlayer { area.signals() .body_entered() - .connect_other(self, |s, other| s.body_entered(other)); + .connect_other(self, |s, other| s.on_body_entered(other)); self.base_mut().add_child(&area); - godot_print!("added area"); - self.telefrag_frames = 1; self.telefrag_area = Some(area); @@ -495,22 +493,6 @@ impl RemotePlayer { self.health = health; self.update_health_bar(); } - - fn body_entered(&mut self, collider: Gd) { - if !NetworkManager::singleton().bind().is_host() { - return; - } - if collider.instance_id() == self.base().instance_id() { - return; - } - if let Ok(mut player) = collider.try_dynify::() { - player.dyn_bind_mut().take_damage( - DamageSource::Player(self.get_player_id().unwrap_or(0)), - 1000, - true, - ); - } - } } #[godot_dyn]