Fix team swapping nonsense

This commit is contained in:
Sofia 2026-07-30 19:33:40 +03:00
parent 884f113bd3
commit bcbd7b0b03
3 changed files with 12 additions and 14 deletions

View File

@ -495,11 +495,7 @@ impl Game {
if NetworkManager::singleton().bind().is_host() { if NetworkManager::singleton().bind().is_host() {
for player in s.players.clone() { for player in s.players.clone() {
s.run_deferred(move |s| { s.run_deferred(move |s| {
s.try_set_player_team( s.try_set_player_team(player.id(), player.data.team.clamp(0, teams_max))
player.id(),
player.data.team.clamp(0, teams_max),
true,
)
}); });
} }
} }
@ -520,8 +516,12 @@ impl Game {
self.get_teams().get(team as usize) 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 let Some(player) = self.find_player_mut(player_id) {
if player.data.team == team {
return;
}
player.data.team = team; player.data.team = team;
self.run_deferred(move |_| { self.run_deferred(move |_| {
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
@ -535,11 +535,9 @@ impl Game {
} }
} }
}); });
if emit { self.run_deferred(move |s| {
self.run_deferred(move |s| { s.signals().on_player_team_changed().emit(player_id, team);
s.signals().on_player_team_changed().emit(player_id, team); });
});
}
self.run_deferred(|s| s.signals().on_players_updated().emit()); self.run_deferred(|s| s.signals().on_players_updated().emit());
} }
} }
@ -602,7 +600,7 @@ impl Game {
.map(|(team_idx, _)| team_idx) .map(|(team_idx, _)| team_idx)
.unwrap_or(0); .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 id
} }

View File

@ -416,7 +416,7 @@ impl NetworkManager {
if game.bind().opts.is_true(GameOption::AllowAnyTeam) if game.bind().opts.is_true(GameOption::AllowAnyTeam)
|| self_id == player_id || 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);
} }
} }
} }

View File

@ -127,7 +127,7 @@ impl LobbyPlayerListing {
pub fn on_team_selection_changed(&mut self, team: u8) { pub fn on_team_selection_changed(&mut self, team: u8) {
if let Some(mut game) = Game::singleton() { if let Some(mut game) = Game::singleton() {
game.bind_mut() 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)) if let Some(player) = game.bind().find_player(self.player_id.unwrap_or(0))
&& let Some(player_label) = &mut self.name_label && let Some(player_label) = &mut self.name_label