Stop recording when game ends
This commit is contained in:
parent
506d0f3b50
commit
b3ecbfccd8
@ -431,6 +431,10 @@ impl Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn reset_game(&mut self) {
|
pub fn reset_game(&mut self) {
|
||||||
|
if let Some(mut recorder) = self.replay_recorder.take() {
|
||||||
|
recorder.queue_free();
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer
|
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer
|
||||||
&& let PeerKind::Server(peer, _) = peer
|
&& let PeerKind::Server(peer, _) = peer
|
||||||
&& let Some(player) = self.find_player_mut(self.self_id.unwrap_or(0))
|
&& let Some(player) = self.find_player_mut(self.self_id.unwrap_or(0))
|
||||||
@ -446,6 +450,10 @@ impl Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn finish_game(&mut self) {
|
pub fn finish_game(&mut self) {
|
||||||
|
if let Some(recorder) = &mut self.replay_recorder {
|
||||||
|
recorder.bind_mut().stop_recording();
|
||||||
|
}
|
||||||
|
|
||||||
self.game_started = false;
|
self.game_started = false;
|
||||||
|
|
||||||
for player in &mut self.players {
|
for player in &mut self.players {
|
||||||
|
|||||||
@ -193,12 +193,15 @@ pub struct ReplayRecorder {
|
|||||||
pub replay: Replay,
|
pub replay: Replay,
|
||||||
current_frame: ReplayFrame,
|
current_frame: ReplayFrame,
|
||||||
|
|
||||||
|
recording: bool,
|
||||||
|
|
||||||
base: Base<Node>,
|
base: Base<Node>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[godot_api]
|
#[godot_api]
|
||||||
impl INode for ReplayRecorder {
|
impl INode for ReplayRecorder {
|
||||||
fn ready(&mut self) {
|
fn ready(&mut self) {
|
||||||
|
self.recording = true;
|
||||||
self.run_deferred(|s| {
|
self.run_deferred(|s| {
|
||||||
s.current_frame = s.record_frame();
|
s.current_frame = s.record_frame();
|
||||||
|
|
||||||
@ -220,6 +223,9 @@ impl INode for ReplayRecorder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn physics_process(&mut self, delta: f64) {
|
fn physics_process(&mut self, delta: f64) {
|
||||||
|
if !self.recording {
|
||||||
|
return;
|
||||||
|
}
|
||||||
self.time_elapsed += delta;
|
self.time_elapsed += delta;
|
||||||
|
|
||||||
if self.time_elapsed > (self.current_frame.time + (1. / 60.)) {
|
if self.time_elapsed > (self.current_frame.time + (1. / 60.)) {
|
||||||
@ -234,6 +240,10 @@ impl ReplayRecorder {
|
|||||||
self.current_frame.events.push(event);
|
self.current_frame.events.push(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn stop_recording(&mut self) {
|
||||||
|
self.recording = false;
|
||||||
|
}
|
||||||
|
|
||||||
fn record_frame(&mut self) -> ReplayFrame {
|
fn record_frame(&mut self) -> ReplayFrame {
|
||||||
let mut player_data = HashMap::new();
|
let mut player_data = HashMap::new();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user