the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2using namespace std;
3
4#include "../media/xuiscene_craftingpanel_2x2.h"
5#include "XUI_Ctrl_MinecraftSlot.h"
6#include "..\..\..\Minecraft.World\Recipy.h"
7#include "XUI_Ctrl_CraftIngredientSlot.h"
8#include "..\..\..\Minecraft.World\Item.h"
9#include "XUI_CustomMessages.h"
10#include "..\..\Common\Tutorial\TutorialEnum.h"
11#include "..\UI\IUIScene_CraftingMenu.h"
12
13class CXuiCtrlSlotList;
14
15class CXuiSceneCraftingPanel : public CXuiSceneImpl, public IUIScene_CraftingMenu
16{
17public:
18 // Define the class. The class name must match the ClassOverride property
19 // set for the scene in the UI Authoring tool.
20 XUI_IMPLEMENT_CLASS( CXuiSceneCraftingPanel, L"CXuiSceneCraftingPanel", XUI_CLASS_SCENE )
21
22 protected:
23 // Control and Element wrapper objects.
24
25 CXuiImageElement m_hPanel;
26 CXuiImageElement m_hHighlight;
27 CXuiImageElement m_hScrollBar3;
28 CXuiImageElement m_hScrollBar2;
29 CXuiControl m_GroupName;
30 CXuiHtmlControl m_DescriptionText;
31 CXuiControl m_ItemName,m_InventoryText;
32 CXuiElement m_Group;
33 CXuiElement m_hGrid;
34 CXuiElement m_hGridInventory;
35 CXuiImageElement m_hTabGroupA[m_iMaxGroup3x3];
36 CXuiControl m_hGroupIconA[m_iMaxGroup3x3];
37 CXuiControl m_pHSlotsCraftingCursors[m_iMaxHCraftingSlotC];
38 CXuiControl m_pHSlotsCraftingTableCursors[m_iMaxHSlotC];
39 CXuiControl *m_pCursors;
40 CXuiControl m_hCraftIngredientA[m_iIngredients3x3SlotC];
41 CXuiControl m_hCraftIngredientDescA[4]; // Max ingredients is 4 for bread
42 CXuiControl m_hCraftOutput;
43 CXuiControl m_sceneGroup;
44
45 CXuiCtrlSlotList* m_inventoryControl;
46 CXuiCtrlSlotList* m_useRowControl;
47
48 // Message map. Here we tie messages to message handlers.
49 XUI_BEGIN_MSG_MAP()
50 XUI_ON_XM_INIT( OnInit )
51 XUI_ON_XM_TRANSITION_END( OnTransitionEnd)
52 XUI_ON_XM_KEYDOWN(OnKeyDown)
53 XUI_ON_XM_GET_SOURCE_IMAGE(OnGetSourceImage)
54 XUI_ON_XM_DESTROY( OnDestroy )
55 XUI_ON_XM_SPLITSCREENPLAYER_MESSAGE(OnCustomMessage_Splitscreenplayer)
56 XUI_ON_XM_TIMER( OnTimer )
57 XUI_ON_XM_KILL_FOCUS( OnKillFocus)
58 XUI_ON_XM_INVENTORYUPDATED_MESSAGE( OnCustomMessage_InventoryUpdated )
59 XUI_END_MSG_MAP()
60
61 // Control mapping to objects
62 BEGIN_CONTROL_MAP()
63 MAP_CONTROL(IDC_Group, m_sceneGroup)
64 BEGIN_MAP_CHILD_CONTROLS(m_sceneGroup)
65 MAP_CONTROL(IDC_MainPanel,m_hPanel)
66 MAP_CONTROL(IDC_XuiGroupName,m_GroupName)
67
68 MAP_CONTROL(IDC_SceneCraftScrollGroup, m_Group)
69 BEGIN_MAP_CHILD_CONTROLS(m_Group)
70 MAP_CONTROL(IDC_XuiHighlight,m_hHighlight)
71 MAP_CONTROL(IDC_XuiImageScrollBar,m_hScrollBar3)
72 MAP_CONTROL(IDC_XuiImageScrollBar2Slot,m_hScrollBar2)
73 MAP_OVERRIDE(IDC_XuiHSlot0, m_pHSlotsBrushImageControl[0])
74 MAP_OVERRIDE(IDC_XuiHSlot1, m_pHSlotsBrushImageControl[1])
75 MAP_OVERRIDE(IDC_XuiHSlot2, m_pHSlotsBrushImageControl[2])
76 MAP_OVERRIDE(IDC_XuiHSlot3, m_pHSlotsBrushImageControl[3])
77 MAP_OVERRIDE(IDC_XuiHSlot4, m_pHSlotsBrushImageControl[4])
78 MAP_OVERRIDE(IDC_XuiHSlot5, m_pHSlotsBrushImageControl[5])
79 MAP_OVERRIDE(IDC_XuiHSlot6, m_pHSlotsBrushImageControl[6])
80 MAP_OVERRIDE(IDC_XuiHSlot7, m_pHSlotsBrushImageControl[7])
81 MAP_OVERRIDE(IDC_XuiHSlot8, m_pHSlotsBrushImageControl[8])
82 MAP_OVERRIDE(IDC_XuiHSlot9, m_pHSlotsBrushImageControl[9])
83 MAP_OVERRIDE(IDC_XuiHSlot10, m_pHSlotsBrushImageControl[10])
84 MAP_OVERRIDE(IDC_XuiHSlot11, m_pHSlotsBrushImageControl[11])
85
86
87 MAP_OVERRIDE(IDC_XuiVSlot0, m_pVSlotsBrushImageControl[0])
88 MAP_OVERRIDE(IDC_XuiVSlot1, m_pVSlotsBrushImageControl[1])
89 MAP_OVERRIDE(IDC_XuiVSlot2, m_pVSlotsBrushImageControl[2])
90
91 END_MAP_CHILD_CONTROLS()
92
93 MAP_CONTROL(IDC_Group_Tab_Icons, m_Group)
94 BEGIN_MAP_CHILD_CONTROLS(m_Group)
95 MAP_CONTROL(IDC_Icon_1,m_hGroupIconA[0])
96 MAP_CONTROL(IDC_Icon_2,m_hGroupIconA[1])
97 MAP_CONTROL(IDC_Icon_3,m_hGroupIconA[2])
98 MAP_CONTROL(IDC_Icon_4,m_hGroupIconA[3])
99 MAP_CONTROL(IDC_Icon_5,m_hGroupIconA[4])
100 MAP_CONTROL(IDC_Icon_6,m_hGroupIconA[5])
101 MAP_CONTROL(IDC_Icon_7,m_hGroupIconA[6])
102
103 END_MAP_CHILD_CONTROLS()
104
105
106 MAP_CONTROL(IDC_Group_Tab_Images, m_Group)
107 BEGIN_MAP_CHILD_CONTROLS(m_Group)
108 MAP_CONTROL(IDC_TabImage1,m_hTabGroupA[0])
109 MAP_CONTROL(IDC_TabImage2,m_hTabGroupA[1])
110 MAP_CONTROL(IDC_TabImage3,m_hTabGroupA[2])
111 MAP_CONTROL(IDC_TabImage4,m_hTabGroupA[3])
112 MAP_CONTROL(IDC_TabImage5,m_hTabGroupA[4])
113 MAP_CONTROL(IDC_TabImage6,m_hTabGroupA[5])
114 MAP_CONTROL(IDC_TabImage7,m_hTabGroupA[6])
115
116 END_MAP_CHILD_CONTROLS()
117
118
119 MAP_CONTROL(IDC_Grid, m_hGrid)
120 BEGIN_MAP_CHILD_CONTROLS(m_hGrid)
121 MAP_CONTROL(IDC_XuiHTMLText,m_DescriptionText)
122 MAP_CONTROL(IDC_Inventory,m_InventoryText)
123 MAP_CONTROL(IDC_XuiItemName,m_ItemName)
124 MAP_CONTROL(IDC_CraftingInput1,m_hCraftIngredientA[0])
125 MAP_CONTROL(IDC_CraftingInput2,m_hCraftIngredientA[1])
126 MAP_CONTROL(IDC_CraftingInput3,m_hCraftIngredientA[2])
127 MAP_CONTROL(IDC_CraftingInput4,m_hCraftIngredientA[3])
128 MAP_CONTROL(IDC_CraftingInput5,m_hCraftIngredientA[4])
129 MAP_CONTROL(IDC_CraftingInput6,m_hCraftIngredientA[5])
130 MAP_CONTROL(IDC_CraftingInput7,m_hCraftIngredientA[6])
131 MAP_CONTROL(IDC_CraftingInput8,m_hCraftIngredientA[7])
132 MAP_CONTROL(IDC_CraftingInput9,m_hCraftIngredientA[8])
133 MAP_CONTROL(IDC_Ingredient1,m_hCraftIngredientDescA[0])
134 MAP_CONTROL(IDC_Ingredient2,m_hCraftIngredientDescA[1])
135 MAP_CONTROL(IDC_Ingredient3,m_hCraftIngredientDescA[2])
136 MAP_CONTROL(IDC_Ingredient4,m_hCraftIngredientDescA[3])
137
138 MAP_CONTROL(IDC_CraftingOutputRed,m_hCraftOutput)
139 END_MAP_CHILD_CONTROLS()
140
141 MAP_CONTROL(IDC_InventoryGrid, m_hGridInventory)
142 BEGIN_MAP_CHILD_CONTROLS(m_hGridInventory)
143 MAP_OVERRIDE(IDC_Inventory, m_inventoryControl)
144 MAP_OVERRIDE(IDC_UseRow, m_useRowControl)
145 END_MAP_CHILD_CONTROLS()
146 END_MAP_CHILD_CONTROLS()
147 END_CONTROL_MAP()
148
149 HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled );
150 HRESULT OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled);
151 HRESULT OnTransitionEnd( XUIMessageTransition *pTransData, BOOL& bHandled);
152 HRESULT OnGetSourceImage(XUIMessageGetSourceImage* pData, BOOL& rfHandled);
153 HRESULT OnDestroy();
154 HRESULT OnCustomMessage_Splitscreenplayer(bool bJoining, BOOL& bHandled);
155 HRESULT OnTimer(XUIMessageTimer *pData,BOOL& rfHandled);
156 HRESULT OnKillFocus(HXUIOBJ hObjGettingFocus, BOOL& bHandled);
157 HRESULT OnCustomMessage_InventoryUpdated();
158
159 CXuiSceneCraftingPanel();
160 ~CXuiSceneCraftingPanel() { }
161
162private:
163 float m_fSlotSize;
164 D3DXVECTOR3 m_vSlot0Pos;
165 D3DXVECTOR3 m_vSlot0HighlightPos;
166 D3DXVECTOR3 m_vSlot0V2ScrollPos;
167 D3DXVECTOR3 m_vSlot0V3ScrollPos;
168
169 CXuiCtrlCraftIngredientSlot *m_pCraftingOutput;
170 CXuiCtrlCraftIngredientSlot *m_pCraftingIngredientA[m_iIngredients3x3SlotC];
171 CXuiCtrlCraftIngredientSlot *m_pCraftIngredientDescA[4];
172 CXuiCtrlMinecraftSlot *m_pHSlotsBrushImageControl[m_iMaxHSlotC];
173 CXuiCtrlMinecraftSlot *m_pVSlotsBrushImageControl[m_iMaxDisplayedVSlotC];
174 CXuiControl *GroupTypeIconA[Recipy::eGroupType_Max];
175 int m_iPad;
176 D3DXVECTOR3 m_OriginalPosition;
177
178 int mapVKToAction(int vk);
179
180protected:
181 virtual int getPad();
182 virtual void hideAllHSlots();
183 virtual void hideAllVSlots();
184 virtual void hideAllIngredientsSlots();
185 virtual void setCraftHSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha);
186 virtual void setCraftVSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha);
187 virtual void setCraftingOutputSlotItem(int iPad, shared_ptr<ItemInstance> item);
188 virtual void setCraftingOutputSlotRedBox(bool show);
189 virtual void setIngredientSlotItem(int iPad, int index, shared_ptr<ItemInstance> item);
190 virtual void setIngredientSlotRedBox(int index, bool show);
191 virtual void setIngredientDescriptionItem(int iPad, int index, shared_ptr<ItemInstance> item);
192 virtual void setIngredientDescriptionRedBox(int index, bool show);
193 virtual void setIngredientDescriptionText(int index, LPCWSTR text);
194 virtual void setShowCraftHSlot(int iIndex, bool show);
195 virtual void showTabHighlight(int iIndex, bool show);
196 virtual void setGroupText(LPCWSTR text);
197 virtual void setDescriptionText(LPCWSTR text);
198 virtual void setItemText(LPCWSTR text);
199 virtual void scrollDescriptionUp();
200 virtual void scrollDescriptionDown();
201 virtual void updateHighlightAndScrollPositions();
202 virtual void updateVSlotPositions(int iSlots, int i);
203
204 virtual void UpdateMultiPanel();
205};