the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2
3#include <assert.h>
4#include "..\XUI\XUI_HowToPlayMenu.h"
5#include "..\XUI\XUI_HelpHowToPlay.h"
6
7// strings for buttons in the list
8unsigned int CScene_HowToPlayMenu::m_uiHTPButtonNameA[]=
9{
10 IDS_HOW_TO_PLAY_MENU_WHATSNEW, // eHTPButton_WhatsNew
11 IDS_HOW_TO_PLAY_MENU_BASICS, // eHTPButton_Basics,
12 IDS_HOW_TO_PLAY_MENU_MULTIPLAYER, // eHTPButton_Multiplayer
13 IDS_HOW_TO_PLAY_MENU_HUD, // eHTPButton_Hud,
14 IDS_HOW_TO_PLAY_MENU_CREATIVE, // eHTPButton_Creative,
15 IDS_HOW_TO_PLAY_MENU_INVENTORY, // eHTPButton_Inventory,
16 IDS_HOW_TO_PLAY_MENU_CHESTS, // eHTPButton_Chest,
17 IDS_HOW_TO_PLAY_MENU_CRAFTING, // eHTPButton_Crafting,
18 IDS_HOW_TO_PLAY_MENU_FURNACE, // eHTPButton_Furnace,
19 IDS_HOW_TO_PLAY_MENU_DISPENSER, // eHTPButton_Dispenser,
20
21 IDS_HOW_TO_PLAY_MENU_BREWING, // eHTPButton_Brewing,
22 IDS_HOW_TO_PLAY_MENU_ENCHANTMENT, // eHTPButton_Enchantment,
23 IDS_HOW_TO_PLAY_MENU_ANVIL,
24 IDS_HOW_TO_PLAY_MENU_FARMANIMALS, // eHTPButton_Breeding,
25 IDS_HOW_TO_PLAY_MENU_BREEDANIMALS, // eHTPButton_Breeding,
26 IDS_HOW_TO_PLAY_MENU_TRADING,
27
28 IDS_HOW_TO_PLAY_MENU_NETHERPORTAL, // eHTPButton_NetherPortal,
29 IDS_HOW_TO_PLAY_MENU_THEEND, // eHTPButton_TheEnd,
30 IDS_HOW_TO_PLAY_MENU_SOCIALMEDIA, // eHTPButton_SocialMedia,
31 IDS_HOW_TO_PLAY_MENU_BANLIST, // eHTPButton_BanningLevels,
32 IDS_HOW_TO_PLAY_MENU_HOSTOPTIONS, // eHTPButton_HostOptions,
33};
34
35// mapping the buttons to a scene value
36unsigned int CScene_HowToPlayMenu::m_uiHTPSceneA[]=
37{
38 eHowToPlay_WhatsNew,
39 eHowToPlay_Basics,
40 eHowToPlay_Multiplayer,
41 eHowToPlay_HUD,
42 eHowToPlay_Creative,
43 eHowToPlay_Inventory,
44 eHowToPlay_Chest,
45 eHowToPlay_InventoryCrafting,
46 eHowToPlay_Furnace,
47 eHowToPlay_Dispenser,
48
49 eHowToPlay_Brewing,
50 eHowToPlay_Enchantment,
51 eHowToPlay_Anvil,
52 eHowToPlay_FarmingAnimals,
53 eHowToPlay_Breeding,
54 eHowToPlay_Trading,
55
56 eHowToPlay_NetherPortal,
57 eHowToPlay_TheEnd,
58 eHowToPlay_SocialMedia,
59 eHowToPlay_BanList,
60 eHowToPlay_HostOptions,
61};
62
63//----------------------------------------------------------------------------------
64// Performs initialization tasks - retrieves controls.
65//----------------------------------------------------------------------------------
66HRESULT CScene_HowToPlayMenu::OnInit( XUIMessageInit* pInitData, BOOL& bHandled )
67{
68 m_iPad = *(int *)pInitData->pvInitData;
69 // if we're not in the game, we need to use basescene 0
70 bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
71 bool bSplitscreen= app.GetLocalPlayerCount()>1;
72 m_ButtonList=NULL;
73
74 //MapChildControls();
75
76 //m_iButtons=0;
77 if(bSplitscreen)
78 {
79 app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad, false);
80 }
81
82 // 4J-PB - changing all versions to use a list of buttons, since we're adding some
83 // We're going to use a list of buttons here
84 CXuiElement e = m_hObj;
85 HRESULT hr = e.GetChildById(L"HowToListButtons", &m_ButtonList);
86 m_iButtons=eHTPButton_Max;
87 for(int i=0;i<eHTPButton_Max;i++)
88 {
89 //m_Buttons[i].SetShow(FALSE);
90 //m_Buttons[i].SetEnable(FALSE);
91 m_ButtonList.InsertItems( m_ButtonList.GetItemCount(), 1 );
92 }
93
94 // set the focus to the list
95 m_ButtonList.SetFocus(m_iPad);
96
97 if((!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) || bSplitscreen)
98 {
99 if(bNotInGame)
100 {
101 CXuiSceneBase::ShowLogo( DEFAULT_XUI_MENU_USER, FALSE );
102 }
103 else
104 {
105 CXuiSceneBase::ShowLogo( m_iPad, FALSE );
106 }
107 }
108 else if(bNotInGame)
109 {
110 CXuiSceneBase::ShowLogo( DEFAULT_XUI_MENU_USER, TRUE );
111 }
112 else
113 {
114 CXuiSceneBase::ShowLogo( m_iPad, TRUE );
115 }
116 // Display the tooltips
117 // if we're not in the game, we need to use basescene 0
118 if(bNotInGame)
119 {
120 ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK);
121 }
122 else
123 {
124 ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK);
125 }
126
127 return S_OK;
128}
129
130HRESULT CScene_HowToPlayMenu::OnGetSourceDataText(XUIMessageGetSourceText *pGetSourceTextData, BOOL& bHandled)
131{
132 if( pGetSourceTextData->bItemData )
133 {
134 if( pGetSourceTextData->iItem < (int)eHTPButton_Max )
135 {
136 pGetSourceTextData->szText = app.GetString(m_uiHTPButtonNameA[pGetSourceTextData->iItem]);//m_Buttons[pGetSourceTextData->iItem].GetText();
137 pGetSourceTextData->bDisplay = TRUE;
138
139 bHandled = TRUE;
140 }
141 }
142 return S_OK;
143}
144
145HRESULT CScene_HowToPlayMenu::OnGetItemCountAll(XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled)
146{
147 pGetItemCountData->cItems = m_iButtons;
148 bHandled = TRUE;
149 return S_OK;
150}
151
152
153HRESULT CScene_HowToPlayMenu::OnNotifySelChanged(HXUIOBJ hObjSource, XUINotifySelChanged *pNotifySelChangedData, BOOL& bHandled)
154{
155 // In a list, we need to play the 'focus' sound ourselves
156 if((pNotifySelChangedData->iOldItem!=-1) && m_ButtonList && (hObjSource==m_ButtonList.m_hObj))
157 {
158 CXuiSceneBase::PlayUISFX(eSFX_Focus);
159 }
160
161 return S_OK;
162}
163//----------------------------------------------------------------------------------
164// Handler for the button press message.
165//----------------------------------------------------------------------------------
166HRESULT CScene_HowToPlayMenu::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled)
167{
168 // This assumes all buttons can only be pressed with the A button
169 ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A);
170 unsigned int uiInitData;
171 unsigned int uiButtonCounter=0;
172
173 // 4J-PB - now using a list for all resolutions
174 //if((!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) || app.GetLocalPlayerCount()>1)
175 {
176 if(hObjPressed==m_ButtonList && m_ButtonList.TreeHasFocus() && (m_ButtonList.GetItemCount() > 0) && (m_ButtonList.GetCurSel() < (int)eHTPButton_Max) )
177 {
178 uiButtonCounter=m_ButtonList.GetCurSel();
179 }
180 }
181 /*else
182 {
183 while((uiButtonCounter<BUTTONS_HTP_MAX) && (m_Buttons[uiButtonCounter]!=hObjPressed)) uiButtonCounter++;
184 }*/
185
186 // Determine which button was pressed,
187 // and call the appropriate function.
188
189 uiInitData = ( ( 1 << 31 ) | ( m_uiHTPSceneA[uiButtonCounter] << 16 ) | ( short )( m_iPad ) );
190 if(app.GetLocalPlayerCount()>1)
191 {
192 app.NavigateToScene(pNotifyPressData->UserIndex,eUIScene_HowToPlay, ( void* )( uiInitData ) );
193 }
194 else
195 {
196 app.NavigateToScene(pNotifyPressData->UserIndex,eUIScene_HowToPlay, ( void* )( uiInitData ) );
197 }
198
199 rfHandled=TRUE;
200 return S_OK;
201}
202
203HRESULT CScene_HowToPlayMenu::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled)
204{
205 ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
206
207 switch(pInputData->dwKeyCode)
208 {
209
210 case VK_PAD_B:
211 case VK_ESCAPE:
212 app.NavigateBack(pInputData->UserIndex);
213 rfHandled = TRUE;
214
215 break;
216 }
217
218 return S_OK;
219}
220
221HRESULT CScene_HowToPlayMenu::OnNavReturn(HXUIOBJ hObj,BOOL& rfHandled)
222{
223 ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK);
224
225 return S_OK;
226}
227
228HRESULT CScene_HowToPlayMenu::OnCustomMessage_Splitscreenplayer(bool bJoining, BOOL& bHandled)
229{
230 bHandled=true;
231 return app.AdjustSplitscreenScene_PlayerChanged(m_hObj,&m_OriginalPosition,m_iPad,bJoining,false);
232}