LeviLamina
Loading...
Searching...
No Matches
ElementConstructorContainerManagerController.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/containers/SlotData.h"
7#include "mc/world/containers/controllers/ItemTakeType.h"
8#include "mc/world/containers/managers/controllers/ContainerManagerController.h"
9#include "mc/world/item/ItemInstance.h"
10#include "mc/world/level/block/ElementType.h"
11
12// auto generated forward declare list
13// clang-format off
16class ItemStack;
17class ItemStackBase;
18struct AutoPlaceItem;
19struct AutoPlaceResult;
22// clang-format on
23
24class ElementConstructorContainerManagerController : public ::ContainerManagerController {
25public:
26 // member variables
27 // NOLINTBEGIN
28 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::ElementConstructorContainerManagerModel>> mModel;
29 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CraftableElements>> mElements;
30 ::ll::TypedStorage<8, 64, ::std::function<void(int, int, int)>> mSetParticles;
31 ::ll::TypedStorage<8, 40, ::SlotData const> mCreatedItemOutputSlot;
32 ::ll::TypedStorage<8, 128, ::ItemInstance> mResultItemPreview;
33 // NOLINTEND
34
35#ifdef LL_PLAT_S
36#else // LL_PLAT_C
37public:
38 // prevent constructor by default
39 ElementConstructorContainerManagerController();
40
41#endif
42public:
43 // virtual functions
44 // NOLINTBEGIN
45 virtual ~ElementConstructorContainerManagerController() /*override*/ = default;
46
47 virtual ::ItemStackBase const& getTakeableItemStackBase(::SlotData const& slot) const /*override*/;
48
49 virtual void handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
50
51 virtual void handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
52
53 virtual int handleAutoPlace(
54 ::SlotData const& srcSlot,
55 int amount,
56 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
57 ::std::vector<::AutoPlaceResult>& destinations
58 ) /*override*/;
59
60 virtual void
61 handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type) /*override*/;
62
63 virtual void _onItemAcquired(::ItemInstance const& stack, ::SlotData const& srcSlot) /*override*/;
64
65 virtual bool isOutputSlot(::std::string const& collectionName) const /*override*/;
66
67 virtual ::CreateContainerItemScope
68 _makeCreateItemScope(::SlotData const& srcSlot, ::ItemTransferAmount const& amount) /*override*/;
69 // NOLINTEND
70
71public:
72 // member functions
73 // NOLINTBEGIN
74#ifdef LL_PLAT_C
75 MCNAPI explicit ElementConstructorContainerManagerController(
76 ::std::weak_ptr<::ElementConstructorContainerManagerModel> containerManagerModel
77 );
78
79 MCNAPI ::ItemInstance _getElementItem(::ElementType type) const;
80
81 MCNAPI bool _handleOutputSwap(::SlotData const& src, ::SlotData const& dest, ::ItemTransferAmount amount);
82
83 MCNAPI bool _handleTransferCraft(::SlotData const& srcSlot, ::SlotData const& dstSlot, ::ItemTransferAmount amount);
84
85 MCNAPI bool _updateOutputPreview(::ItemStack const& stack);
86
87 MCNAPI void _updateParticleInputsFromOutputSlot();
88
89 MCNAPI bool isStillValid(float pickRange);
90
91 MCNAPI bool outputInteractWouldCausePlace(::SlotData const& src);
92
93 MCNAPI void updateOutput(int protons, int electrons, int neutrons);
94#endif
95 // NOLINTEND
96
97public:
98 // constructor thunks
99 // NOLINTBEGIN
100#ifdef LL_PLAT_C
101 MCNAPI void* $ctor(::std::weak_ptr<::ElementConstructorContainerManagerModel> containerManagerModel);
102#endif
103 // NOLINTEND
104
105public:
106 // virtual function thunks
107 // NOLINTBEGIN
108#ifdef LL_PLAT_C
109 MCNAPI ::ItemStackBase const& $getTakeableItemStackBase(::SlotData const& slot) const;
110
111 MCNAPI void $handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot);
112
113 MCNAPI void $handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot);
114
115 MCNAPI int $handleAutoPlace(
116 ::SlotData const& srcSlot,
117 int amount,
118 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
119 ::std::vector<::AutoPlaceResult>& destinations
120 );
121
122 MCNAPI void $handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type);
123
124 MCNAPI void $_onItemAcquired(::ItemInstance const& stack, ::SlotData const& srcSlot);
125
126 MCNAPI bool $isOutputSlot(::std::string const& collectionName) const;
127
128 MCNAPI ::CreateContainerItemScope
129 $_makeCreateItemScope(::SlotData const& srcSlot, ::ItemTransferAmount const& amount);
130#endif
131
132
133 // NOLINTEND
134
135public:
136 // vftables
137 // NOLINTBEGIN
138 MCNAPI static void** $vftable();
139 // NOLINTEND
140};
Definition CraftableElements.h:8
Definition ElementConstructorContainerManagerModel.h:17
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition ItemStack.h:26
Definition AutoPlaceItem.h:5
Definition AutoPlaceResult.h:5
Definition CreateContainerItemScope.h:18
Definition ItemTransferAmount.h:5
Definition SlotData.h:5