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;
21class ItemInstance;
22struct 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 virtual ::ContainerScreenActionResult
63 tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
64
65 virtual ::ContainerScreenActionResult tryPlaceAmount(
66 ::ContainerValidationSlotData const& srcSlot,
67 int amount,
69 );
70
71 virtual ::ContainerScreenActionResult
72 tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
73
74 virtual ::ContainerScreenActionResult tryTakeAmount(
75 ::ContainerValidationSlotData const& dstSlot,
76 int amount,
78 );
79
80 virtual ::ContainerScreenActionResult
81 tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
82
83 virtual ::ContainerScreenActionResult
84 tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
85
86 virtual ::ContainerScreenActionResult
87 trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
88
89 virtual ::ContainerScreenActionResult tryAddToStack(
90 ::ContainerValidationSlotData const& dstSlot,
91 ::ContainerValidationSlotData const& srcSlot,
92 ::ItemTakeType type
93 );
94
95 virtual ::ContainerScreenActionResult
96 tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
97
98 virtual ::ContainerScreenActionResult tryAutoPlace(
99 ::ContainerValidationSlotData const& srcSlot,
101 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
102 );
103
104 virtual ::ContainerScreenActionResult trySplitSingle(
105 ::ContainerValidationSlotData const& srcSlot,
106 ::ContainerValidationSlotData const& dstSlot,
107 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
108 );
109
110 virtual ::ContainerScreenActionResult trySplitMultiple(
111 ::ContainerValidationSlotData const& srcSlot,
112 int progressiveTake,
113 ::ItemInstance const& itemTemplate,
114 ::ContainerValidationSlotData const& dstSlot,
115 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
116 int& splitItemRemainder
117 );
118
119 virtual ::ContainerScreenActionResult
120 tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
121
122 virtual ::ContainerScreenActionResult
123 tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
124
125 virtual ::ContainerScreenActionResult
126 tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
127
128 virtual ::ContainerScreenActionResult tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
129
130 virtual void _registerCoalesceOrder();
131
132 virtual void _registerAutoPlaceOrder();
133 // NOLINTEND
134
135public:
136 // member functions
137 // NOLINTBEGIN
138#ifdef LL_PLAT_C
139 MCNAPI ContainerScreenSimulation(
140 ::ContainerScreenContext const& screenContext,
141 ::ContainerValidationCaller caller,
142 ::std::unique_ptr<::IContainerTransfer>&& containerTransferInterface,
143 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
144 );
145
146 MCNAPI ::ContainerScreenActionResult _tryTransfer(
147 ::ItemTransferType const transferType,
148 ::ContainerValidationSlotData const& srcSlot,
149 ::ContainerValidationSlotData const& dstSlot,
150 ::ItemTransferAmount const transferAmount,
151 ::ContainerScreenTransferBehaviour transferBehaviour
152 );
153
154 MCNAPI ::ContainerScreenActionResult _tryTransferSpecial(
155 ::ContainerValidationSlotData const& srcSlot,
156 ::ItemTransferAmount const transferAmount,
157 ::ItemSpecialLocation location
158 );
159
160 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerScreenActionResult result);
161
162 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerValidationResult result);
163#endif
164 // NOLINTEND
165
166public:
167 // constructor thunks
168 // NOLINTBEGIN
169#ifdef LL_PLAT_C
170 MCNAPI void* $ctor(
171 ::ContainerScreenContext const& screenContext,
172 ::ContainerValidationCaller caller,
173 ::std::unique_ptr<::IContainerTransfer>&& containerTransferInterface,
174 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
175 );
176#endif
177 // NOLINTEND
178
179public:
180 // destructor thunk
181 // NOLINTBEGIN
182#ifdef LL_PLAT_C
183 MCNAPI void $dtor();
184#endif
185 // NOLINTEND
186
187public:
188 // virtual function thunks
189 // NOLINTBEGIN
190#ifdef LL_PLAT_C
191 MCNAPI ::ContainerScreenActionResult
192 $tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
193
194 MCNAPI ::ContainerScreenActionResult $tryPlaceAmount(
195 ::ContainerValidationSlotData const& srcSlot,
196 int amount,
197 ::ContainerValidationSlotData const& dstSlot
198 );
199
200 MCNAPI ::ContainerScreenActionResult
201 $tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
202
203 MCNAPI ::ContainerScreenActionResult $tryTakeAmount(
204 ::ContainerValidationSlotData const& dstSlot,
205 int amount,
206 ::ContainerValidationSlotData const& srcSlot
207 );
208
209 MCNAPI ::ContainerScreenActionResult
210 $tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
211
212 MCNAPI ::ContainerScreenActionResult
213 $tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
214
215 MCNAPI ::ContainerScreenActionResult
216 $trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
217
218 MCNAPI ::ContainerScreenActionResult $tryAddToStack(
219 ::ContainerValidationSlotData const& dstSlot,
220 ::ContainerValidationSlotData const& srcSlot,
221 ::ItemTakeType type
222 );
223
224 MCNAPI ::ContainerScreenActionResult
225 $tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
226
227 MCNAPI ::ContainerScreenActionResult $tryAutoPlace(
228 ::ContainerValidationSlotData const& srcSlot,
230 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
231 );
232
233 MCNAPI ::ContainerScreenActionResult $trySplitSingle(
234 ::ContainerValidationSlotData const& srcSlot,
235 ::ContainerValidationSlotData const& dstSlot,
236 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
237 );
238
239 MCNAPI ::ContainerScreenActionResult $trySplitMultiple(
240 ::ContainerValidationSlotData const& srcSlot,
241 int progressiveTake,
242 ::ItemInstance const& itemTemplate,
243 ::ContainerValidationSlotData const& dstSlot,
244 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
245 int& splitItemRemainder
246 );
247
248 MCNAPI ::ContainerScreenActionResult
249 $tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
250
251 MCNAPI ::ContainerScreenActionResult
252 $tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
253
254 MCNAPI ::ContainerScreenActionResult
255 $tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
256
257 MCNAPI ::ContainerScreenActionResult $tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
258
259 MCNAPI void $_registerCoalesceOrder();
260
261 MCNAPI void $_registerAutoPlaceOrder();
262#endif
263
264
265 // NOLINTEND
266
267public:
268 // vftables
269 // NOLINTBEGIN
270 MCNAPI static void** $vftable();
271 // NOLINTEND
272};
Definition EnableNonOwnerReferences.h:7
Definition ContainerScreenActionScope.h:14
Definition ContainerScreenContext.h:16
static MCAPI void ** $vftable()
Definition ContainerScreenValidation.h:28
Definition Container.h:35
Definition IContainerTransfer.h:5
Definition ItemInstance.h:15
Definition AutoPlaceTarget.h:5
Definition ContainerScreenActionResult.h:11
Definition ContainerSimulationSplitStack.h:8
Definition ContainerValidationResult.h:14
Definition ContainerValidationSlotData.h:8
Definition FullContainerName.h:8
Definition ItemTransferAmount.h:5