rust/hedgewars-server/src/core/server.rs
changeset 15541 d122b65bdf6f
parent 15540 479911540e17
child 15551 7478568cffbe
--- a/rust/hedgewars-server/src/core/server.rs	Sat Jan 11 00:44:25 2020 +0300
+++ b/rust/hedgewars-server/src/core/server.rs	Sat Jan 11 01:06:41 2020 +0300
@@ -986,8 +986,6 @@
                 .collect();
 
             if let Some(ref mut info) = room.game_info {
-                info.teams_in_game -= team_names.len() as u8;
-
                 for team_name in &team_names {
                     let remove_msg =
                         utils::to_engine_msg(std::iter::once(b'F').chain(team_name.bytes()));
@@ -1012,8 +1010,12 @@
         let room = self.room_mut();
         room.ready_players_number = room.master_id.is_some() as u8;
 
-        if let Some(info) = replace(&mut room.game_info, None) {
+        if let Some(mut info) = replace(&mut room.game_info, None) {
             let room_id = room.id;
+            for team_name in &info.left_teams {
+                room.remove_team(team_name);
+            }
+
             let joined_mid_game_clients = self
                 .server
                 .clients
@@ -1043,7 +1045,7 @@
 
             Some(EndGameResult {
                 joined_mid_game_clients,
-                left_teams: info.left_teams.clone(),
+                left_teams: replace(&mut info.left_teams, vec![]),
                 unreadied_nicks,
             })
         } else {
@@ -1114,13 +1116,6 @@
 
         if !team_names.is_empty() {
             info.left_teams.retain(|name| !team_names.contains(&name));
-            info.teams_in_game += team_names.len() as u8;
-            room.teams = info
-                .teams_at_start
-                .iter()
-                .filter(|(_, t)| !team_names.contains(&t.name))
-                .cloned()
-                .collect();
         }
     }
 }