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