aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.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/UI/IUIScene_CraftingMenu.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h')
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h
new file mode 100644
index 00000000..05227fff
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h
@@ -0,0 +1,119 @@
+#pragma once
+#include "..\..\..\Minecraft.World\Recipy.h"
+#include "..\..\..\Minecraft.World\Item.h"
+
+class LocalPlayer;
+
+// 4J Stu - Crafting menu code that's shared across Iggy and XUI
+class IUIScene_CraftingMenu
+{
+protected:
+#define DISPLAY_INVENTORY 0
+#define DISPLAY_DESCRIPTION 1
+#define DISPLAY_INGREDIENTS 2
+#define DISPLAY_MAX 3
+
+ enum _eGroupTab
+ {
+ eGroupTab_Left,
+ eGroupTab_Middle,
+ eGroupTab_Right
+ };
+
+ static const int m_iMaxHSlotC = 12;
+ static const int m_iMaxHCraftingSlotC = 10;
+ static const int m_iMaxVSlotC = 17;
+ static const int m_iMaxDisplayedVSlotC = 3;
+ static const int m_iIngredients3x3SlotC = 9;
+ static const int m_iIngredients2x2SlotC = 4;
+
+ static const int m_iMaxHSlot3x3C = 12;
+ static const int m_iMaxHSlot2x2C = 10;
+
+ static const int m_iMaxGroup3x3 = 7;
+ static const int m_iMaxGroup2x2 = 6;
+
+ static int m_iBaseTypeMapA[Item::eBaseItemType_MAXTYPES];
+
+ typedef struct
+ {
+ int iCount;
+ int iItemBaseType;
+ int iRecipeA[m_iMaxVSlotC]; // tiers of item that can be made
+ }
+ CANBEMADE;
+
+ CANBEMADE CanBeMadeA[m_iMaxHSlotC];
+
+ int m_iCurrentSlotHIndex;
+ int m_iCurrentSlotVIndex;
+ int m_iRecipeC;
+ int m_iContainerType; // 2x2 or 3x3
+ shared_ptr<LocalPlayer> m_pPlayer;
+ int m_iGroupIndex;
+
+ int iVSlotIndexA[3]; // index of the v slots currently displayed
+
+ static LPCWSTR m_GroupIconNameA[m_iMaxGroup3x3];
+ static Recipy::_eGroupType m_GroupTypeMapping4GridA[m_iMaxGroup2x2];
+ static Recipy::_eGroupType m_GroupTypeMapping9GridA[m_iMaxGroup3x3];
+ Recipy::_eGroupType *m_pGroupA;
+
+ static LPCWSTR m_GroupTabNameA[3];
+ static _eGroupTab m_GroupTabBkgMapping2x2A[m_iMaxGroup2x2];
+ static _eGroupTab m_GroupTabBkgMapping3x3A[m_iMaxGroup3x3];
+ _eGroupTab *m_pGroupTabA;
+ int m_iCraftablesMaxHSlotC;
+ int m_iIngredientsMaxSlotC;
+ int m_iDisplayDescription;
+ int m_iIngredientsC;
+ bool m_bIgnoreKeyPresses;
+ bool m_bSplitscreen;
+
+ eTutorial_State m_previousTutorialState;
+
+ bool handleKeyDown(int iPad, int iAction, bool bRepeat);
+
+public:
+ IUIScene_CraftingMenu();
+
+protected:
+ LPCWSTR GetGroupNameText(int iGroupType);
+
+ void CheckRecipesAvailable();
+ void UpdateHighlight();
+ void UpdateVerticalSlots();
+ void DisplayIngredients();
+ void UpdateTooltips();
+ void UpdateDescriptionText(bool);
+
+public:
+ Recipy::_eGroupType getCurrentGroup() { return m_pGroupA[m_iGroupIndex]; }
+ bool isItemSelected(int itemId);
+
+protected:
+ virtual int getPad() = 0;
+ virtual void hideAllHSlots() = 0;
+ virtual void hideAllVSlots() = 0;
+ virtual void hideAllIngredientsSlots() = 0;
+ virtual void setCraftHSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha) = 0;
+ virtual void setCraftVSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha) = 0;
+ virtual void setCraftingOutputSlotItem(int iPad, shared_ptr<ItemInstance> item) = 0;
+ virtual void setCraftingOutputSlotRedBox(bool show) = 0;
+ virtual void setIngredientSlotItem(int iPad, int index, shared_ptr<ItemInstance> item) = 0;
+ virtual void setIngredientSlotRedBox(int index, bool show) = 0;
+ virtual void setIngredientDescriptionItem(int iPad, int index, shared_ptr<ItemInstance> item) = 0;
+ virtual void setIngredientDescriptionRedBox(int index, bool show) = 0;
+ virtual void setIngredientDescriptionText(int index, LPCWSTR text) = 0;
+ virtual void setShowCraftHSlot(int iIndex, bool show) = 0;
+ virtual void showTabHighlight(int iIndex, bool show) = 0;
+ virtual void setGroupText(LPCWSTR text) = 0;
+ virtual void setDescriptionText(LPCWSTR text) = 0;
+ virtual void setItemText(LPCWSTR text) = 0;
+ virtual void scrollDescriptionUp() = 0;
+ virtual void scrollDescriptionDown() = 0;
+ virtual void updateHighlightAndScrollPositions() = 0;
+ virtual void updateVSlotPositions(int iSlots, int i) = 0;
+
+ virtual void UpdateMultiPanel() = 0;
+}; \ No newline at end of file