remove unwraps in ship on_disconnect
This commit is contained in:
parent
498cf4ef43
commit
ce3e58d459
@ -22,7 +22,7 @@ use crate::entity::gateway::{EntityGateway, GatewayError};
|
|||||||
use crate::entity::account::{UserAccountEntity, UserSettingsEntity};
|
use crate::entity::account::{UserAccountEntity, UserSettingsEntity};
|
||||||
use crate::entity::character::{CharacterEntity, SectionID};
|
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::items;
|
||||||
use crate::ship::room;
|
use crate::ship::room;
|
||||||
@ -45,6 +45,9 @@ pub enum ShipError {
|
|||||||
InvalidSlot(ClientId, u32),
|
InvalidSlot(ClientId, u32),
|
||||||
TooManyClients,
|
TooManyClients,
|
||||||
ClientLocationError(#[from] ClientLocationError),
|
ClientLocationError(#[from] ClientLocationError),
|
||||||
|
GetNeighborError(#[from] GetNeighborError),
|
||||||
|
GetClientsError(#[from] GetClientsError),
|
||||||
|
GetAreaError(#[from] GetAreaError),
|
||||||
MapsError(#[from] MapsError),
|
MapsError(#[from] MapsError),
|
||||||
MapAreaError(#[from] MapAreaError),
|
MapAreaError(#[from] MapAreaError),
|
||||||
InvalidRoom(u32),
|
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> {
|
async fn on_disconnect(&mut self, id: ClientId) -> Result<Vec<(ClientId, SendShipPacket)>, ShipError> {
|
||||||
// TODO: don't unwrap!
|
// TODO: don't unwrap!
|
||||||
let client = self.clients.get(&id).unwrap();
|
let client = self.clients.get(&id).ok_or(ShipError::ClientNotFound(id))?;
|
||||||
let area_client = self.client_location.get_local_client(id).unwrap();
|
let area_client = self.client_location.get_local_client(id)?;
|
||||||
let neighbors = self.client_location.get_client_neighbors(id).unwrap();
|
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) => {
|
RoomLobby::Room(room) => {
|
||||||
if neighbors.len() == 0 {
|
if neighbors.len() == 0 {
|
||||||
self.rooms[room.0] = None;
|
self.rooms[room.0] = None;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user