parent
9a33403761
commit
5bd1fb9ff6
@ -840,14 +840,15 @@ impl Game {
|
||||
&& let Some(mut character) = player.character.clone()
|
||||
{
|
||||
// This is a respawn, remove old character
|
||||
character.queue_free();
|
||||
|
||||
if let Some(mut recorder) = self.replay_recorder.clone()
|
||||
&& let Some(state) = player.get_state(player.clone())
|
||||
&& let Some(state) = player.get_state()
|
||||
{
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Respawn(id, state));
|
||||
}
|
||||
character.queue_free();
|
||||
}
|
||||
|
||||
if let Some(mut map) = self.current_map.clone() {
|
||||
@ -918,17 +919,17 @@ impl Game {
|
||||
|
||||
if let Some(map) = &mut self.current_map {
|
||||
if let Some(player) = self.players.iter_mut().find(|p| p.id() == id) {
|
||||
if let Some(mut character) = player.character.clone() {
|
||||
if let Some(character) = &mut player.character {
|
||||
// This is a respawn, delete old character
|
||||
character.queue_free();
|
||||
|
||||
if let Some(mut recorder) = self.replay_recorder.clone()
|
||||
&& let Some(state) = player.get_state(player.clone())
|
||||
&& let Some(state) = player.get_state()
|
||||
{
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::Respawn(id, state));
|
||||
}
|
||||
|
||||
character.queue_free();
|
||||
}
|
||||
|
||||
let mut character = map.bind_mut().spawn_player(
|
||||
|
||||
@ -386,7 +386,7 @@ impl ReplayRecorder {
|
||||
|
||||
if let Some(game) = Game::singleton() {
|
||||
for player in &game.bind().players {
|
||||
if let Some(state) = player.get_state(player.clone()) {
|
||||
if let Some(state) = player.get_state() {
|
||||
player_data.insert(player.id(), state);
|
||||
}
|
||||
if let Some(replay_player) = self.replay.players.get_mut(&player.id()) {
|
||||
@ -523,8 +523,13 @@ pub struct ReplayPlayerState {
|
||||
}
|
||||
|
||||
impl Player {
|
||||
pub fn get_state(&self, player: Player) -> Option<ReplayPlayerState> {
|
||||
if let Some(character) = &self.character {
|
||||
pub fn get_state(&self) -> Option<ReplayPlayerState> {
|
||||
if let Some(character) = &self.character
|
||||
&& let Some(game) = Game::singleton()
|
||||
&& let Some(player) = game
|
||||
.bind()
|
||||
.find_player(character.dyn_bind().get_player_id().unwrap_or(0))
|
||||
{
|
||||
Some(ReplayPlayerState {
|
||||
transform: character.dyn_bind().get_transform(),
|
||||
movement_dir: character.dyn_bind().get_movement_dir().into(),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user