message/direct_message return a result
This commit is contained in:
		
							parent
							
								
									c26bc895da
								
							
						
					
					
						commit
						3cb5df4577
					
				| @ -261,52 +261,52 @@ impl<EG: EntityGateway> ShipServerState<EG> { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn message(&mut self, id: ClientId, msg: &Message) -> Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send> { |     fn message(&mut self, id: ClientId, msg: &Message) -> Result<Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send>, ShipError> { | ||||||
|         match &msg.msg { |         match &msg.msg { | ||||||
|             GameMessage::RequestExp(request_exp) => { |             GameMessage::RequestExp(request_exp) => { | ||||||
|                 handler::message::request_exp(id, request_exp, &self.client_location, &self.rooms) |                 Ok(handler::message::request_exp(id, request_exp, &self.client_location, &self.rooms)) | ||||||
|             }, |             }, | ||||||
|             GameMessage::PlayerDropItem(player_drop_item) => { |             GameMessage::PlayerDropItem(player_drop_item) => { | ||||||
|                 handler::message::player_drop_item(id, player_drop_item, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.rooms, &mut self.item_manager).unwrap() |                 handler::message::player_drop_item(id, player_drop_item, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.rooms, &mut self.item_manager) | ||||||
|             }, |             }, | ||||||
|             GameMessage::DropCoordinates(drop_coordinates) => { |             GameMessage::DropCoordinates(drop_coordinates) => { | ||||||
|                 handler::message::drop_coordinates(id, drop_coordinates, &self.client_location, &mut self.clients, &self.rooms).unwrap() |                 handler::message::drop_coordinates(id, drop_coordinates, &self.client_location, &mut self.clients, &self.rooms) | ||||||
|             }, |             }, | ||||||
|             GameMessage::PlayerSplitItemStack(split_item_stack) => { |             GameMessage::PlayerSplitItemStack(split_item_stack) => { | ||||||
|                 handler::message::split_item_stack(id, split_item_stack, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.item_manager).unwrap() |                 handler::message::split_item_stack(id, split_item_stack, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.item_manager) | ||||||
|             }, |             }, | ||||||
|             _ => { |             _ => { | ||||||
|                 let cmsg = msg.clone(); |                 let cmsg = msg.clone(); | ||||||
|                 Box::new(self.client_location.get_client_neighbors(id).unwrap().into_iter() |                 Ok(Box::new(self.client_location.get_client_neighbors(id).unwrap().into_iter() | ||||||
|                     .map(move |client| { |                     .map(move |client| { | ||||||
|                         (client.client, SendShipPacket::Message(cmsg.clone())) |                         (client.client, SendShipPacket::Message(cmsg.clone())) | ||||||
|                     })) |                     }))) | ||||||
|             }, |             }, | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn direct_message(&mut self, id: ClientId, msg: &DirectMessage) -> Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send> { |     fn direct_message(&mut self, id: ClientId, msg: &DirectMessage) -> Result<Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send>, ShipError> { | ||||||
|         let target = msg.flag; |         let target = msg.flag; | ||||||
|         match &msg.msg { |         match &msg.msg { | ||||||
|             GameMessage::GuildcardSend(guildcard_send) => { |             GameMessage::GuildcardSend(guildcard_send) => { | ||||||
|                 handler::direct_message::guildcard_send(id, guildcard_send, target, &self.client_location, &self.clients) |                 Ok(handler::direct_message::guildcard_send(id, guildcard_send, target, &self.client_location, &self.clients)) | ||||||
|             }, |             }, | ||||||
|             GameMessage::RequestItem(request_item) => { |             GameMessage::RequestItem(request_item) => { | ||||||
|                 handler::direct_message::request_item(id, request_item, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.rooms, &mut self.item_manager).unwrap() |                 handler::direct_message::request_item(id, request_item, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.rooms, &mut self.item_manager) | ||||||
|             }, |             }, | ||||||
|             GameMessage::PickupItem(pickup_item) => { |             GameMessage::PickupItem(pickup_item) => { | ||||||
|                 handler::direct_message::pickup_item(id, pickup_item, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.item_manager).unwrap() |                 handler::direct_message::pickup_item(id, pickup_item, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.item_manager) | ||||||
|             }, |             }, | ||||||
|             GameMessage::BoxDropRequest(box_drop_request) => { |             GameMessage::BoxDropRequest(box_drop_request) => { | ||||||
|                 handler::direct_message::request_box_item(id, box_drop_request, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.rooms, &mut self.item_manager).unwrap() // TODO: unwrap
 |                 handler::direct_message::request_box_item(id, box_drop_request, &mut self.entity_gateway, &mut self.client_location, &mut self.clients, &mut self.rooms, &mut self.item_manager) | ||||||
|             } |             } | ||||||
|             _ => { |             _ => { | ||||||
|                 let cmsg = msg.clone(); |                 let cmsg = msg.clone(); | ||||||
|                 Box::new(self.client_location.get_all_clients_by_client(id).unwrap().into_iter() |                 Ok(Box::new(self.client_location.get_all_clients_by_client(id).unwrap().into_iter() | ||||||
|                     .filter(move |client| client.local_client.id() == target as u8) |                     .filter(move |client| client.local_client.id() == target as u8) | ||||||
|                     .map(move |client| { |                     .map(move |client| { | ||||||
|                         (client.client, SendShipPacket::DirectMessage(cmsg.clone())) |                         (client.client, SendShipPacket::DirectMessage(cmsg.clone())) | ||||||
|                     })) |                     }))) | ||||||
|             }, |             }, | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @ -375,10 +375,10 @@ impl<EG: EntityGateway> ServerState for ShipServerState<EG> { | |||||||
|                 Box::new(handler::lobby::send_player_to_lobby(id, chardata, &mut self.client_location, &self.clients, &self.item_manager, &self.level_table)?.into_iter()) |                 Box::new(handler::lobby::send_player_to_lobby(id, chardata, &mut self.client_location, &self.clients, &self.item_manager, &self.level_table)?.into_iter()) | ||||||
|             }, |             }, | ||||||
|             RecvShipPacket::Message(msg) => { |             RecvShipPacket::Message(msg) => { | ||||||
|                 self.message(id, msg) |                 self.message(id, msg)? | ||||||
|             }, |             }, | ||||||
|             RecvShipPacket::DirectMessage(msg) => { |             RecvShipPacket::DirectMessage(msg) => { | ||||||
|                 self.direct_message(id, msg) |                 self.direct_message(id, msg)? | ||||||
|             }, |             }, | ||||||
|             RecvShipPacket::PlayerChat(msg) => { |             RecvShipPacket::PlayerChat(msg) => { | ||||||
|                 Box::new(handler::communication::player_chat(id, msg, &self.client_location, &self.clients)?.into_iter()) |                 Box::new(handler::communication::player_chat(id, msg, &self.client_location, &self.clients)?.into_iter()) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user