LeviLamina
Loading...
Searching...
No Matches
ContainerScreenValidation.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/containers/FullContainerName.h"
7#include "mc/world/inventory/network/ContainerScreenContext.h"
8#include "mc/world/inventory/simulation/ContainerScreenRequestActionType.h"
9#include "mc/world/inventory/simulation/ContainerValidationCaller.h"
10#include "mc/world/inventory/simulation/ContainerValidationDebug.h"
11
12// auto generated forward declare list
13// clang-format off
14class Container;
17class ItemStack;
18class ItemStackBase;
27// clang-format on
28
29class ContainerScreenValidation {
30public:
31 // member variables
32 // NOLINTBEGIN
33 ::ll::TypedStorage<8, 40, ::ContainerScreenContext> mScreenContext;
34 ::ll::TypedStorage<4, 4, ::ContainerValidationCaller> mCaller;
35 ::ll::TypedStorage<8, 64, ::std::unordered_map<::FullContainerName, uint64>> mContainerIndexMap;
36 ::ll::TypedStorage<
37 8,
38 64,
39 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::ContainerValidationBase const>>>
40 mContainerValidatorMap;
41 ::ll::TypedStorage<8, 64, ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>>>
42 mPredictiveContainers;
43 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ContainerScreenValidatorBase>> mContainerScreenValidator;
44 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerValidationLayer>> mValidationStack;
45 ::ll::TypedStorage<4, 12, ::ContainerValidationDebug const> mDebug;
46 // NOLINTEND
47
48public:
49 // prevent constructor by default
50 ContainerScreenValidation();
51
52public:
53 // virtual functions
54 // NOLINTBEGIN
55 virtual ~ContainerScreenValidation();
56
57 virtual ::ContainerValidationResult
58 tryCraft(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
59
60 virtual ::ContainerValidationCraftResult
61 getCraftResults(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
62
63 virtual ::ContainerValidationResult tryActivate();
64 // NOLINTEND
65
66public:
67 // member functions
68 // NOLINTBEGIN
69 MCAPI ContainerScreenValidation(
70 ::ContainerScreenContext const& screenContext,
71 ::ContainerValidationCaller caller,
72 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
73 );
74
75 MCAPI bool _canSet(
76 ::ContainerValidationSlotInfo const& slotInfo,
77 ::ItemStackBase const& item,
78 int amount,
79 bool isInternalTransfer
80 ) const;
81
82 MCAPI void _commit();
83
84 MCAPI ::ContainerValidationSlotInfo
85 _createContainerValidatorSlotInfo(::ContainerValidationSlotData const& slotData);
86
87 MCAPI bool _dropItems();
88
89 MCAPI ::std::shared_ptr<::ContainerValidationBase const>
90 _getOrCreateContainerValidator(::FullContainerName const& containerEnumName);
91
92 MCAPI bool _propagateContainers();
93
94 MCAPI int _tryAddItem(
96 ::ItemStackBase const& srcItem,
97 int addCount,
98 bool allowPartialSuccess
99 );
100
101 MCAPI bool
102 _tryMoveItem(::ContainerValidationSlotInfo& srcValidatorPair, ::ContainerValidationSlotInfo& dstValidatorPair);
103
104 MCAPI ::ItemStack _tryRemoveItem(::ContainerValidationSlotInfo& slotInfo, int amount);
105
106 MCAPI int _trySetItem(
108 ::ItemStack const& stack,
109 bool isWholeStackTransfer,
110 bool allowPartialSuccess,
111 bool isInternalTransfer
112 );
113
114 MCAPI ::ContainerValidationResult _tryTransferSpecial(
115 ::ContainerValidationSlotData const& srcSlotData,
116 int transferAmount,
117 ::ContainerScreenRequestActionType actionType
118 );
119
120#ifdef LL_PLAT_C
121 MCAPI ::std::optional<::ContainerIterationRange>
122 getContainerIterator(::ContainerValidationSlotData const& slotData);
123#endif
124
125 MCAPI ::std::shared_ptr<::SimpleSparseContainer>
126 getOrCreateSparseContainer(::FullContainerName const& containerEnumName);
127
128 MCAPI bool isCraftingImplemented();
129
130#ifdef LL_PLAT_C
131 MCAPI void postRequest();
132#endif
133
134 MCAPI bool tryCommitActionResults();
135
136 MCAPI ::ContainerValidationResult tryConsume(::ContainerValidationSlotData const& srcSlotData, int transferAmount);
137
138#ifdef LL_PLAT_C
139 MCAPI ::ContainerValidationResult tryConsumeExpected(::ContainerValidationSlotData const& srcSlot);
140#endif
141
142 MCAPI ::ContainerValidationResult tryDestroy(::ContainerValidationSlotData const& srcSlotData, int transferAmount);
143
144 MCAPI ::ContainerValidationResult
145 tryDrop(::ContainerValidationSlotData const& srcSlotData, int transferAmount, bool dropRandomly);
146
147 MCAPI ::ContainerValidationResult
148 trySwap(::ContainerValidationSlotData const& srcSlotData, ::ContainerValidationSlotData const& dstSlotData);
149
150 MCAPI ::ContainerValidationResult tryTransfer(
151 ::ContainerValidationSlotData const& srcSlotData,
152 ::ContainerValidationSlotData const& dstSlotData,
153 int transferAmount,
154 bool isAllowingPartialTransfer
155 );
156 // NOLINTEND
157
158public:
159 // static functions
160 // NOLINTBEGIN
161 MCAPI static ::std::unique_ptr<::ContainerScreenValidation> makeContainerScreenValidation(
162 ::ContainerScreenContext const& screenContext,
163 ::ContainerValidationCaller caller,
164 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
165 );
166 // NOLINTEND
167
168public:
169 // constructor thunks
170 // NOLINTBEGIN
171 MCAPI void* $ctor(
172 ::ContainerScreenContext const& screenContext,
173 ::ContainerValidationCaller caller,
174 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
175 );
176 // NOLINTEND
177
178public:
179 // destructor thunk
180 // NOLINTBEGIN
181 MCAPI void $dtor();
182 // NOLINTEND
183
184public:
185 // virtual function thunks
186 // NOLINTBEGIN
187 MCAPI ::ContainerValidationResult
188 $tryCraft(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
189
190 MCAPI ::ContainerValidationCraftResult
191 $getCraftResults(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
192
193 MCFOLD ::ContainerValidationResult $tryActivate();
194
195
196 // NOLINTEND
197
198public:
199 // vftables
200 // NOLINTBEGIN
201 MCNAPI static void** $vftable();
202 // NOLINTEND
203};
Definition ContainerScreenContext.h:19
static MCAPI void ** $vftable()
Definition ContainerScreenValidatorBase.h:18
Definition ContainerValidationBase.h:12
Definition Container.h:34
Definition ItemStackBase.h:52
Definition ItemStack.h:35
Definition SimpleSparseContainer.h:18
Definition ContainerIterationRange.h:5
Definition ContainerValidationCraftInputs.h:5
Definition ContainerValidationCraftResult.h:14
Definition ContainerValidationLayer.h:15
Definition ContainerValidationResult.h:15
Definition ContainerValidationSlotData.h:8
Definition ContainerValidationSlotInfo.h:14
Definition FullContainerName.h:8