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) {
|
||||
if let Some(mut recorder) = self.replay_recorder.take() {
|
||||
recorder.queue_free();
|
||||
}
|
||||
|
||||
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer
|
||||
&& let PeerKind::Server(peer, _) = peer
|
||||
&& 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) {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder.bind_mut().stop_recording();
|
||||
}
|
||||
|
||||
self.game_started = false;
|
||||
|
||||
for player in &mut self.players {
|
||||
|
||||
@ -193,12 +193,15 @@ pub struct ReplayRecorder {
|
||||
pub replay: Replay,
|
||||
current_frame: ReplayFrame,
|
||||
|
||||
recording: bool,
|
||||
|
||||
base: Base<Node>,
|
||||
}
|
||||
|
||||
#[godot_api]
|
||||
impl INode for ReplayRecorder {
|
||||
fn ready(&mut self) {
|
||||
self.recording = true;
|
||||
self.run_deferred(|s| {
|
||||
s.current_frame = s.record_frame();
|
||||
|
||||
@ -220,6 +223,9 @@ impl INode for ReplayRecorder {
|
||||
}
|
||||
|
||||
fn physics_process(&mut self, delta: f64) {
|
||||
if !self.recording {
|
||||
return;
|
||||
}
|
||||
self.time_elapsed += delta;
|
||||
|
||||
if self.time_elapsed > (self.current_frame.time + (1. / 60.)) {
|
||||
@ -234,6 +240,10 @@ impl ReplayRecorder {
|
||||
self.current_frame.events.push(event);
|
||||
}
|
||||
|
||||
pub fn stop_recording(&mut self) {
|
||||
self.recording = false;
|
||||
}
|
||||
|
||||
fn record_frame(&mut self) -> ReplayFrame {
|
||||
let mut player_data = HashMap::new();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user