From 48b1b9cdc2cdc1d0ecc0ba8b7873b3aec8063332 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 23 Mar 2025 16:49:48 -0400 Subject: [PATCH] Add ContainerType enum --- src/world/ipc/container_info.rs | 18 ++++++++++++++++-- src/world/ipc/item_info.rs | 6 ++++-- src/world/ipc/mod.rs | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/world/ipc/container_info.rs b/src/world/ipc/container_info.rs index c024b3a..7614e48 100644 --- a/src/world/ipc/container_info.rs +++ b/src/world/ipc/container_info.rs @@ -1,12 +1,26 @@ use binrw::binrw; +#[binrw] +#[brw(little)] +#[brw(repr = u16)] +#[derive(Debug, Clone, Default, PartialEq)] +pub enum ContainerType { + #[default] + Inventory0 = 0, + Inventory1 = 1, + Inventory2 = 2, + Inventory3 = 3, + Equipped = 1000, +} + #[binrw] #[brw(little)] #[derive(Debug, Clone, Default)] pub struct ContainerInfo { pub sequence: u32, pub num_items: u32, - pub container_id: u32, + #[brw(pad_after = 2)] // not used + pub container: ContainerType, pub start_or_finish: u32, } @@ -29,7 +43,7 @@ mod tests { let container_info = ContainerInfo::read_le(&mut buffer).unwrap(); assert_eq!(container_info.sequence, 1); assert_eq!(container_info.num_items, 0); - assert_eq!(container_info.container_id, 1); + assert_eq!(container_info.container, ContainerType::Inventory1); assert_eq!(container_info.start_or_finish, 0); } } diff --git a/src/world/ipc/item_info.rs b/src/world/ipc/item_info.rs index 07952e7..a9c6d9e 100644 --- a/src/world/ipc/item_info.rs +++ b/src/world/ipc/item_info.rs @@ -1,12 +1,14 @@ use binrw::binrw; +use super::ContainerType; + #[binrw] #[brw(little)] #[derive(Debug, Clone, Default)] pub struct ItemInfo { pub sequence: u32, pub unk1: u32, - pub container_id: u16, + pub container: ContainerType, pub slot: u16, pub quantity: u32, pub catalog_id: u32, @@ -42,7 +44,7 @@ mod tests { let item_info = ItemInfo::read_le(&mut buffer).unwrap(); assert_eq!(item_info.sequence, 4); assert_eq!(item_info.unk1, 0); - assert_eq!(item_info.container_id, 1000); + assert_eq!(item_info.container, ContainerType::Equipped); assert_eq!(item_info.slot, 11); assert_eq!(item_info.quantity, 1); assert_eq!(item_info.catalog_id, 4426); diff --git a/src/world/ipc/mod.rs b/src/world/ipc/mod.rs index cadf530..05d7535 100644 --- a/src/world/ipc/mod.rs +++ b/src/world/ipc/mod.rs @@ -48,7 +48,7 @@ mod action_request; pub use action_request::ActionRequest; mod container_info; -pub use container_info::ContainerInfo; +pub use container_info::{ContainerInfo, ContainerType}; mod item_info; pub use item_info::ItemInfo;