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 MCNAPI_C ::ContainerScreenTemporaryActionScope _createTemporaryScope();
130
131 MCNAPI_C void _leaveActionScope(::ContainerScreenActionResult& result);
132
133 MCNAPI_C ::ContainerScreenActionResult _tryTransfer(
134 ::ItemTransferType transferType,
135 ::ContainerValidationSlotData const& srcSlot,
136 ::ContainerValidationSlotData const& dstSlot,
137 ::ItemTransferAmount transferAmount,
138 ::ContainerScreenTransferBehaviour transferBehaviour
139 );
140
141 MCNAPI_C ::ContainerScreenActionResult _tryTransferSpecial(
142 ::ContainerValidationSlotData const& srcSlot,
143 ::ItemTransferAmount transferAmount,
144 ::ItemSpecialLocation location
145 );
146
147 MCNAPI_C ::ContainerScreenActionResult _updateCurrentScope(::ContainerScreenActionResult result);
148
149 MCNAPI_C ::ContainerScreenActionResult _updateCurrentScope(::ContainerValidationResult result);
150 // NOLINTEND
151
152public:
153 // destructor thunk
154 // NOLINTBEGIN
155 MCNAPI void $dtor();
156 // NOLINTEND
157
158public:
159 // virtual function thunks
160 // NOLINTBEGIN
161#ifdef LL_PLAT_C
162 MCNAPI ::ContainerScreenActionResult
163 $tryPlaceOne(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
164
165 MCNAPI ::ContainerScreenActionResult $tryPlaceAmount(
166 ::ContainerValidationSlotData const& srcSlot,
167 int amount,
168 ::ContainerValidationSlotData const& dstSlot
169 );
170
171 MCNAPI ::ContainerScreenActionResult
172 $tryPlaceAll(::ContainerValidationSlotData const& srcSlot, ::ContainerValidationSlotData const& dstSlot);
173
174 MCNAPI ::ContainerScreenActionResult $tryTakeAmount(
175 ::ContainerValidationSlotData const& dstSlot,
176 int amount,
177 ::ContainerValidationSlotData const& srcSlot
178 );
179
180 MCNAPI ::ContainerScreenActionResult
181 $tryTakeAll(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
182
183 MCNAPI ::ContainerScreenActionResult
184 $tryTakeHalf(::ContainerValidationSlotData const& dstSlot, ::ContainerValidationSlotData const& srcSlot);
185
186 MCNAPI ::ContainerScreenActionResult
187 $trySwap(::ContainerValidationSlotData const& slotA, ::ContainerValidationSlotData const& slotB);
188
189 MCNAPI ::ContainerScreenActionResult $tryAddToStack(
190 ::ContainerValidationSlotData const& dstSlot,
191 ::ContainerValidationSlotData const& srcSlot,
192 ::ItemTakeType type
193 );
194
195 MCNAPI ::ContainerScreenActionResult
196 $tryCoalesce(::ContainerValidationSlotData const& dstSlot, ::ContainerEnumName coalesceContainerEnum);
197
198 MCNAPI ::ContainerScreenActionResult $tryAutoPlace(
199 ::ContainerValidationSlotData const& srcSlot,
201 ::ContainerScreenAutoplaceBehaviour autoplaceBehaviour
202 );
203
204 MCNAPI ::ContainerScreenActionResult $trySplitSingle(
205 ::ContainerValidationSlotData const& srcSlot,
206 ::ContainerValidationSlotData const& dstSlot,
207 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems
208 );
209
210 MCNAPI ::ContainerScreenActionResult $trySplitMultiple(
211 ::ContainerValidationSlotData const& srcSlot,
212 int progressiveTake,
213 ::ItemInstance const& itemTemplate,
214 ::ContainerValidationSlotData const& dstSlot,
215 ::std::vector<::ContainerSimulationSplitStack>& containerSplitItemStackItems,
216 int& splitItemRemainder
217 );
218
219 MCNAPI ::ContainerScreenActionResult
220 $tryDrop(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount, bool randomly);
221
222 MCNAPI ::ContainerScreenActionResult
223 $tryDestroy(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
224
225 MCNAPI ::ContainerScreenActionResult
226 $tryConsume(::ContainerValidationSlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
227
228 MCNAPI ::ContainerScreenActionResult $tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
229
230 MCNAPI void $_registerCoalesceOrder();
231
232 MCNAPI void $_registerAutoPlaceOrder();
233#endif
234
235
236 // NOLINTEND
237
238public:
239 // vftables
240 // NOLINTBEGIN
241 MCNAPI static void** $vftable();
242 // NOLINTEND
243};
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