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