30 lines
994 B
Rust
30 lines
994 B
Rust
|
use libpso::packet::login::{ShipList, ShipListEntry};
|
||
|
use libpso::packet::ship::*;
|
||
|
use crate::common::serverstate::ClientId;
|
||
|
use crate::common::leveltable::CharacterLevelTable;
|
||
|
use crate::ship::ship::{ShipError, ClientState, Clients};
|
||
|
use crate::ship::location::{ClientLocation, RoomId, AreaClient, ClientLocationError};
|
||
|
use crate::ship::room::RoomState;
|
||
|
use crate::ship::items::ItemManager;
|
||
|
use crate::ship::packet::builder::{player_header, player_info};
|
||
|
use libpso::utf8_to_utf16_array;
|
||
|
|
||
|
use crate::common::interserver::Ship;
|
||
|
use libpso::packet::ship::BLOCK_MENU_ID;
|
||
|
use crate::login::character::SHIP_MENU_ID;
|
||
|
|
||
|
pub fn ship_list(ships: &Vec<Ship>) -> ShipList {
|
||
|
let ships = ships.iter()
|
||
|
.enumerate()
|
||
|
.map(|(i, ship)| {
|
||
|
ShipListEntry {
|
||
|
menu: SHIP_MENU_ID,
|
||
|
item: i as u32,
|
||
|
flags: 0,
|
||
|
name: utf8_to_utf16_array!(ship.name, 0x11)
|
||
|
}
|
||
|
})
|
||
|
.collect();
|
||
|
ShipList::new(ships)
|
||
|
}
|