cleanup and fix errors. still need to get room player counts
This commit is contained in:
		
							parent
							
								
									7f95f7e793
								
							
						
					
					
						commit
						eef2178df8
					
				| @ -140,32 +140,34 @@ impl RoomState { | |||||||
|         } |         } | ||||||
|     }*/ |     }*/ | ||||||
| 
 | 
 | ||||||
|     pub fn get_flags(mode: &RoomMode, password: [u16; 16]) -> u8 { |     pub fn get_flags_for_room_list(&self) -> u8 { | ||||||
|         let mut flags = 0u8; |         let mut flags = 0u8; | ||||||
|         
 |         
 | ||||||
|         match mode { |         match self.mode { | ||||||
|             RoomMode::Single {..} => {flags += 0x04} |             RoomMode::Single {..} => {flags += 0x04} | ||||||
|             RoomMode::Battle {..} => {flags += 0x10}, |             RoomMode::Battle {..} => {flags += 0x10}, | ||||||
|             RoomMode::Challenge {..} => {flags += 0x20}, |             RoomMode::Challenge {..} => {flags += 0x20}, | ||||||
|             _ => {flags += 0x40}, |             _ => {flags += 0x40}, | ||||||
|         }; |         }; | ||||||
|         
 |         
 | ||||||
|         if password[0] > 0 { |         if self.password[0] > 0 { | ||||||
|             flags += 0x02; |             flags += 0x02; | ||||||
|         } |         } | ||||||
|         flags |         flags | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn get_episode(mode: &RoomMode) -> u8 { |     pub fn get_episode_for_room_list(&self) -> u8 { | ||||||
|         let mut episode = 0u8; |         let episode: u8 = self.mode.episode().into(); | ||||||
| 
 | 
 | ||||||
|         episode = mode.episode().into(); |         match self.mode { | ||||||
| 
 |             RoomMode::Single {..} => episode + 0x10, | ||||||
|         match mode { |             _ => episode + 0x40, | ||||||
|             RoomMode::Single {..} => {episode += 0x10}, |  | ||||||
|             _ => {episode += 0x40}, |  | ||||||
|         } |         } | ||||||
|         episode |     } | ||||||
|  | 
 | ||||||
|  |     pub fn get_difficulty_for_room_list(&self) -> u8 { | ||||||
|  |         let difficulty: u8 = self.mode.difficulty().into(); | ||||||
|  |         difficulty + 0x22 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn from_create_room(create_room: &libpso::packet::ship::CreateRoom) -> Result<RoomState, RoomCreationError> { |     pub fn from_create_room(create_room: &libpso::packet::ship::CreateRoom) -> Result<RoomState, RoomCreationError> { | ||||||
| @ -203,10 +205,6 @@ impl RoomState { | |||||||
|             password: create_room.password, |             password: create_room.password, | ||||||
|             //maps: [0; 0x20],
 |             //maps: [0; 0x20],
 | ||||||
|             maps: Maps::new(room_mode.episode()), |             maps: Maps::new(room_mode.episode()), | ||||||
|             difficulty: create_room.difficulty + 0x22, |  | ||||||
|             players: 0, |  | ||||||
|             episode: RoomState::get_episode(&room_mode), |  | ||||||
|             flags: RoomState::get_flags(&room_mode, create_room.password), |  | ||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -438,7 +438,7 @@ impl<EG: EntityGateway> ShipServerState<EG> { | |||||||
|         Box::new(None.into_iter()) |         Box::new(None.into_iter()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn request_room_list(&mut self, id: ClientId, request_roomlist: &RoomListRequest) -> Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send> { |     fn request_room_list(&mut self, id: ClientId) -> Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send> { | ||||||
|         let active_room_list = self.rooms.iter() |         let active_room_list = self.rooms.iter() | ||||||
|             .enumerate() |             .enumerate() | ||||||
|             .filter_map(|(i, r)| { |             .filter_map(|(i, r)| { | ||||||
| @ -446,19 +446,22 @@ impl<EG: EntityGateway> ShipServerState<EG> { | |||||||
|                     RoomList { |                     RoomList { | ||||||
|                         menu_id: ROOM_MENU_ID, |                         menu_id: ROOM_MENU_ID, | ||||||
|                         item_id: i as u32, |                         item_id: i as u32, | ||||||
|                         difficulty: room.difficulty, |                         difficulty: room.get_difficulty_for_room_list(), | ||||||
|                         players: room.players, |                         players: 0, // TODO
 | ||||||
|                         name: libpso::utf8_to_utf16_array!(room.name, 16), |                         name: libpso::utf8_to_utf16_array!(room.name, 16), | ||||||
|                         episode: room.episode, |                         episode: room.get_episode_for_room_list(), | ||||||
|                         flags: room.flags, |                         flags: room.get_flags_for_room_list(), | ||||||
|                     } |                     } | ||||||
|                 }) |                 }) | ||||||
|             }); |             }); | ||||||
|         let baseroom: BaseRoom = BaseRoom { |         let baseroom: RoomList = RoomList { | ||||||
|             menu_id: ROOM_MENU_ID, |             menu_id: ROOM_MENU_ID, | ||||||
|             title_id: ROOM_MENU_ID, |             item_id: ROOM_MENU_ID, | ||||||
|             zero: 0x0000, |             difficulty: 0x00, | ||||||
|             menu_title: libpso::utf8_to_utf16_array!("Room list menu", 17), |             players: 0x00, | ||||||
|  |             name: libpso::utf8_to_utf16_array!("Room list menu", 16), | ||||||
|  |             episode: 0, | ||||||
|  |             flags: 0, | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         Box::new(vec![(id, SendShipPacket::RoomListResponse(RoomListResponse { |         Box::new(vec![(id, SendShipPacket::RoomListResponse(RoomListResponse { | ||||||
| @ -530,8 +533,8 @@ impl<EG: EntityGateway> ServerState for ShipServerState<EG> { | |||||||
|                 self.write_infoboard(id, pkt) |                 self.write_infoboard(id, pkt) | ||||||
|             }, |             }, | ||||||
| 
 | 
 | ||||||
|             RecvShipPacket::RoomListRequest(pkt) => { |             RecvShipPacket::RoomListRequest(_req) => { | ||||||
|                 self.request_room_list(id, pkt) |                 self.request_room_list(id) | ||||||
|             }, |             }, | ||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user