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, unk08: u64, unk10: u64, unk18: u64, unk20: u64, }
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, slot: *mut BGSEquipSlot, }
76const _: () = assert!(core::mem::size_of::<EquippedObject>() == 0x10);
77
78#[repr(C)]
79#[derive(Debug)]
80pub struct Data0B8 {
81 unk00: *mut c_void, unk08: *mut Data0B8, unk10: *mut c_void, unk18: *mut c_void, unk20: u64, unk28: *mut c_void, unk30: u32, pad34: u32, }
90const _: () = assert!(core::mem::size_of::<Data0B8>() == 0x38);
91
92#[repr(C)]
93#[derive(Debug)]
94pub struct AIProcess {
95 pub middleLow: *mut MiddleLowProcessData, pub middleHigh: *mut MiddleHighProcessData, pub high: *mut HighProcessData, pub currentPackage: ActorPackage, pub hourLastProcessed: f32, pub dateLastProcessed: f32, pub cachedValues: *mut CachedValues, pub numberItemsActivate: i32, pub pad05C: u32, pub objects: BSSimpleList<*mut ObjectsToAcquire>, pub genericLocations: BSSimpleList<*mut TESObjectREFR>, pub acquireObject: *mut ObjectsToAcquire, pub savedAcquireObject: *mut ObjectsToAcquire, pub essentialDownTimer: f32, pub deathTime: f32, pub trackedDamage: f32, pub pad09C: u32, pub equippedForms: BSTArray<EquippedObject>, pub unk0B8: Data0B8, pub equippedObjects: [*mut TESForm; 2], pub unk100: u64, pub unk108: u64, pub followTarget: RefHandle, pub target: RefHandle, pub arrestTarget: RefHandle, pub unk120: u64, pub unk128: u64, pub unk130: u32, pub unk134: u16, pub lowProcessFlags: LowProcessFlags, pub processLevel: PROCESS_TYPE, pub skippedTimeStampForPathing: bool, pub ignoringCombat: bool, pub endAlarmOnActor: bool, pub escortingPlayer: bool, pub pad13C: u32, }
132const _: () = assert!(core::mem::size_of::<AIProcess>() == 0x140);