2020-04-22 22:59:01 -06:00
|
|
|
pub mod lobby;
|
2020-04-26 22:01:05 -06:00
|
|
|
pub mod message;
|
2020-04-24 20:38:56 -06:00
|
|
|
pub mod room;
|
2020-05-24 15:59:48 -06:00
|
|
|
pub mod quest;
|
2020-11-21 23:45:27 -07:00
|
|
|
pub mod ship;
|
2023-11-11 14:28:41 -07:00
|
|
|
pub mod character;
|
2020-04-24 20:38:56 -06:00
|
|
|
|
|
|
|
use libpso::character::character::Inventory;
|
|
|
|
use libpso::packet::ship::{PlayerHeader, PlayerInfo};
|
2023-11-10 23:48:06 -07:00
|
|
|
use stats::leveltable::LEVEL_TABLE;
|
2023-11-11 14:28:41 -07:00
|
|
|
use crate::character::CharacterBytesBuilder;
|
|
|
|
use client::ClientState;
|
|
|
|
use location::AreaClient;
|
|
|
|
use items::inventory::InventoryState;
|
2020-04-24 20:38:56 -06:00
|
|
|
|
|
|
|
pub fn player_header(tag: u32, client: &ClientState, area_client: &AreaClient) -> PlayerHeader {
|
|
|
|
PlayerHeader {
|
2021-06-18 20:38:29 -06:00
|
|
|
tag,
|
2020-04-24 20:38:56 -06:00
|
|
|
guildcard: client.user.id.0,
|
|
|
|
_unknown1: [0; 5],
|
|
|
|
client_id: area_client.local_client.id() as u32,
|
|
|
|
name: libpso::utf8_to_utf16_array!(client.character.name, 16),
|
|
|
|
_unknown2: 2,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-10-18 04:46:21 -06:00
|
|
|
pub async fn player_info(tag: u32, client: &ClientState, area_client: &AreaClient, inventory: &InventoryState) -> PlayerInfo {
|
2022-08-02 00:08:55 -06:00
|
|
|
let (level, stats) = LEVEL_TABLE.get_stats_from_exp(client.character.char_class, client.character.exp);
|
2021-06-18 17:38:36 -06:00
|
|
|
let character = CharacterBytesBuilder::default()
|
2020-04-24 20:38:56 -06:00
|
|
|
.character(&client.character)
|
|
|
|
.stats(&stats)
|
|
|
|
.level(level - 1)
|
2022-05-14 13:06:40 -06:00
|
|
|
.meseta(inventory.meseta)
|
2020-04-24 20:38:56 -06:00
|
|
|
.build();
|
|
|
|
PlayerInfo {
|
|
|
|
header: player_header(tag, client, area_client),
|
|
|
|
inventory: Inventory {
|
2020-05-13 22:32:30 -06:00
|
|
|
item_count: inventory.count() as u8,
|
2020-04-24 20:38:56 -06:00
|
|
|
hp_mats_used: 0, // TODO: materials
|
|
|
|
tp_mats_used: 0, // TODO: materials
|
|
|
|
language: 0, // TODO: account language
|
2020-05-13 22:32:30 -06:00
|
|
|
items: inventory.as_client_inventory_items(),
|
2020-04-24 20:38:56 -06:00
|
|
|
},
|
2021-06-18 20:38:29 -06:00
|
|
|
character,
|
2020-04-24 20:38:56 -06:00
|
|
|
}
|
|
|
|
}
|