commonlibsse_ng\re\a/
AIProcess.rs

1mod cached_values;
2
3use core::ffi::c_void;
4
5pub use self::cached_values::*;
6
7use crate::re::ActorPackage::ActorPackage;
8use crate::re::BGSEquipSlot::BGSEquipSlot;
9use crate::re::BSCoreTypes::RefHandle;
10use crate::re::BSTArray::BSTArray;
11use crate::re::BSTList::BSSimpleList;
12use crate::re::HighProcessData;
13use crate::re::MiddleHighProcessData::MiddleHighProcessData;
14use crate::re::TESForm::TESForm;
15use crate::re::TESObjectREFR::TESObjectREFR;
16
17#[commonlibsse_ng_derive_internal::ffi_enum]
18#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
19pub enum PROCESS_TYPE {
20    High = 0,
21    MiddleHigh = 1,
22    MiddleLow = 2,
23    Low = 3,
24}
25
26impl PROCESS_TYPE {
27    pub const NONE: u32 = u32::MAX;
28}
29
30#[repr(C)]
31#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
32pub struct MiddleLowProcessData {
33    hourPackageEvaluated: i32,
34}
35const _: () = assert!(core::mem::size_of::<MiddleLowProcessData>() == 0x4);
36
37#[repr(C)]
38#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
39pub struct ObjectsToAcquire {
40    unk00: u64, // 0x00
41    unk08: u64, // 0x08
42    unk10: u64, // 0x10
43    unk18: u64, // 0x18
44    unk20: u64, // 0x20
45}
46const _: () = assert!(core::mem::size_of::<ObjectsToAcquire>() == 0x28);
47
48#[commonlibsse_ng_derive_internal::to_bitflags]
49#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
50#[repr(u8)]
51pub enum LowProcessFlags {
52    None = 0,
53    TargetActivated = 1 << 0,
54    CurrentActionComplete = 1 << 1,
55    Alert = 1 << 3,
56    Follower = 1 << 4,
57    PackageDoneOnce = 1 << 5,
58    PackageIdleDone = 1 << 6,
59}
60
61#[commonlibsse_ng_derive_internal::ffi_enum]
62#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
63#[repr(u32)]
64pub enum Hand {
65    Left,
66    Right,
67}
68const _: () = assert!(Hand_CEnum::count() == 2);
69
70#[repr(C)]
71#[derive(Debug)]
72pub struct EquippedObject {
73    object: *mut TESForm,    // 00
74    slot: *mut BGSEquipSlot, // 08
75}
76const _: () = assert!(core::mem::size_of::<EquippedObject>() == 0x10);
77
78#[repr(C)]
79#[derive(Debug)]
80pub struct Data0B8 {
81    unk00: *mut c_void,  // 0x00
82    unk08: *mut Data0B8, // 0x08
83    unk10: *mut c_void,  // 0x10
84    unk18: *mut c_void,  // 0x18
85    unk20: u64,          // 0x20
86    unk28: *mut c_void,  // 0x28
87    unk30: u32,          // 0x30
88    pad34: u32,          // 0x34
89}
90const _: () = assert!(core::mem::size_of::<Data0B8>() == 0x38);
91
92#[repr(C)]
93#[derive(Debug)]
94pub struct AIProcess {
95    pub middleLow: *mut MiddleLowProcessData,         // 0x000
96    pub middleHigh: *mut MiddleHighProcessData,       // 0x008
97    pub high: *mut HighProcessData,                   // 0x010
98    pub currentPackage: ActorPackage,                 // 0x018
99    pub hourLastProcessed: f32,                       // 0x048
100    pub dateLastProcessed: f32,                       // 0x04C
101    pub cachedValues: *mut CachedValues,              // 0x050
102    pub numberItemsActivate: i32,                     // 0x058
103    pub pad05C: u32,                                  // 0x05C
104    pub objects: BSSimpleList<*mut ObjectsToAcquire>, // 0x060
105    pub genericLocations: BSSimpleList<*mut TESObjectREFR>, // 0x070
106    pub acquireObject: *mut ObjectsToAcquire,         // 0x080
107    pub savedAcquireObject: *mut ObjectsToAcquire,    // 0x088
108    pub essentialDownTimer: f32,                      // 0x090
109    pub deathTime: f32,                               // 0x094
110    pub trackedDamage: f32,                           // 0x098
111    pub pad09C: u32,                                  // 0x09C
112    pub equippedForms: BSTArray<EquippedObject>,      // 0x0A0
113    pub unk0B8: Data0B8,                              // 0x0B8
114    pub equippedObjects: [*mut TESForm; 2],           // 0x0F0 2: Hand_CEnum::count()
115    pub unk100: u64,                                  // 0x100
116    pub unk108: u64,                                  // 0x108
117    pub followTarget: RefHandle,                      // 0x110
118    pub target: RefHandle,                            // 0x114
119    pub arrestTarget: RefHandle,                      // 0x118
120    pub unk120: u64,                                  // 0x120
121    pub unk128: u64,                                  // 0x128
122    pub unk130: u32,                                  // 0x130
123    pub unk134: u16,                                  // 0x134
124    pub lowProcessFlags: LowProcessFlags,             // 0x136
125    pub processLevel: PROCESS_TYPE,                   // 0x137
126    pub skippedTimeStampForPathing: bool,             // 0x138
127    pub ignoringCombat: bool,                         // 0x139
128    pub endAlarmOnActor: bool,                        // 0x13A
129    pub escortingPlayer: bool,                        // 0x13B
130    pub pad13C: u32,                                  // 0x13C
131}
132const _: () = assert!(core::mem::size_of::<AIProcess>() == 0x140);