LeviLamina
Loading...
Searching...
No Matches
Trade2ContainerManagerController.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/containers/ContainerEnumName.h"
7#include "mc/world/containers/SlotData.h"
8#include "mc/world/containers/controllers/ItemTakeType.h"
9#include "mc/world/containers/managers/controllers/ContainerManagerController.h"
10#include "mc/world/item/ItemInstance.h"
11
12// auto generated forward declare list
13// clang-format off
14class Actor;
16class ItemStackBase;
17class MerchantRecipe;
18class Player;
20struct AutoPlaceItem;
21struct AutoPlaceResult;
25struct SelectedSlotInfo;
26// clang-format on
27
28class Trade2ContainerManagerController : public ::ContainerManagerController {
29public:
30 // member variables
31 // NOLINTBEGIN
32 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::Trade2ContainerManagerModel>> mTradeContainerManagerModel;
33 ::ll::TypedStorage<1, 1, bool> mSelectBestTradeOnItemPlace;
34 ::ll::TypedStorage<8, 40, ::SlotData const> mCreatedItemOutputSlot;
35 ::ll::TypedStorage<8, 128, ::ItemInstance> mResultPreviewItem;
36 // NOLINTEND
37
38#ifdef LL_PLAT_S
39#else // LL_PLAT_C
40public:
41 // prevent constructor by default
42 Trade2ContainerManagerController();
43
44#endif
45public:
46 // virtual functions
47 // NOLINTBEGIN
48 virtual ~Trade2ContainerManagerController() /*override*/ = default;
49
50 virtual bool isOutputSlot(::std::string const& collectionName) const /*override*/;
51
52 virtual int handleAutoPlace(
53 ::SlotData const& srcSlot,
54 int amount,
55 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
56 ::std::vector<::AutoPlaceResult>& destinations
57 ) /*override*/;
58
59 virtual ::ItemStackBase const& getTakeableItemStackBase(::SlotData const& slot) const /*override*/;
60
61 virtual void handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
62
63 virtual void handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot) /*override*/;
64
65 virtual void handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot) /*override*/;
66
67 virtual void handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
68
69 virtual void
70 handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type) /*override*/;
71
72 virtual void _onItemAcquired(::ItemInstance const& stack, ::SlotData const& srcSlot) /*override*/;
73
74 virtual ::CreateContainerItemScope
75 _makeCreateItemScope(::SlotData const& srcSlot, ::ItemTransferAmount const& takeAmount) /*override*/;
76 // NOLINTEND
77
78public:
79 // member functions
80 // NOLINTBEGIN
81#ifdef LL_PLAT_C
82 MCNAPI explicit Trade2ContainerManagerController(::std::weak_ptr<::Trade2ContainerManagerModel> pModel);
83
84 MCNAPI void _consumeIngredients(uchar numCrafts);
85
86 MCNAPI void _consumeMaterials(int amount, ::ContainerEnumName ingredientContainerEnumName);
87
88 MCNAPI void _createResult(bool shouldPlayAudio);
89
90 MCNAPI void
91 _createTradeItem(::ItemInstance& itemInstance, ::ItemStackRequestScope const& requestScope, uchar numCrafts);
92
93 MCNAPI void _handleBuyItemUse(::ItemInstance const& buyItem, int& emeraldCount, ::Actor& trader, ::Player& player);
94
95 MCNAPI bool _handleTransferTrade(::SlotData const& srcSlot, ::SlotData const& dstSlot);
96
97 MCNAPI bool _ingredientsMatchRecipe(
98 ::MerchantRecipe const* recipe,
99 ::ItemStackBase const& itemA,
100 ::ItemStackBase const& itemB
101 ) const;
102
103 MCNAPI void _pullInIngredientItemsFromInventory(
104 ::ItemInstance const& recipeItemA,
105 ::ItemInstance const& recipeItemB,
108 bool ignoreCustomNamedItems
109 );
110
111 MCNAPI void _selectBestTradeForIngredients();
112
113 MCNAPI void _setupCallbacks();
114
115 MCNAPI int getCurrentTradeExp() const;
116
117 MCNAPI ::std::string getDisplayName();
118
119 MCNAPI ::std::string getDisplayNameTag() const;
120
121 MCNAPI int getEntityMaxTradeTier() const;
122
123 MCNAPI int getEntityTradeTier() const;
124
125 MCNAPI ::MerchantRecipe* getSelectedTrade() const;
126
127 MCNAPI ::MerchantRecipe* getTrade(int tier, int index) const;
128
129 MCNAPI void handleAutoTrade(int tier, int index, ::std::vector<::AutoPlaceResult>&);
130
131 MCNAPI bool hasAvailableTradeWithSecondItem() const;
132
133 MCNAPI bool isItemValidForSelectedTrade(::ItemStackBase const& item, bool withCount, bool buyA) const;
134
135 MCNAPI bool isSelectedTrade(int tier, int index) const;
136
137 MCNAPI bool isSelectedTradeValid() const;
138
139 MCNAPI void moveIngredientsBackToInventory();
140
141 MCNAPI bool playerHasItemsForTrade(::MerchantRecipe const* recipe) const;
142
143 MCNAPI ::std::pair<bool, bool> playerHasItemsForTradeInInventory(::MerchantRecipe const* recipe) const;
144
145 MCNAPI void pullInIngredientsForSelectedTrade();
146
147 MCNAPI bool selectOfferedTrade();
148
149 MCNAPI void setSelectedTrade(int tier, int index);
150#endif
151 // NOLINTEND
152
153public:
154 // static functions
155 // NOLINTBEGIN
156#ifdef LL_PLAT_C
157 MCNAPI static bool itemMatchesRecipe(::ItemStackBase const& item, ::ItemStackBase const& recipe);
158#endif
159 // NOLINTEND
160
161public:
162 // constructor thunks
163 // NOLINTBEGIN
164#ifdef LL_PLAT_C
165 MCNAPI void* $ctor(::std::weak_ptr<::Trade2ContainerManagerModel> pModel);
166#endif
167 // NOLINTEND
168
169public:
170 // virtual function thunks
171 // NOLINTBEGIN
172#ifdef LL_PLAT_C
173 MCNAPI bool $isOutputSlot(::std::string const& collectionName) const;
174
175 MCNAPI int $handleAutoPlace(
176 ::SlotData const& srcSlot,
177 int amount,
178 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
179 ::std::vector<::AutoPlaceResult>& destinations
180 );
181
182 MCNAPI ::ItemStackBase const& $getTakeableItemStackBase(::SlotData const& slot) const;
183
184 MCNAPI void $handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot);
185
186 MCNAPI void $handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot);
187
188 MCNAPI void $handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot);
189
190 MCNAPI void $handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot);
191
192 MCNAPI void $handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type);
193
194 MCNAPI void $_onItemAcquired(::ItemInstance const& stack, ::SlotData const& srcSlot);
195
196 MCNAPI ::CreateContainerItemScope
197 $_makeCreateItemScope(::SlotData const& srcSlot, ::ItemTransferAmount const& takeAmount);
198#endif
199
200
201 // NOLINTEND
202
203public:
204 // vftables
205 // NOLINTBEGIN
206 MCNAPI static void** $vftable();
207 // NOLINTEND
208};
Definition Actor.h:106
Definition ContainerController.h:20
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition MerchantRecipe.h:20
Definition Player.h:129
static MCAPI void ** $vftable()
Definition Trade2ContainerManagerModel.h:18
Definition AutoPlaceItem.h:5
Definition AutoPlaceResult.h:5
Definition CreateContainerItemScope.h:18
Definition ItemStackRequestScope.h:14
Definition ItemTransferAmount.h:5
Definition SelectedSlotInfo.h:10
Definition SlotData.h:5