the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2#include "..\..\..\Minecraft.World\Recipy.h"
3#include "..\..\..\Minecraft.World\Item.h"
4
5class LocalPlayer;
6
7// 4J Stu - Crafting menu code that's shared across Iggy and XUI
8class IUIScene_CraftingMenu
9{
10protected:
11#define DISPLAY_INVENTORY 0
12#define DISPLAY_DESCRIPTION 1
13#define DISPLAY_INGREDIENTS 2
14#define DISPLAY_MAX 3
15
16 enum _eGroupTab
17 {
18 eGroupTab_Left,
19 eGroupTab_Middle,
20 eGroupTab_Right
21 };
22
23 static const int m_iMaxHSlotC = 12;
24 static const int m_iMaxHCraftingSlotC = 10;
25 static const int m_iMaxVSlotC = 17;
26 static const int m_iMaxDisplayedVSlotC = 3;
27 static const int m_iIngredients3x3SlotC = 9;
28 static const int m_iIngredients2x2SlotC = 4;
29
30 static const int m_iMaxHSlot3x3C = 12;
31 static const int m_iMaxHSlot2x2C = 10;
32
33 static const int m_iMaxGroup3x3 = 7;
34 static const int m_iMaxGroup2x2 = 6;
35
36 static int m_iBaseTypeMapA[Item::eBaseItemType_MAXTYPES];
37
38 typedef struct
39 {
40 int iCount;
41 int iItemBaseType;
42 int iRecipeA[m_iMaxVSlotC]; // tiers of item that can be made
43 }
44 CANBEMADE;
45
46 CANBEMADE CanBeMadeA[m_iMaxHSlotC];
47
48 int m_iCurrentSlotHIndex;
49 int m_iCurrentSlotVIndex;
50 int m_iRecipeC;
51 int m_iContainerType; // 2x2 or 3x3
52 shared_ptr<LocalPlayer> m_pPlayer;
53 int m_iGroupIndex;
54
55 int iVSlotIndexA[3]; // index of the v slots currently displayed
56
57 static LPCWSTR m_GroupIconNameA[m_iMaxGroup3x3];
58 static Recipy::_eGroupType m_GroupTypeMapping4GridA[m_iMaxGroup2x2];
59 static Recipy::_eGroupType m_GroupTypeMapping9GridA[m_iMaxGroup3x3];
60 Recipy::_eGroupType *m_pGroupA;
61
62 static LPCWSTR m_GroupTabNameA[3];
63 static _eGroupTab m_GroupTabBkgMapping2x2A[m_iMaxGroup2x2];
64 static _eGroupTab m_GroupTabBkgMapping3x3A[m_iMaxGroup3x3];
65 _eGroupTab *m_pGroupTabA;
66 int m_iCraftablesMaxHSlotC;
67 int m_iIngredientsMaxSlotC;
68 int m_iDisplayDescription;
69 int m_iIngredientsC;
70 bool m_bIgnoreKeyPresses;
71 bool m_bSplitscreen;
72
73 eTutorial_State m_previousTutorialState;
74
75 bool handleKeyDown(int iPad, int iAction, bool bRepeat);
76
77public:
78 IUIScene_CraftingMenu();
79
80protected:
81 LPCWSTR GetGroupNameText(int iGroupType);
82
83 void CheckRecipesAvailable();
84 void UpdateHighlight();
85 void UpdateVerticalSlots();
86 void DisplayIngredients();
87 void UpdateTooltips();
88 void UpdateDescriptionText(bool);
89 void HandleInventoryUpdated();
90
91public:
92 Recipy::_eGroupType getCurrentGroup() { return m_pGroupA[m_iGroupIndex]; }
93 bool isItemSelected(int itemId);
94
95protected:
96 virtual int getPad() = 0;
97 virtual void hideAllHSlots() = 0;
98 virtual void hideAllVSlots() = 0;
99 virtual void hideAllIngredientsSlots() = 0;
100 virtual void setCraftHSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha) = 0;
101 virtual void setCraftVSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha) = 0;
102 virtual void setCraftingOutputSlotItem(int iPad, shared_ptr<ItemInstance> item) = 0;
103 virtual void setCraftingOutputSlotRedBox(bool show) = 0;
104 virtual void setIngredientSlotItem(int iPad, int index, shared_ptr<ItemInstance> item) = 0;
105 virtual void setIngredientSlotRedBox(int index, bool show) = 0;
106 virtual void setIngredientDescriptionItem(int iPad, int index, shared_ptr<ItemInstance> item) = 0;
107 virtual void setIngredientDescriptionRedBox(int index, bool show) = 0;
108 virtual void setIngredientDescriptionText(int index, LPCWSTR text) = 0;
109 virtual void setShowCraftHSlot(int iIndex, bool show) = 0;
110 virtual void showTabHighlight(int iIndex, bool show) = 0;
111 virtual void setGroupText(LPCWSTR text) = 0;
112 virtual void setDescriptionText(LPCWSTR text) = 0;
113 virtual void setItemText(LPCWSTR text) = 0;
114 virtual void scrollDescriptionUp() = 0;
115 virtual void scrollDescriptionDown() = 0;
116 virtual void updateHighlightAndScrollPositions() = 0;
117 virtual void updateVSlotPositions(int iSlots, int i) = 0;
118
119 virtual void UpdateMultiPanel() = 0;
120};