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