From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h | 73 +++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h (limited to 'Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h') 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 -- cgit v1.2.3