rust/hedgewars-server/src/handlers/common.rs
changeset 15569 4b2f3228f13b
parent 15554 36687bc9d5c1
child 15579 db710cd8df69
--- a/rust/hedgewars-server/src/handlers/common.rs	Sat May 16 04:43:11 2020 +0200
+++ b/rust/hedgewars-server/src/handlers/common.rs	Sun May 17 04:07:10 2020 +0300
@@ -209,6 +209,22 @@
         if info.is_paused {
             response.add(ForwardEngineMessage(vec![to_engine_msg(once(b'I'))]).send_self());
         }
+
+        for (_, original_team) in &info.original_teams {
+            if let Some(team) = room.find_team(|team| team.name == original_team.name) {
+                if team.color != original_team.color {
+                    response.add(TeamColor(team.name.clone(), team.color).send_self());
+                }
+                if team.hedgehogs_number != original_team.hedgehogs_number {
+                    response
+                        .add(HedgehogsNumber(team.name.clone(), team.hedgehogs_number).send_self());
+                }
+            } else {
+                response.add(TeamRemove(original_team.name.clone()).send_self());
+            }
+        }
+
+        get_room_config_impl(room.config(), Destination::ToSelf, response);
     }
 }
 
@@ -608,22 +624,10 @@
         result
             .left_teams
             .iter()
+            .filter(|name| room.find_team(|t| t.name == **name).is_some())
             .map(|name| TeamRemove(name.clone()).send_all().in_room(room.id)),
     );
 
-    let midgame_destination = Destination::ToIds(result.joined_mid_game_clients);
-    for (_, team) in &room.teams {
-        response.add(
-            HedgehogsNumber(team.name.clone(), team.hedgehogs_number)
-                .send_to_destination(midgame_destination.clone()),
-        );
-        response.add(
-            TeamColor(team.name.clone(), team.color)
-                .send_to_destination(midgame_destination.clone()),
-        );
-    }
-    super::common::get_active_room_config(room, midgame_destination.clone(), response);
-
     if !result.unreadied_nicks.is_empty() {
         response.add(
             ClientFlags(remove_flags(&[Flags::Ready]), result.unreadied_nicks)