diff -r aae29ba56aec -r f61ce544d436 rust/hedgewars-server/src/server/actions.rs --- a/rust/hedgewars-server/src/server/actions.rs Wed Feb 06 21:33:22 2019 +0300 +++ b/rust/hedgewars-server/src/server/actions.rs Wed Feb 06 22:29:02 2019 +0300 @@ -100,64 +100,3 @@ PendingMessage::send_all(self) } } - -pub enum Action { - ChangeMaster(RoomId, Option), -} - -use self::Action::*; - -pub fn run_action(server: &mut HWServer, client_id: usize, action: Action) { - match action { - ChangeMaster(room_id, new_id) => { - 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) - { - new_id - } else { - new_id.or_else(|| room_client_ids.iter().find(|id| **id != client_id).cloned()) - }; - let new_nick = new_id.map(|id| server.clients[id].nick.clone()); - - if let (c, Some(r)) = server.client_and_room(client_id) { - match r.master_id { - Some(id) if id == c.id => { - c.set_is_master(false); - r.master_id = None; - /*actions.push( - ClientFlags("-h".to_string(), vec![c.nick.clone()]) - .send_all() - .in_room(r.id) - .action(), - );*/ - } - Some(_) => unreachable!(), - None => {} - } - r.master_id = new_id; - if !r.is_fixed() && c.protocol_number < 42 { - r.name - .replace_range(.., new_nick.as_ref().map_or("[]", String::as_str)); - } - 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(), - );*/ - } - } - if let Some(id) = new_id { - server.clients[id].set_is_master(true) - } - } - } -}