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;
|
||||
|
||||
match mode {
|
||||
match self.mode {
|
||||
RoomMode::Single {..} => {flags += 0x04}
|
||||
RoomMode::Battle {..} => {flags += 0x10},
|
||||
RoomMode::Challenge {..} => {flags += 0x20},
|
||||
_ => {flags += 0x40},
|
||||
};
|
||||
|
||||
if password[0] > 0 {
|
||||
if self.password[0] > 0 {
|
||||
flags += 0x02;
|
||||
}
|
||||
flags
|
||||
}
|
||||
|
||||
pub fn get_episode(mode: &RoomMode) -> u8 {
|
||||
let mut episode = 0u8;
|
||||
pub fn get_episode_for_room_list(&self) -> u8 {
|
||||
let episode: u8 = self.mode.episode().into();
|
||||
|
||||
episode = mode.episode().into();
|
||||
|
||||
match mode {
|
||||
RoomMode::Single {..} => {episode += 0x10},
|
||||
_ => {episode += 0x40},
|
||||
match self.mode {
|
||||
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> {
|
||||
@ -203,10 +205,6 @@ impl RoomState {
|
||||
password: create_room.password,
|
||||
//maps: [0; 0x20],
|
||||
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())
|
||||
}
|
||||
|
||||
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()
|
||||
.enumerate()
|
||||
.filter_map(|(i, r)| {
|
||||
@ -446,19 +446,22 @@ impl<EG: EntityGateway> ShipServerState<EG> {
|
||||
RoomList {
|
||||
menu_id: ROOM_MENU_ID,
|
||||
item_id: i as u32,
|
||||
difficulty: room.difficulty,
|
||||
players: room.players,
|
||||
difficulty: room.get_difficulty_for_room_list(),
|
||||
players: 0, // TODO
|
||||
name: libpso::utf8_to_utf16_array!(room.name, 16),
|
||||
episode: room.episode,
|
||||
flags: room.flags,
|
||||
episode: room.get_episode_for_room_list(),
|
||||
flags: room.get_flags_for_room_list(),
|
||||
}
|
||||
})
|
||||
});
|
||||
let baseroom: BaseRoom = BaseRoom {
|
||||
let baseroom: RoomList = RoomList {
|
||||
menu_id: ROOM_MENU_ID,
|
||||
title_id: ROOM_MENU_ID,
|
||||
zero: 0x0000,
|
||||
menu_title: libpso::utf8_to_utf16_array!("Room list menu", 17),
|
||||
item_id: ROOM_MENU_ID,
|
||||
difficulty: 0x00,
|
||||
players: 0x00,
|
||||
name: libpso::utf8_to_utf16_array!("Room list menu", 16),
|
||||
episode: 0,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
Box::new(vec![(id, SendShipPacket::RoomListResponse(RoomListResponse {
|
||||
@ -530,8 +533,8 @@ impl<EG: EntityGateway> ServerState for ShipServerState<EG> {
|
||||
self.write_infoboard(id, pkt)
|
||||
},
|
||||
|
||||
RecvShipPacket::RoomListRequest(pkt) => {
|
||||
self.request_room_list(id, pkt)
|
||||
RecvShipPacket::RoomListRequest(_req) => {
|
||||
self.request_room_list(id)
|
||||
},
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user