move block_selected
This commit is contained in:
		
							parent
							
								
									0b04701156
								
							
						
					
					
						commit
						07403fe815
					
				| @ -7,6 +7,35 @@ use crate::ship::character::{CharacterBytesBuilder, FullCharacterBytesBuilder}; | |||||||
| use crate::ship::location::{ClientLocation, LobbyId, RoomId, RoomLobby, MAX_ROOMS}; | use crate::ship::location::{ClientLocation, LobbyId, RoomId, RoomLobby, MAX_ROOMS}; | ||||||
| use libpso::character::character; | use libpso::character::character; | ||||||
| 
 | 
 | ||||||
|  | // this function needs a better home
 | ||||||
|  | pub fn block_selected(id: ClientId, | ||||||
|  |                   pkt: &MenuSelect, | ||||||
|  |                   clients: &mut HashMap<ClientId, ClientState>, | ||||||
|  |                   level_table: &CharacterLevelTable) | ||||||
|  |                   -> Result<Vec<SendShipPacket>, ShipError> { | ||||||
|  |     let client = clients.get_mut(&id).ok_or(ShipError::ClientNotFound(id))?; | ||||||
|  |     client.block = pkt.item as u32; | ||||||
|  | 
 | ||||||
|  |     let (level, stats) = level_table.get_stats_from_exp(client.character.char_class, client.character.exp); | ||||||
|  | 
 | ||||||
|  |     let fc = FullCharacterBytesBuilder::new() | ||||||
|  |         .character(&client.character) | ||||||
|  |         .stats(&stats) | ||||||
|  |         .level(level) | ||||||
|  |         .inventory(&client.inventory) | ||||||
|  |         .key_config(&client.settings.settings.key_config) | ||||||
|  |         .joystick_config(&client.settings.settings.joystick_config) | ||||||
|  |         .symbol_chat(&client.settings.settings.symbol_chats) | ||||||
|  |         .tech_menu(&client.character.tech_menu.as_bytes()) | ||||||
|  |         .build(); | ||||||
|  | 
 | ||||||
|  |     Ok(vec![ | ||||||
|  |         SendShipPacket::FullCharacter(FullCharacter { | ||||||
|  |             character: fc, | ||||||
|  |         }), | ||||||
|  |         SendShipPacket::CharDataRequest(CharDataRequest {}), | ||||||
|  |     ]) | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| pub fn send_player_to_lobby(id: ClientId, | pub fn send_player_to_lobby(id: ClientId, | ||||||
|                             _pkt: &CharData, |                             _pkt: &CharData, | ||||||
|  | |||||||
| @ -136,13 +136,13 @@ impl SendServerPacket for SendShipPacket { | |||||||
| 
 | 
 | ||||||
| pub struct ClientState { | pub struct ClientState { | ||||||
|     pub user: UserAccountEntity, |     pub user: UserAccountEntity, | ||||||
|     settings: UserSettingsEntity, |     pub settings: UserSettingsEntity, | ||||||
|     pub character: CharacterEntity, |     pub character: CharacterEntity, | ||||||
|     session: Session, |     session: Session, | ||||||
|     //guildcard: GuildCard,
 |     //guildcard: GuildCard,
 | ||||||
|     inventory: items::ActiveInventory, |     pub inventory: items::ActiveInventory, | ||||||
|     //bank: Bank,
 |     //bank: Bank,
 | ||||||
|     block: u32, |     pub block: u32, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl ClientState { | impl ClientState { | ||||||
| @ -183,31 +183,6 @@ impl<EG: EntityGateway> ShipServerState<EG> { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn block_selected(&mut self, id: ClientId, pkt: &MenuSelect) -> Result<Vec<SendShipPacket>, ShipError> { |  | ||||||
|         let client = self.clients.get_mut(&id).ok_or(ShipError::ClientNotFound(id))?; |  | ||||||
|         client.block = pkt.item as u32; |  | ||||||
| 
 |  | ||||||
|         let (level, stats) = self.level_table.get_stats_from_exp(client.character.char_class, client.character.exp); |  | ||||||
| 
 |  | ||||||
|         let fc = FullCharacterBytesBuilder::new() |  | ||||||
|             .character(&client.character) |  | ||||||
|             .stats(&stats) |  | ||||||
|             .level(level) |  | ||||||
|             .inventory(&client.inventory) |  | ||||||
|             .key_config(&client.settings.settings.key_config) |  | ||||||
|             .joystick_config(&client.settings.settings.joystick_config) |  | ||||||
|             .symbol_chat(&client.settings.settings.symbol_chats) |  | ||||||
|             .tech_menu(&client.character.tech_menu.as_bytes()) |  | ||||||
|             .build(); |  | ||||||
| 
 |  | ||||||
|         Ok(vec![ |  | ||||||
|             SendShipPacket::FullCharacter(FullCharacter { |  | ||||||
|                 character: fc, |  | ||||||
|             }), |  | ||||||
|             SendShipPacket::CharDataRequest(CharDataRequest {}), |  | ||||||
|         ]) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     fn message(&mut self, id: ClientId, msg: &Message) -> Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send> { |     fn message(&mut self, id: ClientId, msg: &Message) -> Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send> { | ||||||
|         match &msg.msg { |         match &msg.msg { | ||||||
|             GameMessage::RequestExp(request_exp) => { |             GameMessage::RequestExp(request_exp) => { | ||||||
| @ -268,7 +243,7 @@ impl<EG: EntityGateway> ServerState for ShipServerState<EG> { | |||||||
|             }, |             }, | ||||||
|             RecvShipPacket::MenuSelect(menuselect) => { |             RecvShipPacket::MenuSelect(menuselect) => { | ||||||
|                 match menuselect.menu { |                 match menuselect.menu { | ||||||
|                     BLOCK_MENU_ID => Box::new(self.block_selected(id, menuselect)?.into_iter().map(move |pkt| (id, pkt))), |                     BLOCK_MENU_ID => Box::new(handler::lobby::block_selected(id, menuselect, &mut self.clients, &self.level_table)?.into_iter().map(move |pkt| (id, pkt))), | ||||||
|                     ROOM_MENU_ID => Box::new(handler::room::join_room(id, menuselect, &mut self.client_location, &mut self.clients, &self.level_table, &mut self.rooms)?.into_iter()), |                     ROOM_MENU_ID => Box::new(handler::room::join_room(id, menuselect, &mut self.client_location, &mut self.clients, &self.level_table, &mut self.rooms)?.into_iter()), | ||||||
|                     _ => unreachable!(), |                     _ => unreachable!(), | ||||||
|                 } |                 } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user