diff --git a/rust/src/game/mod.rs b/rust/src/game/mod.rs index 7bf504f..fbec16a 100644 --- a/rust/src/game/mod.rs +++ b/rust/src/game/mod.rs @@ -495,11 +495,7 @@ impl Game { if NetworkManager::singleton().bind().is_host() { for player in s.players.clone() { s.run_deferred(move |s| { - s.try_set_player_team( - player.id(), - player.data.team.clamp(0, teams_max), - true, - ) + s.try_set_player_team(player.id(), player.data.team.clamp(0, teams_max)) }); } } @@ -520,8 +516,12 @@ impl Game { self.get_teams().get(team as usize) } - pub fn try_set_player_team(&mut self, player_id: u16, team: u8, emit: bool) { + pub fn try_set_player_team(&mut self, player_id: u16, team: u8) { + godot_print!("set player team"); if let Some(player) = self.find_player_mut(player_id) { + if player.data.team == team { + return; + } player.data.team = team; self.run_deferred(move |_| { if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { @@ -535,11 +535,9 @@ impl Game { } } }); - if emit { - self.run_deferred(move |s| { - s.signals().on_player_team_changed().emit(player_id, team); - }); - } + self.run_deferred(move |s| { + s.signals().on_player_team_changed().emit(player_id, team); + }); self.run_deferred(|s| s.signals().on_players_updated().emit()); } } @@ -602,7 +600,7 @@ impl Game { .map(|(team_idx, _)| team_idx) .unwrap_or(0); - self.try_set_player_team(id, team_with_least as u8, true); + self.try_set_player_team(id, team_with_least as u8); id } diff --git a/rust/src/net/protocol.rs b/rust/src/net/protocol.rs index 490ddf9..6c1f9c5 100644 --- a/rust/src/net/protocol.rs +++ b/rust/src/net/protocol.rs @@ -416,7 +416,7 @@ impl NetworkManager { if game.bind().opts.is_true(GameOption::AllowAnyTeam) || self_id == player_id { - game.bind_mut().try_set_player_team(player_id, team, true); + game.bind_mut().try_set_player_team(player_id, team); } } } diff --git a/rust/src/ui/lobby_player_listing.rs b/rust/src/ui/lobby_player_listing.rs index e54694e..ce7476b 100644 --- a/rust/src/ui/lobby_player_listing.rs +++ b/rust/src/ui/lobby_player_listing.rs @@ -127,7 +127,7 @@ impl LobbyPlayerListing { pub fn on_team_selection_changed(&mut self, team: u8) { if let Some(mut game) = Game::singleton() { game.bind_mut() - .try_set_player_team(self.player_id.unwrap_or(0), team, false); + .try_set_player_team(self.player_id.unwrap_or(0), team); if let Some(player) = game.bind().find_player(self.player_id.unwrap_or(0)) && let Some(player_label) = &mut self.name_label