diff -r 6a2e13e36b7f -r 25c564f77b7d rust/hedgewars-server/src/server/core.rs --- a/rust/hedgewars-server/src/server/core.rs Thu Feb 07 17:02:24 2019 +0300 +++ b/rust/hedgewars-server/src/server/core.rs Thu Feb 07 17:17:42 2019 +0300 @@ -57,7 +57,6 @@ pub struct HWServer { pub clients: IndexSlab, pub rooms: Slab, - pub lobby_id: RoomId, pub output: Vec<(Vec, HWServerMessage)>, pub removed_clients: Vec, pub io: Box, @@ -68,17 +67,14 @@ pub fn new(clients_limit: usize, rooms_limit: usize, io: Box) -> Self { let rooms = Slab::with_capacity(rooms_limit); let clients = IndexSlab::with_capacity(clients_limit); - let mut server = Self { + Self { clients, rooms, - lobby_id: 0, output: vec![], removed_clients: vec![], io, anteroom: HWAnteroom::new(clients_limit), - }; - server.lobby_id = server.add_room().id; - server + } } pub fn add_client(&mut self, client_id: ClientId, data: HWAnteClient) { @@ -119,10 +115,6 @@ move_to_room(&mut self.clients[client_id], &mut self.rooms[room_id]) } - pub fn lobby(&self) -> &HWRoom { - &self.rooms[self.lobby_id] - } - pub fn has_room(&self, name: &str) -> bool { self.rooms.iter().any(|(_, r)| r.name == name) } @@ -158,6 +150,10 @@ self.clients.iter().filter(f).map(|(_, c)| c.id).collect() } + pub fn lobby_clients(&self) -> Vec { + self.select_clients(|(_, c)| c.room_id == None) + } + pub fn room_clients(&self, room_id: RoomId) -> Vec { self.select_clients(|(_, c)| c.room_id == Some(room_id)) }