LeviLamina
Loading...
Searching...
No Matches
ContainerScreenSimulation.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
7#include "mc/world/containers/ContainerEnumName.h"
8#include "mc/world/containers/controllers/ItemTakeType.h"
9#include "mc/world/containers/managers/controllers/ItemSpecialLocation.h"
10#include "mc/world/containers/managers/controllers/ItemTransferType.h"
11#include "mc/world/inventory/network/ContainerScreenContext.h"
12#include "mc/world/inventory/simulation/ContainerScreenAutoplaceBehaviour.h"
13#include "mc/world/inventory/simulation/ContainerScreenTransferBehaviour.h"
14#include "mc/world/inventory/simulation/ContainerValidationCaller.h"
15
16// auto generated forward declare list
17// clang-format off
18class Container;
22class ItemInstance;
23struct AutoPlaceTarget;
30// clang-format on
31
32class ContainerScreenSimulation : public ::Bedrock::EnableNonOwnerReferences {
33public:
34 // member variables
35 // NOLINTBEGIN
36 ::ll::TypedStorage<8, 8, ::ContainerScreenActionScope*> mCurrentScope;
37 ::ll::TypedStorage<8, 40, ::ContainerScreenContext> mScreenContext;
38 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ContainerScreenValidation>> mScreenValidation;
39 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContainerTransfer>> mContainerTransferInterface;
40 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ContainerEnumName, ::std::vector<::ContainerEnumName>>>
41 mCoalesceOrderMap;
42 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ContainerEnumName, ::std::vector<::AutoPlaceTarget>>>
43 mAutoPlaceOrderMap;
44 // NOLINTEND
45
46#ifdef LL_PLAT_S
47#else // LL_PLAT_C
48public:
49 // prevent constructor by default
50 ContainerScreenSimulation();
51
52#endif
53public:
54 // virtual functions
55 // NOLINTBEGIN
56#ifdef LL_PLAT_S
57 virtual ~ContainerScreenSimulation() /*override*/ = default;
58#else // LL_PLAT_C
59 virtual ~ContainerScreenSimulation() /*override*/;
60#endif
61
62#ifdef LL_PLAT_S
63 virtual ::ContainerScreenActionResult
65#else // LL_PLAT_C
66 virtual ::ContainerScreenActionResult
67 tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
68#endif
69
70#ifdef LL_PLAT_S
71 virtual ::ContainerScreenActionResult
72 tryPlaceAmount(::ContainerValidationSlotData const&, int, ::ContainerValidationSlotData const&);
73#else // LL_PLAT_C
74 virtual ::ContainerScreenActionResult tryPlaceAmount(
75 ::ContainerValidationSlotData const& srcSlot,
76 int amount,
78 );
79#endif
80
81#ifdef LL_PLAT_S
82 virtual ::ContainerScreenActionResult
84#else // LL_PLAT_C
85 virtual ::ContainerScreenActionResult
86 tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
87#endif
88
89#ifdef LL_PLAT_S
90 virtual ::ContainerScreenActionResult
91 tryTakeAmount(::ContainerValidationSlotData const&, int, ::ContainerValidationSlotData const&);
92#else // LL_PLAT_C
93 virtual ::ContainerScreenActionResult tryTakeAmount(
94 ::ContainerValidationSlotData const& dstSlot,
95 int amount,
97 );
98#endif
99
100#ifdef LL_PLAT_S
101 virtual ::ContainerScreenActionResult
103#else // LL_PLAT_C
104 virtual ::ContainerScreenActionResult
105 tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
106#endif
107
108#ifdef LL_PLAT_S
109 virtual ::ContainerScreenActionResult
111#else // LL_PLAT_C
112 virtual ::ContainerScreenActionResult
113 tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
114#endif
115
116#ifdef LL_PLAT_S
117 virtual ::ContainerScreenActionResult
119#else // LL_PLAT_C
120 virtual ::ContainerScreenActionResult
121 trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
122#endif
123
124#ifdef LL_PLAT_S
125 virtual ::ContainerScreenActionResult
126 tryAddToStack(::ContainerValidationSlotData const&, ::ContainerValidationSlotData const&, ::ItemTakeType);
127#else // LL_PLAT_C
128 virtual ::ContainerScreenActionResult tryAddToStack(
129 ::ContainerValidationSlotData const& dstSlot,
130 ::ContainerValidationSlotData const& srcSlot,
131 ::ItemTakeType type
132 );
133#endif
134
135#ifdef LL_PLAT_S
136 virtual ::ContainerScreenActionResult tryCoalesce(::ContainerValidationSlotData const&, ::ContainerEnumName);
137#else // LL_PLAT_C
138 virtual ::ContainerScreenActionResult
139 tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
140#endif
141
142#ifdef LL_PLAT_S
143 virtual ::ContainerScreenActionResult
144 tryAutoPlace(::ContainerValidationSlotData const&, ::ItemTransferAmount, ::ContainerScreenAutoplaceBehaviour);
145#else // LL_PLAT_C
146 virtual ::ContainerScreenActionResult tryAutoPlace(
147 ::ContainerValidationSlotData const& srcSlot,
149 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
150 );
151#endif
152
153#ifdef LL_PLAT_S
154 virtual ::ContainerScreenActionResult trySplitSingle(
157 ::std::vector<::ContainerSimulationSplitStack>&
158 );
159#else // LL_PLAT_C
160 virtual ::ContainerScreenActionResult trySplitSingle(
161 ::ContainerValidationSlotData const& srcSlot,
162 ::ContainerValidationSlotData const& dstSlot,
163 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
164 );
165#endif
166
167#ifdef LL_PLAT_S
168 virtual ::ContainerScreenActionResult trySplitMultiple(
170 int,
171 ::ItemInstance const&,
173 ::std::vector<::ContainerSimulationSplitStack>&,
174 int&
175 );
176#else // LL_PLAT_C
177 virtual ::ContainerScreenActionResult trySplitMultiple(
178 ::ContainerValidationSlotData const& srcSlot,
179 int progressiveTake,
180 ::ItemInstance const& itemTemplate,
181 ::ContainerValidationSlotData const& dstSlot,
182 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
183 int& splitItemRemainder
184 );
185#endif
186
187#ifdef LL_PLAT_S
188 virtual ::ContainerScreenActionResult
189 tryDrop(::ContainerValidationSlotData const&, ::ItemTransferAmount const, bool);
190#else // LL_PLAT_C
191 virtual ::ContainerScreenActionResult
192 tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
193#endif
194
195#ifdef LL_PLAT_S
196 virtual ::ContainerScreenActionResult tryDestroy(::ContainerValidationSlotData const&, ::ItemTransferAmount const);
197#else // LL_PLAT_C
198 virtual ::ContainerScreenActionResult
199 tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
200#endif
201
202#ifdef LL_PLAT_S
203 virtual ::ContainerScreenActionResult tryConsume(::ContainerValidationSlotData const&, ::ItemTransferAmount const);
204#else // LL_PLAT_C
205 virtual ::ContainerScreenActionResult
206 tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
207#endif
208
209#ifdef LL_PLAT_S
210 virtual ::ContainerScreenActionResult tryConsumeExpected(::ContainerValidationSlotData const&);
211#else // LL_PLAT_C
212 virtual ::ContainerScreenActionResult tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
213#endif
214
215 virtual void _registerCoalesceOrder();
216
217 virtual void _registerAutoPlaceOrder();
218 // NOLINTEND
219
220public:
221 // member functions
222 // NOLINTBEGIN
223#ifdef LL_PLAT_C
224 MCNAPI ContainerScreenSimulation(
225 ::ContainerScreenContext const& screenContext,
226 ::ContainerValidationCaller caller,
227 ::std::unique_ptr<::IContainerTransfer>&& containerTransferInterface,
228 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
229 );
230
231 MCNAPI void _leaveActionScope(::ContainerScreenActionResult& result);
232
233 MCNAPI ::ContainerScreenActionResult _tryTransfer(
234 ::ItemTransferType transferType,
235 ::ContainerValidationSlotData const& srcSlot,
236 ::ContainerValidationSlotData const& dstSlot,
237 ::ItemTransferAmount transferAmount,
238 ::ContainerScreenTransferBehaviour transferBehaviour
239 );
240
241 MCNAPI ::ContainerScreenActionResult _tryTransferSpecial(
242 ::ContainerValidationSlotData const& srcSlot,
243 ::ItemTransferAmount transferAmount,
244 ::ItemSpecialLocation location
245 );
246
247 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerScreenActionResult result);
248
249 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerValidationResult result);
250#endif
251 // NOLINTEND
252
253public:
254 // constructor thunks
255 // NOLINTBEGIN
256#ifdef LL_PLAT_C
257 MCNAPI void* $ctor(
258 ::ContainerScreenContext const& screenContext,
259 ::ContainerValidationCaller caller,
260 ::std::unique_ptr<::IContainerTransfer>&& containerTransferInterface,
261 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
262 );
263#endif
264 // NOLINTEND
265
266public:
267 // destructor thunk
268 // NOLINTBEGIN
269 MCNAPI void $dtor();
270 // NOLINTEND
271
272public:
273 // virtual function thunks
274 // NOLINTBEGIN
275#ifdef LL_PLAT_C
276 MCNAPI ::ContainerScreenActionResult
277 $tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
278
279 MCNAPI ::ContainerScreenActionResult $tryPlaceAmount(
280 ::ContainerValidationSlotData const& srcSlot,
281 int amount,
282 ::ContainerValidationSlotData const& dstSlot
283 );
284
285 MCNAPI ::ContainerScreenActionResult
286 $tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
287
288 MCNAPI ::ContainerScreenActionResult $tryTakeAmount(
289 ::ContainerValidationSlotData const& dstSlot,
290 int amount,
291 ::ContainerValidationSlotData const& srcSlot
292 );
293
294 MCNAPI ::ContainerScreenActionResult
295 $tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
296
297 MCNAPI ::ContainerScreenActionResult
298 $tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
299
300 MCNAPI ::ContainerScreenActionResult
301 $trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
302
303 MCNAPI ::ContainerScreenActionResult $tryAddToStack(
304 ::ContainerValidationSlotData const& dstSlot,
305 ::ContainerValidationSlotData const& srcSlot,
306 ::ItemTakeType type
307 );
308
309 MCNAPI ::ContainerScreenActionResult
310 $tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
311
312 MCNAPI ::ContainerScreenActionResult $tryAutoPlace(
313 ::ContainerValidationSlotData const& srcSlot,
315 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
316 );
317
318 MCNAPI ::ContainerScreenActionResult $trySplitSingle(
319 ::ContainerValidationSlotData const& srcSlot,
320 ::ContainerValidationSlotData const& dstSlot,
321 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
322 );
323
324 MCNAPI ::ContainerScreenActionResult $trySplitMultiple(
325 ::ContainerValidationSlotData const& srcSlot,
326 int progressiveTake,
327 ::ItemInstance const& itemTemplate,
328 ::ContainerValidationSlotData const& dstSlot,
329 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
330 int& splitItemRemainder
331 );
332
333 MCNAPI ::ContainerScreenActionResult
334 $tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
335
336 MCNAPI ::ContainerScreenActionResult
337 $tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
338
339 MCNAPI ::ContainerScreenActionResult
340 $tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
341
342 MCNAPI ::ContainerScreenActionResult $tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
343
344 MCNAPI void $_registerCoalesceOrder();
345
346 MCNAPI void $_registerAutoPlaceOrder();
347#endif
348
349
350 // NOLINTEND
351
352public:
353 // vftables
354 // NOLINTBEGIN
355 MCNAPI static void** $vftable();
356 // NOLINTEND
357};
Definition EnableNonOwnerReferences.h:7
Definition ContainerScreenActionScope.h:14
Definition ContainerScreenContext.h:19
static MCAPI void ** $vftable()
Definition ContainerScreenValidation.h:29
Definition Container.h:34
Definition IContainerTransfer.h:11
Definition ItemInstance.h:15
Definition AutoPlaceTarget.h:5
Definition ContainerScreenActionResult.h:14
Definition ContainerSimulationSplitStack.h:8
Definition ContainerValidationResult.h:15
Definition ContainerValidationSlotData.h:8
Definition FullContainerName.h:8
Definition ItemTransferAmount.h:9