use libpso::packet::messages::*; use crate::ship::ship::{ShipError}; use crate::ship::items::{FloorItem}; use crate::ship::location::AreaClient; use std::convert::TryInto; pub fn item_drop(client: u8, target: u8, item_drop: &FloorItem) -> Result { let item_bytes = item_drop.item.as_client_bytes(); Ok(ItemDrop { client: client, target: target, area: item_drop.map_area.area_value(), variety: 0, unknown: 0, x: item_drop.x, z: item_drop.z, y: item_drop.y, item_bytes: item_bytes[0..12].try_into()?, item_id: item_drop.item_id.0, item_bytes2: item_bytes[12..16].try_into()?, unknown2: 0, }) } pub fn create_item(area_client: AreaClient, item: &FloorItem) -> Result { let bytes = item.item.as_client_bytes(); Ok(CreateItem { client: area_client.local_client.id(), target: 0, item_data: bytes[0..12].try_into()?, item_id: item.item_id.0, item_data2: bytes[12..16].try_into()?, unknown: 0, }) } pub fn remove_item_from_floor(area_client: AreaClient, item: &FloorItem) -> Result { Ok(RemoveItemFromFloor { client: area_client.local_client.id(), target: 0, client_id: area_client.local_client.id(), unknown: 0, area: item.map_area.area_value(), unknown2: 0, item_id: item.item_id.0, }) }