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
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
38public:
39 // virtual functions
40 // NOLINTBEGIN
41 virtual ~Trade2ContainerManagerController() /*override*/ = default;
42
43 virtual bool isOutputSlot(::std::string const& collectionName) const /*override*/;
44
45 virtual int handleAutoPlace(
46 ::SlotData const& srcSlot,
47 int amount,
48 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
49 ::std::vector<::AutoPlaceResult>& destinations
50 ) /*override*/;
51
52 virtual ::ItemStackBase const& getTakeableItemStackBase(::SlotData const& slot) const /*override*/;
53
54 virtual void handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
55
56 virtual void handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot) /*override*/;
57
58 virtual void handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot) /*override*/;
59
60 virtual void handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
61
62 virtual void
63 handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type) /*override*/;
64
65 virtual void _onItemAcquired(::ItemInstance const& stack, ::SlotData const& srcSlot) /*override*/;
66
67 virtual ::CreateContainerItemScope
68 _makeCreateItemScope(::SlotData const& srcSlot, ::ItemTransferAmount const& takeAmount) /*override*/;
69 // NOLINTEND
70
71public:
72 // member functions
73 // NOLINTBEGIN
74 MCNAPI_C void _consumeIngredients(uchar numCrafts);
75
76 MCNAPI_C void _consumeMaterials(int amount, ::ContainerEnumName ingredientContainerEnumName);
77
78 MCNAPI_C void _createResult(bool shouldPlayAudio);
79
80 MCNAPI_C void
81 _createTradeItem(::ItemInstance& itemInstance, ::ItemStackRequestScope const& requestScope, uchar numCrafts);
82
83 MCNAPI_C void
84 _handleBuyItemUse(::ItemInstance const& buyItem, int& emeraldCount, ::Actor& trader, ::Player& player);
85
86 MCNAPI_C bool _handleTransferTrade(::SlotData const& srcSlot, ::SlotData const& dstSlot);
87
88 MCNAPI_C bool _ingredientsMatchRecipe(
89 ::MerchantRecipe const* recipe,
90 ::ItemStackBase const& itemA,
91 ::ItemStackBase const& itemB
92 ) const;
93
94 MCNAPI_C void _pullInIngredientItemsFromInventory(
95 ::ItemInstance const& recipeItemA,
96 ::ItemInstance const& recipeItemB,
99 bool ignoreCustomNamedItems
100 );
101
102 MCNAPI_C void _selectBestTradeForIngredients();
103
104 MCNAPI_C void _setupCallbacks();
105
106 MCNAPI_C int getCurrentTradeExp() const;
107
108 MCNAPI_C ::std::string getDisplayName();
109
110 MCNAPI_C ::std::string getDisplayNameTag() const;
111
112 MCNAPI_C int getEntityMaxTradeTier() const;
113
114 MCNAPI_C int getEntityTradeTier() const;
115
116 MCNAPI_C ::MerchantRecipe* getSelectedTrade() const;
117
118 MCNAPI_C ::MerchantRecipe* getTrade(int tier, int index) const;
119
120 MCNAPI_C void handleAutoTrade(int tier, int index, ::std::vector<::AutoPlaceResult>&);
121
122 MCNAPI_C bool hasAvailableTradeWithSecondItem() const;
123
124 MCNAPI_C bool isItemValidForSelectedTrade(::ItemStackBase const& item, bool withCount, bool buyA) const;
125
126 MCNAPI_C bool isSelectedTrade(int tier, int index) const;
127
128 MCNAPI_C bool isSelectedTradeValid() const;
129
130 MCNAPI_C void moveIngredientsBackToInventory();
131
132 MCNAPI_C bool playerHasItemsForTrade(::MerchantRecipe const* recipe) const;
133
134 MCNAPI_C ::std::pair<bool, bool> playerHasItemsForTradeInInventory(::MerchantRecipe const* recipe) const;
135
136 MCNAPI_C void pullInIngredientsForSelectedTrade();
137
138 MCNAPI_C bool selectOfferedTrade();
139
140 MCNAPI_C void setSelectedTrade(int tier, int index);
141 // NOLINTEND
142
143public:
144 // static functions
145 // NOLINTBEGIN
146 MCNAPI_C static bool itemMatchesRecipe(::ItemStackBase const& item, ::ItemStackBase const& recipe);
147 // NOLINTEND
148
149public:
150 // constructor thunks
151 // NOLINTBEGIN
152 MCNAPI_C void* $ctor(::std::weak_ptr<::Trade2ContainerManagerModel> pModel);
153 // NOLINTEND
154
155public:
156 // virtual function thunks
157 // NOLINTBEGIN
158#ifdef LL_PLAT_C
159 MCNAPI bool $isOutputSlot(::std::string const& collectionName) const;
160
161 MCNAPI int $handleAutoPlace(
162 ::SlotData const& srcSlot,
163 int amount,
164 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
165 ::std::vector<::AutoPlaceResult>& destinations
166 );
167
168 MCNAPI ::ItemStackBase const& $getTakeableItemStackBase(::SlotData const& slot) const;
169
170 MCNAPI void $handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot);
171
172 MCNAPI void $handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot);
173
174 MCNAPI void $handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot);
175
176 MCNAPI void $handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot);
177
178 MCNAPI void $handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type);
179
180 MCNAPI void $_onItemAcquired(::ItemInstance const& stack, ::SlotData const& srcSlot);
181
182 MCNAPI ::CreateContainerItemScope
183 $_makeCreateItemScope(::SlotData const& srcSlot, ::ItemTransferAmount const& takeAmount);
184#endif
185
186
187 // NOLINTEND
188
189public:
190 // vftables
191 // NOLINTBEGIN
192 MCNAPI static void** $vftable();
193 // NOLINTEND
194};
Definition Actor.h:105
Definition ContainerController.h:20
Definition ContainerManagerController.h:47
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition MerchantRecipe.h:20
Definition Player.h:125
Definition Trade2ContainerManagerController.h:28
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:5
Definition SlotData.h:5