the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 336 lines 10 kB view raw
1#include "stdafx.h" 2#include "UI.h" 3#include "UIScene_ControlsMenu.h" 4#include "..\..\Minecraft.h" 5#include "..\..\MultiplayerLocalPlayer.h" 6 7UIScene_ControlsMenu::UIScene_ControlsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) 8{ 9 // Setup all the Iggy references we need for this scene 10 initialiseMovie(); 11 12 IggyDataValue result; 13 IggyDataValue value[1]; 14 value[0].type = IGGY_DATATYPE_number; 15#if defined(_XBOX) || defined(_WIN64) 16 value[0].number = (F64)0; 17#elif defined(_DURANGO) 18 value[0].number = (F64)1; 19#elif defined(__PS3__) 20 value[0].number = (F64)2; 21#elif defined(__ORBIS__) 22 value[0].number = (F64)3; 23#elif defined(__PSVITA__) 24 value[0].number = (F64)4; 25#endif 26 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetPlatform , 1 , value ); 27 28 bool bNotInGame=(Minecraft::GetInstance()->level==NULL); 29 30 if(bNotInGame) 31 { 32 LPWSTR layoutString = new wchar_t[ 128 ]; 33 swprintf( layoutString, 128, L"%ls", VER_PRODUCTVERSION_STR_W); 34 m_labelVersion.init(layoutString); 35 delete [] layoutString; 36 } 37 // 4J-PB - stop the label showing in the in-game controls menu 38 else 39 { 40 m_labelVersion.init(L" "); 41 } 42 m_bCreativeMode = !bNotInGame && Minecraft::GetInstance()->localplayers[m_iPad] && Minecraft::GetInstance()->localplayers[m_iPad]->abilities.mayfly; 43 44#ifndef __PSVITA__ 45#ifdef __ORBIS__ 46 // no buttons to initialise if we're running this on PS4 remote play 47 if(!InputManager.UsingRemoteVita()) 48#endif 49 { 50 m_buttonLayouts[0].init(L"1", eControl_Button0); 51 m_buttonLayouts[1].init(L"2", eControl_Button1); 52 m_buttonLayouts[2].init(L"3", eControl_Button2); 53 } 54#endif 55 56 m_checkboxInvert.init(app.GetString(IDS_INVERT_LOOK), eControl_InvertLook, app.GetGameSettings(m_iPad,eGameSetting_ControlInvertLook)); 57 m_checkboxSouthpaw.init(app.GetString(IDS_SOUTHPAW), eControl_Southpaw, app.GetGameSettings(m_iPad,eGameSetting_ControlSouthPaw)); 58 59 m_iSchemeTextA[0]=IDS_CONTROLS_SCHEME0; 60 m_iSchemeTextA[1]=IDS_CONTROLS_SCHEME1; 61 m_iSchemeTextA[2]=IDS_CONTROLS_SCHEME2; 62 63 int iSelected=app.GetGameSettings(m_iPad,eGameSetting_ControlScheme); 64 65#ifndef __PSVITA__ 66 LPWSTR layoutString = new wchar_t[ 128 ]; 67 swprintf( layoutString, 128, L"%ls : %ls", app.GetString( IDS_CURRENT_LAYOUT ),app.GetString(m_iSchemeTextA[iSelected])); 68#ifdef __ORBIS__ 69 if (!InputManager.UsingRemoteVita()) 70#endif 71 { 72 m_labelCurrentLayout.init(layoutString); 73 } 74#endif 75 76 m_iCurrentNavigatedControlsLayout = iSelected; 77 78 79#ifdef __ORBIS__ 80 // don't set controller layout if we're entering the PS4 remote play scene 81 if(!InputManager.UsingRemoteVita()) 82#endif 83 { 84 IggyDataValue result; 85 IggyDataValue value[1]; 86 value[0].type = IGGY_DATATYPE_number; 87 value[0].number = (F64)m_iCurrentNavigatedControlsLayout; 88 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetControllerLayout , 1 , value ); 89 } 90 91#ifdef __ORBIS__ 92 // Set mapping to Vita mapping 93 if (InputManager.UsingRemoteVita()) m_iCurrentNavigatedControlsLayout = 3; 94#elif defined __PSVITA__ 95 // Set mapping to Vita mapping 96 if (InputManager.IsVitaTV()) m_iCurrentNavigatedControlsLayout = 1; 97#endif 98 99 for(unsigned int i = 0; i < e_PadCOUNT; ++i) 100 { 101 m_labelsPad[i].init(L""); 102 m_controlLines[i].setVisible(false); 103 } 104 m_bLayoutChanged = false; 105 106 107 PositionAllText(m_iPad); 108} 109 110wstring UIScene_ControlsMenu::getMoviePath() 111{ 112#ifdef __ORBIS__ 113 if(InputManager.UsingRemoteVita()) 114 { 115 return L"ControlsRemotePlay"; 116 } 117 else 118#endif 119#ifdef __PSVITA__ 120 if(InputManager.IsVitaTV()) 121 { 122 return L"ControlsTV"; 123 } 124 else 125#endif 126 if(app.GetLocalPlayerCount() > 1) 127 { 128 return L"ControlsSplit"; 129 } 130 else 131 { 132 return L"Controls"; 133 } 134} 135 136void UIScene_ControlsMenu::updateTooltips() 137{ 138 ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK); 139} 140 141void UIScene_ControlsMenu::tick() 142{ 143 if(m_bLayoutChanged) PositionAllText(m_iPad); 144 UIScene::tick(); 145} 146 147void UIScene_ControlsMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled) 148{ 149 //app.DebugPrintf("UIScene_DebugOverlay handling input for pad %d, key %d, down- %s, pressed- %s, released- %s\n", iPad, key, down?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE"); 150 ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released); 151 152 switch(key) 153 { 154 case ACTION_MENU_CANCEL: 155 if(pressed) 156 { 157 app.CheckGameSettingsChanged(true,iPad); 158 navigateBack(); 159 } 160 break; 161 case ACTION_MENU_OK: 162#ifdef __ORBIS__ 163 case ACTION_MENU_TOUCHPAD_PRESS: 164#endif 165 if( pressed ) 166 { 167 //CD - Added for audio 168 ui.PlayUISFX(eSFX_Press); 169 } 170 sendInputToMovie(key, repeat, pressed, released); 171 break; 172 case ACTION_MENU_UP: 173 case ACTION_MENU_DOWN: 174 case ACTION_MENU_LEFT: 175 case ACTION_MENU_RIGHT: 176 sendInputToMovie(key, repeat, pressed, released); 177 break; 178 } 179} 180 181void UIScene_ControlsMenu::handleCheckboxToggled(F64 controlId, bool selected) 182{ 183 switch((int)controlId) 184 { 185 case eControl_InvertLook: 186 app.SetGameSettings(m_iPad,eGameSetting_ControlInvertLook,(unsigned char)( selected ) ); 187 break; 188 case eControl_Southpaw: 189 app.SetGameSettings(m_iPad,eGameSetting_ControlSouthPaw,(unsigned char)( selected ) ); 190 PositionAllText(m_iPad); 191 break; 192 }; 193} 194 195void UIScene_ControlsMenu::handlePress(F64 controlId, F64 childId) 196{ 197 int control = (int)controlId; 198 switch(control) 199 { 200 case eControl_Button0: 201 case eControl_Button1: 202 case eControl_Button2: 203 app.SetGameSettings(m_iPad,eGameSetting_ControlScheme,(unsigned char)control); 204 LPWSTR layoutString = new wchar_t[ 128 ]; 205 swprintf( layoutString, 128, L"%ls : %ls", app.GetString( IDS_CURRENT_LAYOUT ),app.GetString(m_iSchemeTextA[control])); 206#ifdef __ORBIS__ 207 if (!InputManager.UsingRemoteVita()) 208#endif 209 { 210 m_labelCurrentLayout.setLabel(layoutString); 211 } 212 213 break; 214 }; 215} 216 217void UIScene_ControlsMenu::handleFocusChange(F64 controlId, F64 childId) 218{ 219 int control = (int)controlId; 220 switch(control) 221 { 222 case eControl_Button0: 223 case eControl_Button1: 224 case eControl_Button2: 225 m_iCurrentNavigatedControlsLayout=control; 226 m_bLayoutChanged = true; 227 break; 228 }; 229} 230 231void UIScene_ControlsMenu::PositionAllText(int iPad) 232{ 233 for(unsigned int i = 0; i < e_PadCOUNT; ++i) 234 { 235 m_labelsPad[i].setLabel(L""); 236 m_controlLines[i].setVisible(false); 237 } 238 239 if(m_bCreativeMode) 240 { 241 PositionText(iPad,IDS_CONTROLS_JUMPFLY,MINECRAFT_ACTION_JUMP); 242 } 243 else 244 { 245 PositionText(iPad,IDS_CONTROLS_JUMP,MINECRAFT_ACTION_JUMP); 246 } 247 PositionText(iPad,IDS_CONTROLS_INVENTORY,MINECRAFT_ACTION_INVENTORY); 248 PositionText(iPad,IDS_CONTROLS_PAUSE,MINECRAFT_ACTION_PAUSEMENU); 249 if(m_bCreativeMode) 250 { 251 PositionText(iPad,IDS_CONTROLS_SNEAKFLY,MINECRAFT_ACTION_SNEAK_TOGGLE); 252 } 253 else 254 { 255 PositionText(iPad,IDS_CONTROLS_SNEAK,MINECRAFT_ACTION_SNEAK_TOGGLE); 256 } 257 PositionText(iPad,IDS_CONTROLS_USE,MINECRAFT_ACTION_USE); 258 PositionText(iPad,IDS_CONTROLS_ACTION,MINECRAFT_ACTION_ACTION); 259 PositionText(iPad,IDS_CONTROLS_HELDITEM,MINECRAFT_ACTION_RIGHT_SCROLL); 260 PositionText(iPad,IDS_CONTROLS_HELDITEM,MINECRAFT_ACTION_LEFT_SCROLL); 261 PositionText(iPad,IDS_CONTROLS_DROP,MINECRAFT_ACTION_DROP); 262 PositionText(iPad,IDS_CONTROLS_CRAFTING,MINECRAFT_ACTION_CRAFTING); 263 PositionText(iPad,IDS_CONTROLS_THIRDPERSON,MINECRAFT_ACTION_RENDER_THIRD_PERSON); 264 PositionText(iPad,IDS_CONTROLS_PLAYERS,MINECRAFT_ACTION_GAME_INFO); 265 266 // Swap for southpaw. 267 if ( app.GetGameSettings(m_iPad,eGameSetting_ControlSouthPaw) ) 268 { 269 // Move 270 PositionText(iPad,IDS_CONTROLS_LOOK,MINECRAFT_ACTION_RIGHT); 271 // Look 272 PositionText(iPad,IDS_CONTROLS_MOVE,MINECRAFT_ACTION_LOOK_RIGHT); 273 } 274 else // Normal right handed. 275 { 276 // Move 277 PositionText(iPad,IDS_CONTROLS_MOVE,MINECRAFT_ACTION_RIGHT); 278 // Look 279 PositionText(iPad,IDS_CONTROLS_LOOK,MINECRAFT_ACTION_LOOK_RIGHT); 280 } 281 282 bool layoutHasDpadFly; 283#ifdef __PSVITA__ 284 layoutHasDpadFly = m_iCurrentNavigatedControlsLayout == 1; 285#else 286 layoutHasDpadFly = m_iCurrentNavigatedControlsLayout == 0; 287#endif 288 289 // If we're in controls mode 1, and creative mode show the dpad for Creative Mode 290 if(m_bCreativeMode && layoutHasDpadFly) 291 { 292 PositionText(iPad,IDS_CONTROLS_DPAD,MINECRAFT_ACTION_DPAD_LEFT); 293 } 294 m_bLayoutChanged = false; 295} 296 297void UIScene_ControlsMenu::PositionText(int iPad,int iTextID, unsigned char ucAction) 298{ 299 unsigned int uiVal = InputManager.GetGameJoypadMaps(m_iCurrentNavigatedControlsLayout, ucAction); 300 301 if (uiVal & _360_JOY_BUTTON_A) PositionTextDirect(iPad, iTextID, e_PadA, true); 302 if (uiVal & _360_JOY_BUTTON_B) PositionTextDirect(iPad, iTextID, e_PadB, true); 303 if (uiVal & _360_JOY_BUTTON_X) PositionTextDirect(iPad, iTextID, e_PadX, true); 304 if (uiVal & _360_JOY_BUTTON_Y) PositionTextDirect(iPad, iTextID, e_PadY, true); 305 if (uiVal & _360_JOY_BUTTON_BACK) 306 { 307#ifdef __ORBIS__ 308 PositionTextDirect(iPad, iTextID, (InputManager.UsingRemoteVita() ? e_PadTouch : e_PadBack), true); 309#else 310 PositionTextDirect(iPad, iTextID, e_PadBack, true); 311#endif 312 } 313 if (uiVal & _360_JOY_BUTTON_START) PositionTextDirect(iPad, iTextID, e_PadStart, true); 314 if (uiVal & _360_JOY_BUTTON_RB) PositionTextDirect(iPad, iTextID, e_PadRB, true); 315 if (uiVal & _360_JOY_BUTTON_LB) PositionTextDirect(iPad, iTextID, e_PadLB, true); 316 if (uiVal & _360_JOY_BUTTON_RTHUMB) PositionTextDirect(iPad, iTextID, e_PadRS_1, true); 317 if (uiVal & _360_JOY_BUTTON_LTHUMB) PositionTextDirect(iPad, iTextID, e_PadLS_1, true); 318 // Look 319 if (uiVal & _360_JOY_BUTTON_RSTICK_RIGHT) PositionTextDirect(iPad, iTextID, e_PadRS_2, true); 320 // Move 321 if (uiVal & _360_JOY_BUTTON_LSTICK_RIGHT) PositionTextDirect(iPad, iTextID, e_PadLS_2, true); 322 if (uiVal & _360_JOY_BUTTON_RT) PositionTextDirect(iPad, iTextID, e_PadRT, true); 323 if (uiVal & _360_JOY_BUTTON_LT) PositionTextDirect(iPad, iTextID, e_PadLT, true); 324 if (uiVal & _360_JOY_BUTTON_DPAD_RIGHT) PositionTextDirect(iPad, iTextID, e_PadDPadRight, true); 325 if (uiVal & _360_JOY_BUTTON_DPAD_LEFT) PositionTextDirect(iPad, iTextID, e_PadDPadLeft, true); 326 if (uiVal & _360_JOY_BUTTON_DPAD_UP) PositionTextDirect(iPad, iTextID, e_PadDPadUp, true); 327 if (uiVal & _360_JOY_BUTTON_DPAD_DOWN) PositionTextDirect(iPad, iTextID, e_PadDPadDown, true); 328 } 329 330void UIScene_ControlsMenu::PositionTextDirect(int iPad,int iTextID, int iControlDetailsIndex, bool bShow) 331{ 332 LPCWSTR text = app.GetString(iTextID); 333 334 m_labelsPad[iControlDetailsIndex].setLabel(text); 335 m_controlLines[iControlDetailsIndex].setVisible(bShow); 336}