the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 342 lines 8.7 kB view raw
1#include "stdafx.h" 2#include "UI.h" 3#include "UIScene_QuadrantSignin.h" 4#include "..\..\Minecraft.h" 5#if defined(__ORBIS__) 6#include "Common\Network\Sony\SonyHttp.h" 7#endif 8 9UIScene_QuadrantSignin::UIScene_QuadrantSignin(int iPad, void *_initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) 10{ 11 // Setup all the Iggy references we need for this scene 12 initialiseMovie(); 13 14 m_signInInfo = *((SignInInfo *)_initData); 15 16 m_bIgnoreInput = false; 17 18 m_lastRequestedAvatar = -1; 19 20 _initQuadrants(); 21 22#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__) 23 if(InputManager.IsCircleCrossSwapped()) 24 { 25 IggyDataValue result; 26 IggyDataValue value[1]; 27 value[0].type = IGGY_DATATYPE_boolean; 28 value[0].boolval = true; 29 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetABSwap , 1 , value ); 30 } 31#endif 32 33 parentLayer->addComponent(iPad,eUIComponent_MenuBackground); 34} 35 36UIScene_QuadrantSignin::~UIScene_QuadrantSignin() 37{ 38 m_parentLayer->removeComponent(eUIComponent_MenuBackground); 39} 40 41wstring UIScene_QuadrantSignin::getMoviePath() 42{ 43 return L"QuadrantSignin"; 44} 45 46void UIScene_QuadrantSignin::updateTooltips() 47{ 48 ui.SetTooltips(m_iPad, IDS_TOOLTIPS_CONTINUE, IDS_TOOLTIPS_CANCEL); 49} 50 51// Returns true if this scene has focus for the pad passed in 52bool UIScene_QuadrantSignin::hasFocus(int iPad) 53{ 54 // Allow input from any controller 55 return bHasFocus; 56} 57 58bool UIScene_QuadrantSignin::hidesLowerScenes() 59{ 60 // This is a Modal dialog, so don't need to hide the scene behind 61 return false; 62} 63 64void UIScene_QuadrantSignin::tick() 65{ 66 if(!getMovie()) return; 67 68 UIScene::tick(); 69 70 updateState(); 71} 72 73void UIScene_QuadrantSignin::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled) 74{ 75 app.DebugPrintf("UIScene_QuadrantSignin handling input for pad %d, key %d, repeat- %s, pressed- %s, released- %s\n", iPad, key, repeat?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE"); 76 77 if(!m_bIgnoreInput) 78 { 79 ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released); 80 81 switch(key) 82 { 83 case ACTION_MENU_CANCEL: 84 { 85 if(pressed) 86 { 87#ifdef _XBOX_ONE 88 if(InputManager.IsPadLocked(iPad)) 89 { 90 if(iPad != ProfileManager.GetPrimaryPad()) 91 { 92 ProfileManager.RemoveGamepadFromGame(iPad); 93 } 94 else 95#endif 96 { 97 m_bIgnoreInput = true; 98 m_signInInfo.Func(m_signInInfo.lpParam,false,iPad); 99 ProfileManager.CancelProfileAvatarRequest(); 100 101 navigateBack(); 102 } 103 } 104#ifdef _XBOX_ONE 105 } 106#endif 107 } 108 break; 109 case ACTION_MENU_OK: 110#ifdef __ORBIS__ 111 case ACTION_MENU_TOUCHPAD_PRESS: 112#endif 113 if(pressed) 114 { 115 m_bIgnoreInput = true; 116#ifdef _XBOX_ONE 117 if(ProfileManager.IsSignedIn(iPad)&&InputManager.IsPadLocked(iPad)) 118#else 119 if(ProfileManager.IsSignedIn(iPad)) 120#endif 121 { 122 app.DebugPrintf("Signed in pad pressed\n"); 123 ProfileManager.CancelProfileAvatarRequest(); 124 125#ifdef _XBOX_ONE 126 // On Durango, if we don't navigate forward here, then when we are on the main menu, it (re)gains focus & that causes our users to get cleared 127 ui.NavigateToScene(m_iPad, eUIScene_Timer); 128#endif 129 navigateBack(); 130 m_signInInfo.Func(m_signInInfo.lpParam,true,m_iPad); 131 } 132 else 133 { 134#ifdef _XBOX_ONE 135 if(ProfileManager.IsSignedIn(0)&&!InputManager.IsPadLocked(0)) 136 { 137 app.DebugPrintf("Signed in pad with no controller bound pressed\n"); 138 ProfileManager.RequestSignInUI(false, false, false, true, false,&UIScene_QuadrantSignin::SignInReturned, this, iPad); 139 } 140 else 141#endif 142 { 143 app.DebugPrintf("Non-signed in pad pressed\n"); 144 ProfileManager.RequestSignInUI(false, false, false, true, true,&UIScene_QuadrantSignin::SignInReturned, this, iPad); 145 } 146 } 147 } 148 break; 149 case ACTION_MENU_UP: 150 case ACTION_MENU_DOWN: 151 if(pressed) 152 { 153 sendInputToMovie(key, repeat, pressed, released); 154 } 155 break; 156 } 157 } 158 159 handled = true; 160} 161 162#ifdef _XBOX_ONE 163int UIScene_QuadrantSignin::SignInReturned(void *pParam,bool bContinue, int iPad, int iController) 164#else 165int UIScene_QuadrantSignin::SignInReturned(void *pParam,bool bContinue, int iPad) 166#endif 167{ 168 app.DebugPrintf("SignInReturned for pad %d\n", iPad); 169 170 UIScene_QuadrantSignin *pClass = (UIScene_QuadrantSignin *)pParam; 171 172#ifdef _XBOX_ONE 173 if(bContinue && pClass->m_signInInfo.requireOnline && ProfileManager.IsSignedIn(iPad)) 174 { 175 if( !InputManager.IsPadLocked(iPad) ) 176 { 177 ProfileManager.ForcePrimaryPadController(iController); 178 } 179 ProfileManager.CheckMultiplayerPrivileges(iPad, true, &checkAllPrivilegesCallback, pClass); 180 } 181 else 182#endif 183 { 184 pClass->m_bIgnoreInput = false; 185 pClass->updateState(); 186 } 187 188 return 0; 189} 190 191#ifdef _XBOX_ONE 192void UIScene_QuadrantSignin::checkAllPrivilegesCallback(LPVOID lpParam, bool hasPrivileges, int iPad) 193{ 194 UIScene_QuadrantSignin* pClass = (UIScene_QuadrantSignin*)lpParam; 195 196 if(!hasPrivileges) 197 { 198 ProfileManager.RemoveGamepadFromGame(iPad); 199 } 200 pClass->m_bIgnoreInput = false; 201 pClass->updateState(); 202} 203#endif 204 205void UIScene_QuadrantSignin::updateState() 206{ 207 for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) 208 { 209 if(ProfileManager.IsSignedIn(i) && InputManager.IsPadConnected(i)) 210 { 211 //app.DebugPrintf("Index %d is signed in, display name - '%s'\n", i, ProfileManager.GetDisplayName(i).data()); 212 213#ifdef _XBOX_ONE 214 if(!InputManager.IsPadLocked(i)) 215 { 216 setControllerState(i, eControllerStatus_PressToJoin_LoggedIn); 217 } 218 else 219#endif 220 { 221 setControllerState(i, eControllerStatus_PlayerDetails); 222 } 223 224 m_labelDisplayName[i].setLabel(ProfileManager.GetDisplayName(i)); 225 //m_buttonControllers[i].setLabel(app.GetString(IDS_TOOLTIPS_CONTINUE),i); 226 227 if(!m_iconRequested[i]) 228 { 229 app.DebugPrintf(app.USER_SR, "Requesting avatar for %d\n", i); 230 if(ProfileManager.GetProfileAvatar(i, &UIScene_QuadrantSignin::AvatarReturned, this)) 231 { 232 m_iconRequested[i] = true; 233 m_lastRequestedAvatar = i; 234 } 235 } 236 } 237 else if(InputManager.IsPadConnected(i)) 238 { 239 //app.DebugPrintf("Index %d is not signed in\n", i); 240 241 setControllerState(i, eControllerStatus_PressToJoin); 242 m_labelDisplayName[i].setLabel(L""); 243 m_iconRequested[i] = false; 244 } 245 else 246 { 247 //app.DebugPrintf("Index %d is not connected\n", i); 248 249 setControllerState(i, eControllerStatus_ConnectController); 250 m_iconRequested[i] = false; 251 } 252 } 253} 254 255void UIScene_QuadrantSignin::setControllerState(int iPad, EControllerStatus state) 256{ 257 if(m_controllerStatus[iPad] != state) 258 { 259 m_controllerStatus[iPad] = state; 260 261 IggyDataValue result; 262 IggyDataValue value[2]; 263 value[0].type = IGGY_DATATYPE_number; 264 value[0].number = iPad; 265 266 value[1].type = IGGY_DATATYPE_number; 267 value[1].number = (int)state; 268 269 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetControllerStatus , 2 , value ); 270 } 271} 272 273int UIScene_QuadrantSignin::AvatarReturned(LPVOID lpParam,PBYTE pbThumbnail,DWORD dwThumbnailBytes) 274{ 275 UIScene_QuadrantSignin *pClass = (UIScene_QuadrantSignin *)lpParam; 276 app.DebugPrintf(app.USER_SR,"AvatarReturned callback\n"); 277 if(pbThumbnail != NULL) 278 { 279 // 4J-JEV - Added to ensure each new texture gets a unique name. 280 static unsigned int quadrantImageCount = 0; 281 282 wchar_t iconName[32]; 283 swprintf(iconName,32,L"quadrantImage%05d",quadrantImageCount++); 284 285 pClass->registerSubstitutionTexture(iconName,pbThumbnail,dwThumbnailBytes,true); 286 pClass->m_bitmapIcon[pClass->m_lastRequestedAvatar].setTextureName(iconName); 287 } 288 289 pClass->m_lastRequestedAvatar = -1; 290 291 return 0; 292} 293 294void UIScene_QuadrantSignin::_initQuadrants() 295{ 296 for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) 297 { 298 m_iconRequested[i] = false; 299 300 m_labelPressToJoin[i].init(IDS_MUST_SIGN_IN_TITLE); 301 m_labelConnectController[i].init(L""); 302 m_labelAccountType[i].init(L""); 303 304 m_controllerStatus[i] = eControllerStatus_ConnectController; 305 306 if(ProfileManager.IsSignedIn(i)) 307 { 308 app.DebugPrintf("Index %d is signed in\n", i); 309 310#ifdef _XBOX_ONE 311 if(!InputManager.IsPadLocked(i)) 312 { 313 setControllerState(i, eControllerStatus_PressToJoin_LoggedIn); 314 } 315 else 316#endif 317 { 318 setControllerState(i, eControllerStatus_PlayerDetails); 319 } 320 321 m_labelDisplayName[i].init(ProfileManager.GetDisplayName(i)); 322 } 323 else if(InputManager.IsPadConnected(i)) 324 { 325 app.DebugPrintf("Index %d is not signed in\n", i); 326 327 setControllerState(i, eControllerStatus_PressToJoin); 328 m_labelDisplayName[i].init(L""); 329 } 330 else 331 { 332 app.DebugPrintf("Index %d is not connected\n", i); 333 334 setControllerState(i, eControllerStatus_ConnectController); 335 } 336 } 337} 338 339void UIScene_QuadrantSignin::handleReload() 340{ 341 _initQuadrants(); 342}