LeviLamina
Loading...
Searching...
No Matches
ContainerModel.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/pub_sub/Publisher.h"
7#include "mc/deps/shared_types/legacy/ContainerType.h"
8#include "mc/world/ContainerContentChangeListener.h"
9#include "mc/world/containers/FullContainerName.h"
10#include "mc/world/containers/models/ContainerCategory.h"
11#include "mc/world/containers/models/ContainerExpandStatus.h"
12
13// auto generated forward declare list
14// clang-format off
15class Container;
17class ItemDescriptor;
18class ItemInstance;
19class ItemStack;
20class ItemStackBase;
22struct SlotData;
23namespace Bedrock::PubSub { class Subscription; }
24namespace Bedrock::PubSub::ThreadModel { struct SingleThreaded; }
25// clang-format on
26
27class ContainerModel : public ::ContainerContentChangeListener {
28public:
29 // member variables
30 // NOLINTBEGIN
31 ::ll::TypedStorage<1, 1, bool const> mIsClientSide;
32 ::ll::TypedStorage<8, 32, ::std::string> mContainerStringName;
33 ::ll::TypedStorage<4, 12, ::FullContainerName const> mFullContainerName;
34 ::ll::TypedStorage<
35 8,
36 64,
37 ::std::unordered_map<
38 ::SharedTypes::Legacy::ContainerType,
39 ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>>
40 mTrackedOnContainerChangedCallbacks;
41 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>>
42 mOnContainerChangedCallbacks;
43 ::ll::TypedStorage<8, 64, ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>
44 mPlayerNotificationCallbacks;
45 ::ll::TypedStorage<
46 8,
47 24,
48 ::std::vector<::Bedrock::PubSub::
50 mContainerSlotChangePublishers;
51 ::ll::TypedStorage<4, 4, ::ContainerCategory> mContainerCategory;
52 ::ll::TypedStorage<8, 24, ::std::vector<::SlotData>> mItemSource;
53 ::ll::TypedStorage<8, 8, ::SparseContainerClient*> mClientUIContainer;
54 ::ll::
56 mContainerSizeChangePublisher;
57 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStack>> mItems;
58 // NOLINTEND
59
60public:
61 // prevent constructor by default
62 ContainerModel();
63
64public:
65 // virtual functions
66 // NOLINTBEGIN
67 virtual ~ContainerModel() /*override*/;
68
69 virtual void postInit();
70
71 virtual void releaseResources();
72
73 virtual void containerContentChanged(int slot) /*override*/;
74
75 virtual int getContainerSize() const;
76
77 virtual int getFilteredContainerSize() const;
78
79 virtual void tick(int selectedSlot);
80
81 virtual ::ContainerWeakRef getContainerWeakRef() const;
82
83 virtual ::ItemStack const& getItemStack(int modelSlot) const;
84
85 virtual ::std::vector<::ItemStack> const& getItems() const;
86
87 virtual ::ItemInstance const& getItemInstance(int modelSlot) const;
88
89 virtual ::ItemStackBase const& getItemStackBase(int modelSlot) const;
90
91 virtual bool isItemInstanceBased() const;
92
93 virtual void setItem(int modelSlot, ::ItemStack const& item);
94
95 virtual bool isValid();
96
97 virtual bool isItemFiltered(::ItemStackBase const& item) const;
98
99 virtual bool isExpanableItemFiltered(int index) const;
100
101 virtual ::ContainerExpandStatus getItemExpandStatus(int itemId) const;
102
103 virtual ::std::string const& getItemGroupName(int itemId) const;
104
105 virtual void switchItemExpando(int itemId);
106
107 virtual bool isSlotDisabled(int) const;
108
109 virtual void refreshContainer(bool);
110
111 virtual ::Container* _getContainer() const;
112
113 virtual int _getContainerOffset() const;
114
115 virtual void _init();
116
117 virtual void _onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
118 // NOLINTEND
119
120public:
121 // member functions
122 // NOLINTBEGIN
123 MCAPI ContainerModel(
124 ::FullContainerName const& fullContainerName,
125 int containerSize,
126 ::ContainerCategory containerCategory,
127 bool isClientSide
128 );
129
130 MCAPI void _onClientUIItemNetworkChanged(int containerSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
131
132 MCAPI_C ::SlotData const& getItemSource(int slot) const;
133
134 MCAPI_C int getValidIngredientItemCount(::ItemDescriptor const& descriptor) const;
135
136 MCAPI void networkUpdateItem(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
137
138 MCAPI_C ::Bedrock::PubSub::Subscription registerContainerSizeChangedListener(::std::function<void(int)> callback);
139
140 MCAPI_C ::Bedrock::PubSub::Subscription
141 registerContainerSlotChangedListener(int slot, ::std::function<void(::ItemStackBase const&)> callback);
142
143 MCAPI void
144 registerOnContainerChangedCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
145
146 MCAPI void
147 registerPlayerNotificationCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
148
149 MCAPI void setClientUIContainer(::SparseContainerClient* clientUIContainer);
150
151 MCAPI void setItemSource(int slot, ::SlotData const& srcSlot);
152
153 MCAPI_C void unregisterTrackedOnContainerChangedCallback(::SharedTypes::Legacy::ContainerType containerType);
154 // NOLINTEND
155
156public:
157 // constructor thunks
158 // NOLINTBEGIN
159 MCAPI void* $ctor(
160 ::FullContainerName const& fullContainerName,
161 int containerSize,
162 ::ContainerCategory containerCategory,
163 bool isClientSide
164 );
165 // NOLINTEND
166
167public:
168 // destructor thunk
169 // NOLINTBEGIN
170 MCAPI void $dtor();
171 // NOLINTEND
172
173public:
174 // virtual function thunks
175 // NOLINTBEGIN
176 MCFOLD void $postInit();
177
178 MCAPI void $releaseResources();
179
180 MCAPI void $containerContentChanged(int slot);
181
182 MCAPI int $getContainerSize() const;
183
184 MCFOLD int $getFilteredContainerSize() const;
185
186 MCFOLD void $tick(int selectedSlot);
187
188 MCAPI ::ContainerWeakRef $getContainerWeakRef() const;
189
190 MCAPI ::ItemStack const& $getItemStack(int modelSlot) const;
191
192 MCAPI ::std::vector<::ItemStack> const& $getItems() const;
193
194 MCAPI ::ItemInstance const& $getItemInstance(int modelSlot) const;
195
196 MCAPI ::ItemStackBase const& $getItemStackBase(int modelSlot) const;
197
198 MCFOLD bool $isItemInstanceBased() const;
199
200 MCAPI void $setItem(int modelSlot, ::ItemStack const& item);
201
202 MCFOLD bool $isValid();
203
204 MCFOLD bool $isItemFiltered(::ItemStackBase const& item) const;
205
206 MCFOLD bool $isExpanableItemFiltered(int index) const;
207
208 MCFOLD ::ContainerExpandStatus $getItemExpandStatus(int itemId) const;
209
210 MCFOLD ::std::string const& $getItemGroupName(int itemId) const;
211
212 MCFOLD void $switchItemExpando(int itemId);
213
214 MCFOLD bool $isSlotDisabled(int) const;
215
216 MCFOLD void $refreshContainer(bool);
217
218 MCFOLD ::Container* $_getContainer() const;
219
220 MCFOLD int $_getContainerOffset() const;
221
222 MCAPI void $_init();
223
224 MCAPI void $_onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
225
226
227 // NOLINTEND
228
229public:
230 // vftables
231 // NOLINTBEGIN
232 MCAPI static void** $vftable();
233 // NOLINTEND
234};
Definition Publisher.h:8
Definition Subscription.h:10
Definition ContainerContentChangeListener.h:5
Definition ContainerWeakRef.h:20
Definition Container.h:33
Definition ItemDescriptor.h:23
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition ItemStack.h:26
Definition SparseContainerClient.h:24
Definition FullContainerName.h:8
Definition SlotData.h:5