remove unwraps in ship on_disconnect

This commit is contained in:
jake 2020-10-30 23:09:01 -06:00
parent 498cf4ef43
commit ce3e58d459

View File

@ -22,7 +22,7 @@ use crate::entity::gateway::{EntityGateway, GatewayError};
use crate::entity::account::{UserAccountEntity, UserSettingsEntity};
use crate::entity::character::{CharacterEntity, SectionID};
use crate::ship::location::{ClientLocation, RoomLobby, MAX_ROOMS, ClientLocationError};
use crate::ship::location::{ClientLocation, RoomLobby, MAX_ROOMS, ClientLocationError, GetNeighborError, GetClientsError, GetAreaError};
use crate::ship::items;
use crate::ship::room;
@ -45,6 +45,9 @@ pub enum ShipError {
InvalidSlot(ClientId, u32),
TooManyClients,
ClientLocationError(#[from] ClientLocationError),
GetNeighborError(#[from] GetNeighborError),
GetClientsError(#[from] GetClientsError),
GetAreaError(#[from] GetAreaError),
MapsError(#[from] MapsError),
MapAreaError(#[from] MapAreaError),
InvalidRoom(u32),
@ -582,11 +585,11 @@ impl<EG: EntityGateway> ServerState for ShipServerState<EG> {
async fn on_disconnect(&mut self, id: ClientId) -> Result<Vec<(ClientId, SendShipPacket)>, ShipError> {
// TODO: don't unwrap!
let client = self.clients.get(&id).unwrap();
let area_client = self.client_location.get_local_client(id).unwrap();
let neighbors = self.client_location.get_client_neighbors(id).unwrap();
let client = self.clients.get(&id).ok_or(ShipError::ClientNotFound(id))?;
let area_client = self.client_location.get_local_client(id)?;
let neighbors = self.client_location.get_client_neighbors(id)?;
let pkt = match self.client_location.get_area(id).unwrap() {
let pkt = match self.client_location.get_area(id)? {
RoomLobby::Room(room) => {
if neighbors.len() == 0 {
self.rooms[room.0] = None;