diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h')
| -rw-r--r-- | Minecraft.Client/Common/XUI/XUI_Ctrl_SlotList.h | 73 |
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 |
