Skip to content
LeviMC
English
AutoLightDark
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 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 void _leaveActionScope(::ContainerScreenActionResult& result);
147
148 MCNAPI ::ContainerScreenActionResult _tryTransfer(
149 ::ItemTransferType transferType,
150 ::ContainerValidationSlotData const& srcSlot,
151 ::ContainerValidationSlotData const& dstSlot,
152 ::ItemTransferAmount transferAmount,
153 ::ContainerScreenTransferBehaviour transferBehaviour
154 );
155
156 MCNAPI ::ContainerScreenActionResult _tryTransferSpecial(
157 ::ContainerValidationSlotData const& srcSlot,
158 ::ItemTransferAmount const transferAmount,
159 ::ItemSpecialLocation location
160 );
161
162 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerScreenActionResult result);
163
164 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerValidationResult result);
165#endif
166 // NOLINTEND
167
168public:
169 // constructor thunks
170 // NOLINTBEGIN
171#ifdef LL_PLAT_C
172 MCNAPI void* $ctor(
173 ::ContainerScreenContext const& screenContext,
174 ::ContainerValidationCaller caller,
175 ::std::unique_ptr<::IContainerTransfer>&& containerTransferInterface,
176 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
177 );
178#endif
179 // NOLINTEND
180
181public:
182 // destructor thunk
183 // NOLINTBEGIN
184#ifdef LL_PLAT_C
185 MCNAPI void $dtor();
186#endif
187 // NOLINTEND
188
189public:
190 // virtual function thunks
191 // NOLINTBEGIN
192#ifdef LL_PLAT_C
193 MCNAPI ::ContainerScreenActionResult
194 $tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
195
196 MCNAPI ::ContainerScreenActionResult $tryPlaceAmount(
197 ::ContainerValidationSlotData const& srcSlot,
198 int amount,
199 ::ContainerValidationSlotData const& dstSlot
200 );
201
202 MCNAPI ::ContainerScreenActionResult
203 $tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
204
205 MCNAPI ::ContainerScreenActionResult $tryTakeAmount(
206 ::ContainerValidationSlotData const& dstSlot,
207 int amount,
208 ::ContainerValidationSlotData const& srcSlot
209 );
210
211 MCNAPI ::ContainerScreenActionResult
212 $tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
213
214 MCNAPI ::ContainerScreenActionResult
215 $tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
216
217 MCNAPI ::ContainerScreenActionResult
218 $trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
219
220 MCNAPI ::ContainerScreenActionResult $tryAddToStack(
221 ::ContainerValidationSlotData const& dstSlot,
222 ::ContainerValidationSlotData const& srcSlot,
223 ::ItemTakeType type
224 );
225
226 MCNAPI ::ContainerScreenActionResult
227 $tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
228
229 MCNAPI ::ContainerScreenActionResult $tryAutoPlace(
230 ::ContainerValidationSlotData const& srcSlot,
232 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
233 );
234
235 MCNAPI ::ContainerScreenActionResult $trySplitSingle(
236 ::ContainerValidationSlotData const& srcSlot,
237 ::ContainerValidationSlotData const& dstSlot,
238 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
239 );
240
241 MCNAPI ::ContainerScreenActionResult $trySplitMultiple(
242 ::ContainerValidationSlotData const& srcSlot,
243 int progressiveTake,
244 ::ItemInstance const& itemTemplate,
245 ::ContainerValidationSlotData const& dstSlot,
246 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
247 int& splitItemRemainder
248 );
249
250 MCNAPI ::ContainerScreenActionResult
251 $tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
252
253 MCNAPI ::ContainerScreenActionResult
254 $tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
255
256 MCNAPI ::ContainerScreenActionResult
257 $tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
258
259 MCNAPI ::ContainerScreenActionResult $tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
260
261 MCNAPI void $_registerCoalesceOrder();
262
263 MCNAPI void $_registerAutoPlaceOrder();
264#endif
265
266
267 // NOLINTEND
268
269public:
270 // vftables
271 // NOLINTBEGIN
272 MCNAPI static void** $vftable();
273 // NOLINTEND
274};
Definition EnableNonOwnerReferences.h:7
Definition ContainerScreenActionScope.h:14
Definition ContainerScreenContext.h:16
static MCAPI void ** $vftable()
Definition ContainerScreenValidation.h:28
Definition Container.h:36
Definition IContainerTransfer.h:11
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