diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index 1bccf0c..2e6c908 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -1007,6 +1007,12 @@ impl Game { look_up: f32, deal_damage: bool, ) -> bool { + if let Some(recorder) = &mut self.replay_recorder { + recorder + .bind_mut() + .record_event(ReplayEvent::Punch(player_id, to)); + } + let self_id = self.self_id.clone().unwrap_or(0); if let Some(player) = self.find_player_mut(player_id) { if player.id() != self_id { diff --git a/rust/src/replay.rs b/rust/src/replay.rs index c9e9cd6..1649795 100644 --- a/rust/src/replay.rs +++ b/rust/src/replay.rs @@ -114,6 +114,11 @@ impl INode for ReplayPlayback { character.bind_mut().jump(); } } + ReplayEvent::Punch(player_id, to) => { + if let Some(character) = self.player_characters.get_mut(player_id) { + character.bind_mut().try_punch(*to, false); + } + } } } } @@ -276,6 +281,7 @@ pub enum ReplayEvent { Shoot(u16, Vector3), Respawn(u16, ReplayPlayerState), Jump(u16), + Punch(u16, Vector3), } #[derive(Debug, Clone, Default)]