equal
deleted
inserted
replaced
521 |
521 |
522 pub struct HwRoomControl<'a> { |
522 pub struct HwRoomControl<'a> { |
523 server: &'a mut HwServer, |
523 server: &'a mut HwServer, |
524 client_id: ClientId, |
524 client_id: ClientId, |
525 room_id: RoomId, |
525 room_id: RoomId, |
|
526 is_room_removed: bool |
526 } |
527 } |
527 |
528 |
528 impl<'a> HwRoomControl<'a> { |
529 impl<'a> HwRoomControl<'a> { |
529 #[inline] |
530 #[inline] |
530 pub fn new(server: &'a mut HwServer, client_id: ClientId) -> Option<Self> { |
531 pub fn new(server: &'a mut HwServer, client_id: ClientId) -> Option<Self> { |
531 if let Some(room_id) = server.clients[client_id].room_id { |
532 if let Some(room_id) = server.clients[client_id].room_id { |
532 Some(Self { |
533 Some(Self { |
533 server, |
534 server, |
534 client_id, |
535 client_id, |
535 room_id, |
536 room_id, |
|
537 is_room_removed: false |
536 }) |
538 }) |
537 } else { |
539 } else { |
538 None |
540 None |
|
541 } |
|
542 } |
|
543 |
|
544 #[inline] |
|
545 pub fn cleanup_room(self) { |
|
546 if self.is_room_removed { |
|
547 self.server.rooms.remove(self.room_id); |
539 } |
548 } |
540 } |
549 } |
541 |
550 |
542 #[inline] |
551 #[inline] |
543 pub fn server(&self) -> &HwServer { |
552 pub fn server(&self) -> &HwServer { |
616 client.set_is_ready(false); |
625 client.set_is_ready(false); |
617 client.set_is_in_game(false); |
626 client.set_is_in_game(false); |
618 |
627 |
619 if !is_fixed { |
628 if !is_fixed { |
620 if room.players_number == 0 { |
629 if room.players_number == 0 { |
621 self.server.rooms.remove(self.room_id); |
630 self.is_room_removed = true |
622 } else if room.master_id == None { |
631 } else if room.master_id == None { |
623 let protocol_number = room.protocol_number; |
632 let protocol_number = room.protocol_number; |
624 let new_master_id = self.server.room_client_ids(self.room_id).next(); |
633 let new_master_id = self.server.room_client_ids(self.room_id).next(); |
625 |
634 |
626 if let Some(new_master_id) = new_master_id { |
635 if let Some(new_master_id) = new_master_id { |