CommonLibVR
Loading...
Searching...
No Matches
InventoryChanges.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSContainer.h"
5#include "RE/B/BSTList.h"
6#include "RE/F/FormTypes.h"
9
10namespace RE
11{
12 enum class ITEM_REMOVE_REASON;
13 class ExtraDataList;
14 class InventoryEntryData;
15 class NiPoint3;
16
18 {
19 public:
20 enum class VisitResult : std::uint32_t
21 {
22 kStop = 0,
23 kContinue = 1,
24 };
25
27 {
28 public:
29 inline static constexpr auto RTTI = RTTI_InventoryChanges__IItemChangeVisitor;
31
32 virtual ~IItemChangeVisitor() = default; // 00
33
34 // add
35 virtual BSContainer::ForEachResult Visit(InventoryEntryData* a_entryData) = 0; // 01
36 virtual bool ShouldVisit([[maybe_unused]] InventoryEntryData* a_entryData, [[maybe_unused]] TESBoundObject* a_object) { return true; } // 02
37 virtual BSContainer::ForEachResult Unk_03(InventoryEntryData* a_entryData, [[maybe_unused]] void* a_arg2, bool* a_arg3) // 03
38 {
39 *a_arg3 = true;
40 return Visit(a_entryData);
41 }
42 };
43 static_assert(sizeof(IItemChangeVisitor) == 0x8);
44
48
51 TESObjectARMO* GetArmorInSlot(std::int32_t a_slot);
53 std::int16_t GetItemCount(RE::TESBoundObject* a_obj);
54 std::uint16_t GetNextUniqueID();
55 std::uint32_t GetWornMask();
58 void InitOutfitItems(BGSOutfit* a_outfit, std::uint16_t a_npcLevel);
60 void RemoveFavorite(InventoryEntryData* a_entry, ExtraDataList* a_itemList);
61 ObjectRefHandle RemoveItem(TESObjectREFR* a_ref, TESBoundObject* a_item, std::int32_t a_count, ITEM_REMOVE_REASON a_reason, ExtraDataList* a_extraDataList, TESObjectREFR* a_moveToRef, const NiPoint3& a_dropLoc, TESObjectREFR* a_dropRef);
62 void RemoveAllItems(TESObjectREFR* a_ref, TESObjectREFR* a_moveToRef, bool a_arg4, bool a_keepOwnership, bool a_arg6);
63 void SendContainerChangedEvent(ExtraDataList* a_itemExtraList, TESObjectREFR* a_fromRefr, TESForm* a_item, std::int32_t a_count);
64 void SetFavorite(InventoryEntryData* a_entry, ExtraDataList* a_itemList);
65 void SetUniqueID(ExtraDataList* a_itemList, TESForm* a_oldForm, TESForm* a_newForm);
68
70
71 // members
73 TESObjectREFR* owner{ nullptr }; // 08
74 float totalWeight{ 0.0F }; // 10
75 float armorWeight{ 0.0F }; // 14
76 bool changed{ false }; // 18
77 std::uint8_t unk19{ 0 }; // 19
78 std::uint8_t unk1A{ 0 }; // 1A
79 std::uint8_t unk1B{ 0 }; // 1B
80 std::uint32_t unk1C{ 0 }; // 1C
81
82 private:
83 InventoryChanges* Ctor(TESObjectREFR* a_ref);
84 void Dtor();
85
86 private:
88 };
89 static_assert(sizeof(InventoryChanges) == 0x20);
90}
#define KEEP_FOR_RE()
Definition PCH.h:518
Definition BGSOutfit.h:11
Definition BSTList.h:10
Definition ExtraDataList.h:51
Definition InventoryChanges.h:27
virtual bool ShouldVisit(InventoryEntryData *a_entryData, TESBoundObject *a_object)
Definition InventoryChanges.h:36
virtual BSContainer::ForEachResult Unk_03(InventoryEntryData *a_entryData, void *a_arg2, bool *a_arg3)
Definition InventoryChanges.h:37
static constexpr auto VTABLE
Definition InventoryChanges.h:30
virtual BSContainer::ForEachResult Visit(InventoryEntryData *a_entryData)=0
static constexpr auto RTTI
Definition InventoryChanges.h:29
Definition InventoryChanges.h:18
VisitResult
Definition InventoryChanges.h:21
ObjectRefHandle RemoveItem(TESObjectREFR *a_ref, TESBoundObject *a_item, std::int32_t a_count, ITEM_REMOVE_REASON a_reason, ExtraDataList *a_extraDataList, TESObjectREFR *a_moveToRef, const NiPoint3 &a_dropLoc, TESObjectREFR *a_dropRef)
void SetUniqueID(ExtraDataList *a_itemList, TESForm *a_oldForm, TESForm *a_newForm)
void AddEntryData(InventoryEntryData *a_entry)
std::int16_t GetItemCount(RE::TESBoundObject *a_obj)
std::uint16_t GetNextUniqueID()
float totalWeight
Definition InventoryChanges.h:74
void GenerateLeveledListChanges()
std::uint8_t unk19
Definition InventoryChanges.h:77
void VisitInventory(IItemChangeVisitor &visitor)
std::uint32_t GetWornMask()
std::uint32_t unk1C
Definition InventoryChanges.h:80
float armorWeight
Definition InventoryChanges.h:75
void RemoveFavorite(InventoryEntryData *a_entry, ExtraDataList *a_itemList)
TESObjectREFR * owner
Definition InventoryChanges.h:73
TESObjectARMO * GetArmorInSlot(std::int32_t a_slot)
bool changed
Definition InventoryChanges.h:76
std::uint8_t unk1B
Definition InventoryChanges.h:79
void SendContainerChangedEvent(ExtraDataList *a_itemExtraList, TESObjectREFR *a_fromRefr, TESForm *a_item, std::int32_t a_count)
BSSimpleList< InventoryEntryData * > * entryList
Definition InventoryChanges.h:72
void RemoveAllItems(TESObjectREFR *a_ref, TESObjectREFR *a_moveToRef, bool a_arg4, bool a_keepOwnership, bool a_arg6)
std::uint8_t unk1A
Definition InventoryChanges.h:78
void SetFavorite(InventoryEntryData *a_entry, ExtraDataList *a_itemList)
void InitOutfitItems(BGSOutfit *a_outfit, std::uint16_t a_npcLevel)
void VisitWornItems(IItemChangeVisitor &visitor)
InventoryChanges(TESObjectREFR *a_ref)
Definition InventoryEntryData.h:15
Definition NiPoint3.h:6
Definition TESBoundObject.h:26
Definition TESForm.h:40
Definition TESObjectARMO.h:37
Definition TESObjectREFR.h:106
ForEachResult
Definition BSContainer.h:6
Definition AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_InventoryChanges__IItemChangeVisitor
Definition Offsets_VTABLE.h:11920
constexpr REL::ID RTTI_InventoryChanges__IItemChangeVisitor(static_cast< std::uint64_t >(684949))
ITEM_REMOVE_REASON
Definition ItemRemoveReason.h:6