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