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
15// auto generated forward declare list
16// clang-format off
21class ItemInstance;
22struct AutoPlaceTarget;
28// clang-format on
29
31public:
32 // member variables
33 // NOLINTBEGIN
34 ::ll::TypedStorage<8, 8, ::ContainerScreenActionScope*> mCurrentScope;
35 ::ll::TypedStorage<8, 40, ::ContainerScreenContext> mScreenContext;
36 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ContainerScreenValidation>> mScreenValidation;
37 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContainerTransfer>> mContainerTransferInterface;
38 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ContainerEnumName, ::std::vector<::ContainerEnumName>>>
39 mCoalesceOrderMap;
40 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ContainerEnumName, ::std::vector<::AutoPlaceTarget>>>
41 mAutoPlaceOrderMap;
42 // NOLINTEND
43
44public:
45 // virtual functions
46 // NOLINTBEGIN
47#ifdef LL_PLAT_S
48 virtual ~ContainerScreenSimulation() /*override*/ = default;
49#else // LL_PLAT_C
50 virtual ~ContainerScreenSimulation() /*override*/;
51#endif
52
53 virtual ::ContainerScreenActionResult
54 tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
55
56 virtual ::ContainerScreenActionResult tryPlaceAmount(
57 ::ContainerValidationSlotData const& srcSlot,
58 int amount,
60 );
61
62 virtual ::ContainerScreenActionResult
63 tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
64
65 virtual ::ContainerScreenActionResult tryTakeAmount(
66 ::ContainerValidationSlotData const& dstSlot,
67 int amount,
69 );
70
71 virtual ::ContainerScreenActionResult
72 tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
73
74 virtual ::ContainerScreenActionResult
75 tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
76
77 virtual ::ContainerScreenActionResult
78 trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
79
80 virtual ::ContainerScreenActionResult tryAddToStack(
81 ::ContainerValidationSlotData const& dstSlot,
82 ::ContainerValidationSlotData const& srcSlot,
83 ::ItemTakeType type
84 );
85
86 virtual ::ContainerScreenActionResult
87 tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
88
89 virtual ::ContainerScreenActionResult tryAutoPlace(
90 ::ContainerValidationSlotData const& srcSlot,
92 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
93 );
94
95 virtual ::ContainerScreenActionResult trySplitSingle(
96 ::ContainerValidationSlotData const& srcSlot,
97 ::ContainerValidationSlotData const& dstSlot,
98 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
99 );
100
101 virtual ::ContainerScreenActionResult trySplitMultiple(
102 ::ContainerValidationSlotData const& srcSlot,
103 int progressiveTake,
104 ::ItemInstance const& itemTemplate,
105 ::ContainerValidationSlotData const& dstSlot,
106 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
107 int& splitItemRemainder
108 );
109
110 virtual ::ContainerScreenActionResult
111 tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
112
113 virtual ::ContainerScreenActionResult
114 tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
115
116 virtual ::ContainerScreenActionResult
117 tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
118
119 virtual ::ContainerScreenActionResult tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
120
121 virtual void _registerCoalesceOrder();
122
123 virtual void _registerAutoPlaceOrder();
124 // NOLINTEND
125
126public:
127 // member functions
128 // NOLINTBEGIN
129#ifdef LL_PLAT_C
130 MCNAPI ::ContainerScreenTemporaryActionScope _createTemporaryScope();
131
132 MCNAPI void _leaveActionScope(::ContainerScreenActionResult& result);
133
134 MCNAPI ::ContainerScreenActionResult _tryTransfer(
135 ::ItemTransferType transferType,
136 ::ContainerValidationSlotData const& srcSlot,
137 ::ContainerValidationSlotData const& dstSlot,
138 ::ItemTransferAmount transferAmount,
139 ::ContainerScreenTransferBehaviour transferBehaviour
140 );
141
142 MCNAPI ::ContainerScreenActionResult _tryTransferSpecial(
143 ::ContainerValidationSlotData const& srcSlot,
144 ::ItemTransferAmount transferAmount,
145 ::ItemSpecialLocation location
146 );
147
148 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerScreenActionResult result);
149
150 MCNAPI ::ContainerScreenActionResult _updateCurrentScope(::ContainerValidationResult result);
151#endif
152 // NOLINTEND
153
154public:
155 // destructor thunk
156 // NOLINTBEGIN
157 MCNAPI void $dtor();
158 // NOLINTEND
159
160public:
161 // virtual function thunks
162 // NOLINTBEGIN
163#ifdef LL_PLAT_C
164 MCNAPI ::ContainerScreenActionResult
165 $tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
166
167 MCNAPI ::ContainerScreenActionResult $tryPlaceAmount(
168 ::ContainerValidationSlotData const& srcSlot,
169 int amount,
170 ::ContainerValidationSlotData const& dstSlot
171 );
172
173 MCNAPI ::ContainerScreenActionResult
174 $tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
175
176 MCNAPI ::ContainerScreenActionResult $tryTakeAmount(
177 ::ContainerValidationSlotData const& dstSlot,
178 int amount,
179 ::ContainerValidationSlotData const& srcSlot
180 );
181
182 MCNAPI ::ContainerScreenActionResult
183 $tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
184
185 MCNAPI ::ContainerScreenActionResult
186 $tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
187
188 MCNAPI ::ContainerScreenActionResult
189 $trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
190
191 MCNAPI ::ContainerScreenActionResult $tryAddToStack(
192 ::ContainerValidationSlotData const& dstSlot,
193 ::ContainerValidationSlotData const& srcSlot,
194 ::ItemTakeType type
195 );
196
197 MCNAPI ::ContainerScreenActionResult
198 $tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
199
200 MCNAPI ::ContainerScreenActionResult $tryAutoPlace(
201 ::ContainerValidationSlotData const& srcSlot,
203 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
204 );
205
206 MCNAPI ::ContainerScreenActionResult $trySplitSingle(
207 ::ContainerValidationSlotData const& srcSlot,
208 ::ContainerValidationSlotData const& dstSlot,
209 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
210 );
211
212 MCNAPI ::ContainerScreenActionResult $trySplitMultiple(
213 ::ContainerValidationSlotData const& srcSlot,
214 int progressiveTake,
215 ::ItemInstance const& itemTemplate,
216 ::ContainerValidationSlotData const& dstSlot,
217 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
218 int& splitItemRemainder
219 );
220
221 MCNAPI ::ContainerScreenActionResult
222 $tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
223
224 MCNAPI ::ContainerScreenActionResult
225 $tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
226
227 MCNAPI ::ContainerScreenActionResult
228 $tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
229
230 MCNAPI ::ContainerScreenActionResult $tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
231
232 MCNAPI void $_registerCoalesceOrder();
233
234 MCNAPI void $_registerAutoPlaceOrder();
235#endif
236
237
238 // NOLINTEND
239
240public:
241 // vftables
242 // NOLINTBEGIN
243 MCNAPI static void** $vftable();
244 // NOLINTEND
245};
Definition EnableNonOwnerReferences.h:7
Definition ContainerScreenActionScope.h:14
Definition ContainerScreenSimulation.h:30
static MCAPI void ** $vftable()
Definition ContainerScreenTemporaryActionScope.h:8
Definition ContainerScreenValidation.h:27
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 ItemTransferAmount.h:5