diff -r 282e5e54386f -r 8c5dd562c9f7 gameServer2/src/server/actions.rs --- a/gameServer2/src/server/actions.rs Mon Jul 16 22:59:58 2018 +0300 +++ b/gameServer2/src/server/actions.rs Tue Jul 17 00:27:24 2018 +0300 @@ -5,7 +5,7 @@ }; use super::{ server::HWServer, - room::GameInfo, + room::{GameInfo, RoomFlags}, client::HWClient, coretypes::{ClientId, RoomId, GameCfg, VoteType}, room::HWRoom, @@ -414,7 +414,7 @@ if c.is_ready() && r.ready_players_number > 0 { r.ready_players_number -= 1; } - if c.is_master() && (r.players_number > 0 || r.is_fixed) { + if c.is_master() && (r.players_number > 0 || r.is_fixed()) { actions.push(ChangeMaster(r.id, None)); } actions.push(ClientFlags("-i".to_string(), vec![c.nick.clone()]) @@ -425,7 +425,7 @@ if let (c, Some(r)) = server.client_and_room(client_id) { c.room_id = Some(lobby_id); - if r.players_number == 0 && !r.is_fixed { + if r.players_number == 0 && !r.is_fixed() { actions.push(RemoveRoom(r.id)); } else { actions.push(RemoveClientTeams); @@ -439,7 +439,7 @@ ChangeMaster(room_id, new_id) => { let mut actions = Vec::new(); let room_client_ids = server.room_clients(room_id); - let new_id = if server.room(client_id).map(|r| r.is_fixed).unwrap_or(false) { + let new_id = if server.room(client_id).map(|r| r.is_fixed()).unwrap_or(false) { new_id } else { new_id.or_else(|| @@ -459,6 +459,10 @@ None => {} } r.master_id = new_id; + r.set_join_restriction(false); + r.set_team_add_restriction(false); + let is_fixed = r.is_fixed(); + r.set_unregistered_players_restriction(is_fixed); if let Some(nick) = new_nick { actions.push(ClientFlags("+h".to_string(), vec![nick]) .send_all().in_room(r.id).action());