commonlibsse_ng\re\s/
StandardItemData.rs

1use crate::re::BSCoreTypes::RefHandle;
2use crate::re::InventoryEntryData::InventoryEntryData;
3use crate::re::offsets_rtti::RTTI_StandardItemData;
4use crate::re::offsets_vtable::VTABLE_StandardItemData;
5use crate::rel::id::VariantID;
6
7#[repr(C)]
8#[derive(Debug, PartialEq)]
9pub struct StandardItemData {
10    pub vtable: *const StandardItemDataVtbl,
11    pub objDesc: *mut InventoryEntryData,
12    pub owner: RefHandle,
13    pub pad14: u32,
14}
15
16const _: () = {
17    assert!(core::mem::offset_of!(StandardItemData, vtable) == 0x0);
18    assert!(core::mem::offset_of!(StandardItemData, objDesc) == 0x8);
19    assert!(core::mem::offset_of!(StandardItemData, owner) == 0x10);
20    assert!(core::mem::offset_of!(StandardItemData, pad14) == 0x14);
21    assert!(core::mem::size_of::<StandardItemData>() == 0x18);
22};
23
24impl StandardItemData {
25    /// Address & offset of the runtime type information (RTTI) identifier.
26    pub const RTTI: VariantID = RTTI_StandardItemData;
27
28    /// Address & offset of the virtual function table.
29    pub const VTABLE: [VariantID; 1] = VTABLE_StandardItemData;
30}
31
32/// The virtual function table for `StandardItemData`.
33///
34/// This struct defines function pointers to simulate the C++ virtual functions.
35#[repr(C)]
36pub struct StandardItemDataVtbl {
37    GetName: fn(this: &mut StandardItemData) -> *const char, // 01 - { return objDesc->GenerateName(); }
38    GetCount: fn(this: &mut StandardItemData) -> u32,        // 02 - { return objDesc->GetCount(); }
39    GetEquipState: fn(this: &mut StandardItemData) -> u32,   // 03
40    GetFilterFlag: fn(this: &mut StandardItemData) -> u32,   // 04
41    GetFavorite: fn(this: &mut StandardItemData) -> u32,     // 05
42    GetEnabled: fn(this: &mut StandardItemData) -> bool,     // 06 - { return true; }
43}