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 slot) const;
108
109 virtual void refreshContainer(bool fullRefresh);
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#ifdef LL_PLAT_C
133 MCAPI ::SlotData const& getItemSource(int slot) const;
134
135 MCAPI int getValidIngredientItemCount(::ItemDescriptor const& descriptor) const;
136#endif
137
138 MCAPI void networkUpdateItem(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
139
140#ifdef LL_PLAT_C
141 MCAPI ::Bedrock::PubSub::Subscription registerContainerSizeChangedListener(::std::function<void(int)> callback);
142
143 MCAPI ::Bedrock::PubSub::Subscription
144 registerContainerSlotChangedListener(int slot, ::std::function<void(::ItemStackBase const&)> callback);
145#endif
146
147 MCAPI void
148 registerOnContainerChangedCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
149
150 MCAPI void
151 registerPlayerNotificationCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
152
153 MCAPI void setClientUIContainer(::SparseContainerClient* clientUIContainer);
154
155 MCAPI void setItemSource(int slot, ::SlotData const& srcSlot);
156
157#ifdef LL_PLAT_C
158 MCAPI void unregisterTrackedOnContainerChangedCallback(::SharedTypes::Legacy::ContainerType containerType);
159#endif
160 // NOLINTEND
161
162public:
163 // constructor thunks
164 // NOLINTBEGIN
165 MCAPI void* $ctor(
166 ::FullContainerName const& fullContainerName,
167 int containerSize,
168 ::ContainerCategory containerCategory,
169 bool isClientSide
170 );
171 // NOLINTEND
172
173public:
174 // destructor thunk
175 // NOLINTBEGIN
176 MCAPI void $dtor();
177 // NOLINTEND
178
179public:
180 // virtual function thunks
181 // NOLINTBEGIN
182 MCFOLD void $postInit();
183
184 MCAPI void $releaseResources();
185
186 MCAPI void $containerContentChanged(int slot);
187
188 MCAPI int $getContainerSize() const;
189
190 MCFOLD int $getFilteredContainerSize() const;
191
192 MCFOLD void $tick(int selectedSlot);
193
194 MCAPI ::ContainerWeakRef $getContainerWeakRef() const;
195
196 MCAPI ::ItemStack const& $getItemStack(int modelSlot) const;
197
198 MCFOLD ::std::vector<::ItemStack> const& $getItems() const;
199
200 MCAPI ::ItemInstance const& $getItemInstance(int modelSlot) const;
201
202 MCAPI ::ItemStackBase const& $getItemStackBase(int modelSlot) const;
203
204 MCFOLD bool $isItemInstanceBased() const;
205
206 MCAPI void $setItem(int modelSlot, ::ItemStack const& item);
207
208 MCFOLD bool $isValid();
209
210 MCFOLD bool $isItemFiltered(::ItemStackBase const& item) const;
211
212 MCFOLD bool $isExpanableItemFiltered(int index) const;
213
214 MCFOLD ::ContainerExpandStatus $getItemExpandStatus(int itemId) const;
215
216 MCFOLD ::std::string const& $getItemGroupName(int itemId) const;
217
218 MCFOLD void $switchItemExpando(int itemId);
219
220 MCFOLD bool $isSlotDisabled(int slot) const;
221
222 MCFOLD void $refreshContainer(bool fullRefresh);
223
224 MCFOLD ::Container* $_getContainer() const;
225
226 MCFOLD int $_getContainerOffset() const;
227
228 MCAPI void $_init();
229
230 MCAPI void $_onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
231
232
233 // NOLINTEND
234
235public:
236 // vftables
237 // NOLINTBEGIN
238 MCAPI static void** $vftable();
239 // NOLINTEND
240};
Definition Publisher.h:8
Definition Subscription.h:10
Definition ContainerContentChangeListener.h:5
Definition ContainerWeakRef.h:20
Definition Container.h:33
Definition ItemDescriptor.h:24
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition ItemStack.h:26
Definition SparseContainerClient.h:24
Definition FullContainerName.h:8
Definition SlotData.h:5