the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 120 lines 3.8 kB view raw
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};