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() {
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
}

View File

@ -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);
}
}
}

View File

@ -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