Add replay events to server too
This commit is contained in:
parent
e75cb79c86
commit
8093ffb2be
@ -988,12 +988,12 @@ impl Game {
|
||||
|
||||
// Handle a jump, either from the server or from a client
|
||||
pub fn handle_jump(&mut self, player_id: u16) {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Jump(player_id));
|
||||
}
|
||||
if player_id != self.self_id.unwrap_or(0) {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Jump(player_id));
|
||||
}
|
||||
if let Some(player) = self.find_player_mut(player_id) {
|
||||
player.apply_jump();
|
||||
}
|
||||
@ -1009,15 +1009,14 @@ impl Game {
|
||||
look_up: f32,
|
||||
deal_damage: bool,
|
||||
) -> bool {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Shoot(player_id, to.into()));
|
||||
}
|
||||
|
||||
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 {
|
||||
if player_id != self_id {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Shoot(player_id, to.into()));
|
||||
}
|
||||
if let Some(player) = self.find_player_mut(player_id) {
|
||||
player.try_shoot(to, transform, look_up, deal_damage)
|
||||
} else {
|
||||
false
|
||||
@ -1036,15 +1035,14 @@ 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.into()));
|
||||
}
|
||||
|
||||
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 {
|
||||
if player_id != self_id {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Punch(player_id, to.into()));
|
||||
}
|
||||
if let Some(player) = self.find_player_mut(player_id) {
|
||||
player.try_punch(to, transform, look_up, deal_damage)
|
||||
} else {
|
||||
false
|
||||
@ -1201,6 +1199,10 @@ impl Game {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn recorder(&mut self) -> &mut Option<Gd<ReplayRecorder>> {
|
||||
&mut self.replay_recorder
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
|
||||
@ -29,6 +29,7 @@ use crate::{
|
||||
soldier_mesh::SoldierMesh,
|
||||
weapon::{BallWeapon, Raygun, Shotgun, Weapon, WeaponType},
|
||||
},
|
||||
replay::ReplayEvent,
|
||||
ui::{chatbox::ChatBox, cli::CommandLinePanel, settings::SettingsPanel},
|
||||
};
|
||||
|
||||
@ -142,6 +143,13 @@ impl IPlayer for LocalPlayer {
|
||||
|
||||
fn jump(&mut self) {
|
||||
if self.try_jump() {
|
||||
if let Some(game) = &mut Game::singleton()
|
||||
&& let Some(recorder) = game.bind_mut().recorder()
|
||||
{
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Jump(self.player_id.unwrap_or(0)));
|
||||
}
|
||||
if let Some(effects) = &mut self.effects {
|
||||
effects.bind_mut().jump();
|
||||
}
|
||||
@ -163,7 +171,18 @@ impl IPlayer for LocalPlayer {
|
||||
fn apply_look_up(&mut self, _look: f32) {}
|
||||
|
||||
fn try_shoot(&mut self, to: Vector3, deal_damage: bool) -> bool {
|
||||
self.try_shoot_common(to, deal_damage)
|
||||
if self.try_shoot_common(to, deal_damage) {
|
||||
if let Some(game) = &mut Game::singleton()
|
||||
&& let Some(recorder) = game.bind_mut().recorder()
|
||||
{
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Shoot(self.player_id.unwrap_or(0), to.into()));
|
||||
}
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
fn try_punch(&mut self, to: Vector3, deal_damage: bool) -> bool {
|
||||
@ -173,7 +192,18 @@ impl IPlayer for LocalPlayer {
|
||||
weapon.set_rotation(Vector3::UP);
|
||||
}
|
||||
self.punch_cd_remaining = self.punch_cooldown;
|
||||
self.try_punch_common(to, deal_damage)
|
||||
if self.try_punch_common(to, deal_damage) {
|
||||
if let Some(game) = &mut Game::singleton()
|
||||
&& let Some(recorder) = game.bind_mut().recorder()
|
||||
{
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Punch(self.player_id.unwrap_or(0), to.into()));
|
||||
}
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
} else {
|
||||
false
|
||||
}
|
||||
|
||||
@ -362,6 +362,7 @@ impl ReplayRecorder {
|
||||
}
|
||||
|
||||
pub fn stop_recording(&mut self) {
|
||||
self.replay.frames.push(self.current_frame.clone());
|
||||
self.recording = false;
|
||||
}
|
||||
|
||||
|
||||
@ -43,7 +43,6 @@ impl ReplayFinishedScreen {
|
||||
fn produce_title(&mut self) {
|
||||
if let Some(playback) = &StandaloneReplayManager::singleton().bind().playback {
|
||||
let playback = playback.bind();
|
||||
godot_print!("{:?}", playback.replay.goals);
|
||||
let max_goals = playback
|
||||
.replay
|
||||
.goals
|
||||
|
||||
Loading…
Reference in New Issue
Block a user