aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h')
-rw-r--r--Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h b/Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h
new file mode 100644
index 00000000..d428ab14
--- /dev/null
+++ b/Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h
@@ -0,0 +1,73 @@
+#pragma once
+
+// Sig: HRESULT OnGetItemCountMaxLines(XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled)
+#define XUI_ON_XM_GET_ITEMCOUNT_MAX_LINES(MemberFunc)\
+ if (pMessage->dwMessage == XM_GET_ITEMCOUNT && ((XUIMessageGetItemCount *) pMessage->pvData)->nType == XUI_ITEMCOUNT_MAX_LINES)\
+ {\
+ XUIMessageGetItemCount *pData = (XUIMessageGetItemCount *) pMessage->pvData;\
+ return MemberFunc(pData, pMessage->bHandled);\
+ }
+
+// Sig: HRESULT OnGetItemCountMaxPerLine(XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled)
+#define XUI_ON_XM_GET_ITEMCOUNT_MAX_PER_LINE(MemberFunc)\
+ if (pMessage->dwMessage == XM_GET_ITEMCOUNT && ((XUIMessageGetItemCount *) pMessage->pvData)->nType == XUI_ITEMCOUNT_MAX_PER_LINE)\
+ {\
+ XUIMessageGetItemCount *pData = (XUIMessageGetItemCount *) pMessage->pvData;\
+ return MemberFunc(pData, pMessage->bHandled);\
+ }
+
+class AbstractContainerMenu;
+class SlotListItemControl;
+class CXuiCtrlSlotItemListItem;
+
+class CXuiCtrlSlotList : public CXuiListImpl
+{
+public:
+ // Define the class. The class name must match the ClassOverride property
+ // set for the scene in the UI Authoring tool.
+ XUI_IMPLEMENT_CLASS( CXuiCtrlSlotList, L"CXuiCtrlSlotList", XUI_CLASS_LIST )
+
+ XUI_BEGIN_MSG_MAP()
+ XUI_ON_XM_INIT( OnInit )
+ XUI_ON_XM_DESTROY(OnDestroy)
+ XUI_ON_XM_KEYDOWN( OnKeyDown )
+ XUI_ON_XM_GET_ITEMCOUNT_ALL( OnGetItemCountAll )
+ XUI_ON_XM_GET_ITEMCOUNT_MAX_LINES(OnGetItemCountMaxLines)
+ XUI_ON_XM_GET_ITEMCOUNT_MAX_PER_LINE(OnGetItemCountMaxPerLine)
+ XUI_END_MSG_MAP()
+
+ HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled );
+ HRESULT OnDestroy();
+ HRESULT OnKeyDown(XUIMessageInput *pInputData, BOOL& bHandled);
+ HRESULT OnGetItemCountAll( XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled );
+ HRESULT OnGetItemCountMaxLines(XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled);
+ HRESULT OnGetItemCountMaxPerLine(XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled);
+ HRESULT OnRender(XUIMessageRender *pRenderData, BOOL &rfHandled);
+
+public:
+ void SetData(int m_iPad, AbstractContainerMenu* menu, int rows, int columns, int startIndex = 0, int endIndex = 0);
+
+ int GetRows() { return rows; };
+ int GetColumns() { return columns; };
+ int GetCurrentColumn();
+ int GetCurrentRow();
+
+ int GetCurrentIndex();
+
+ void SetCurrentSlot(int row, int column);
+ void SetEntrySlot(int row, int column, XUI_CONTROL_NAVIGATE direction);
+
+ void Clicked();
+
+ // 4J WESTY : Pointer Prototype : Made public.
+ void GetCXuiCtrlSlotItem(int itemIndex, CXuiCtrlSlotItemListItem** CXuiCtrlSlotItem);
+
+private:
+ int slotCount;
+ int rows;
+ int columns;
+ int startIndex;
+
+ // 4J WESTY : Pointer Prototype : Made public.
+ //void GetCXuiCtrlSlotItem(int itemIndex, CXuiCtrlSlotItemListItem** CXuiCtrlSlotItem);
+}; \ No newline at end of file