28class Trade2ContainerManagerController :
public ::ContainerManagerController {
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;
42 Trade2ContainerManagerController();
48 virtual ~Trade2ContainerManagerController() =
default;
50 virtual bool isOutputSlot(::std::string
const& collectionName)
const ;
52 virtual int handleAutoPlace(
55 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
56 ::std::vector<::AutoPlaceResult>& destinations
59 virtual ::ItemStackBase
const& getTakeableItemStackBase(
::SlotData const& slot)
const ;
63 virtual void handleTakeAmount(
::SlotData const& dstSlot,
int amount,
::SlotData const& srcSlot) ;
74 virtual ::CreateContainerItemScope
82 MCNAPI
explicit Trade2ContainerManagerController(::std::weak_ptr<::Trade2ContainerManagerModel> pModel);
84 MCNAPI
void _consumeIngredients(uchar numCrafts);
86 MCNAPI
void _consumeMaterials(
int amount, ::ContainerEnumName ingredientContainerEnumName);
88 MCNAPI
void _createResult(
bool shouldPlayAudio);
97 MCNAPI
bool _ingredientsMatchRecipe(
103 MCNAPI
void _pullInIngredientItemsFromInventory(
108 bool ignoreCustomNamedItems
111 MCNAPI
void _selectBestTradeForIngredients();
113 MCNAPI
void _setupCallbacks();
115 MCNAPI
int getCurrentTradeExp()
const;
117 MCNAPI ::std::string getDisplayName();
119 MCNAPI ::std::string getDisplayNameTag()
const;
121 MCNAPI
int getEntityMaxTradeTier()
const;
123 MCNAPI
int getEntityTradeTier()
const;
125 MCNAPI ::MerchantRecipe* getSelectedTrade()
const;
127 MCNAPI ::MerchantRecipe* getTrade(
int tier,
int index)
const;
129 MCNAPI
void handleAutoTrade(
int tier,
int index, ::std::vector<::AutoPlaceResult>&);
131 MCNAPI
bool hasAvailableTradeWithSecondItem()
const;
133 MCNAPI
bool isItemValidForSelectedTrade(
::ItemStackBase const& item,
bool withCount,
bool buyA)
const;
135 MCNAPI
bool isSelectedTrade(
int tier,
int index)
const;
137 MCNAPI
bool isSelectedTradeValid()
const;
139 MCNAPI
void moveIngredientsBackToInventory();
143 MCNAPI ::std::pair<bool, bool> playerHasItemsForTradeInInventory(
::MerchantRecipe const* recipe)
const;
145 MCNAPI
void pullInIngredientsForSelectedTrade();
147 MCNAPI
bool selectOfferedTrade();
149 MCNAPI
void setSelectedTrade(
int tier,
int index);
165 MCNAPI
void* $ctor(::std::weak_ptr<::Trade2ContainerManagerModel> pModel);
173 MCNAPI
bool $isOutputSlot(::std::string
const& collectionName)
const;
175 MCNAPI
int $handleAutoPlace(
178 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
179 ::std::vector<::AutoPlaceResult>& destinations
182 MCNAPI ::ItemStackBase
const& $getTakeableItemStackBase(
::SlotData const& slot)
const;
186 MCNAPI
void $handleTakeAmount(
::SlotData const& dstSlot,
int amount,
::SlotData const& srcSlot);
192 MCNAPI
void $handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
196 MCNAPI ::CreateContainerItemScope