the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 655 lines 21 kB view raw
1#include "stdafx.h" 2#include "UI.h" 3#include "UIScene_LaunchMoreOptionsMenu.h" 4 5#define GAME_CREATE_ONLINE_TIMER_ID 0 6#define GAME_CREATE_ONLINE_TIMER_TIME 100 7 8#ifdef _LARGE_WORLDS 9int m_iWorldSizeTitleA[4] = 10{ 11 IDS_WORLD_SIZE_TITLE_CLASSIC, 12 IDS_WORLD_SIZE_TITLE_SMALL, 13 IDS_WORLD_SIZE_TITLE_MEDIUM, 14 IDS_WORLD_SIZE_TITLE_LARGE, 15}; 16#endif 17 18UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) 19{ 20 // Setup all the Iggy references we need for this scene 21 initialiseMovie(); 22 23 m_params = (LaunchMoreOptionsMenuInitData *)initData; 24 25 m_labelWorldOptions.init(app.GetString(IDS_WORLD_OPTIONS)); 26 27 IggyDataValue result; 28 29#ifdef _LARGE_WORLDS 30 IggyDataValue value[2]; 31 value[0].type = IGGY_DATATYPE_number; 32 value[0].number = m_params->bGenerateOptions ? 0 : 1; 33 value[1].type = IGGY_DATATYPE_boolean; 34 value[1].boolval = false; 35 if(m_params->currentWorldSize == e_worldSize_Classic || 36 m_params->currentWorldSize == e_worldSize_Small || 37 m_params->currentWorldSize == e_worldSize_Medium ) 38 { 39 // don't show the increase world size stuff if we're already large, or the size is unknown. 40 value[1].boolval = true; 41 } 42 43 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetMenuType , 2 , value ); 44#else 45 IggyDataValue value[1]; 46 value[0].type = IGGY_DATATYPE_number; 47 value[0].number = m_params->bGenerateOptions ? 0 : 1; 48 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetMenuType , 1 , value ); 49#endif 50 51 m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_params->iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad); 52 53 bool bOnlineGame, bInviteOnly, bAllowFriendsOfFriends; 54 bOnlineGame = m_params->bOnlineGame; 55 bInviteOnly = m_params->bInviteOnly; 56 bAllowFriendsOfFriends = m_params->bAllowFriendsOfFriends; 57 58 // 4J-PB - to stop an offline game being able to select the online flag 59 if(ProfileManager.IsSignedInLive(m_params->iPad) == false) 60 { 61 m_checkboxes[eLaunchCheckbox_Online].SetEnable(false); 62 } 63 64 if ( m_params->bOnlineSettingChangedBySystem && !m_bMultiplayerAllowed ) 65 { 66 // 4J-JEV: Disable and uncheck these boxes if they can't play multiplayer. 67 m_checkboxes[eLaunchCheckbox_Online].SetEnable(false); 68 m_checkboxes[eLaunchCheckbox_InviteOnly].SetEnable(false); 69 m_checkboxes[eLaunchCheckbox_AllowFoF].SetEnable(false); 70 71 bOnlineGame = bInviteOnly = bAllowFriendsOfFriends = false; 72 } 73 else if(!m_params->bOnlineGame) 74 { 75 m_checkboxes[eLaunchCheckbox_InviteOnly].SetEnable(false); 76 m_checkboxes[eLaunchCheckbox_AllowFoF].SetEnable(false); 77 } 78 79 // Init cheats 80 m_bUpdateCheats = false; 81 // Update cheat checkboxes 82 UpdateCheats(); 83 84 m_checkboxes[eLaunchCheckbox_Online].init(app.GetString(IDS_ONLINE_GAME),eLaunchCheckbox_Online,bOnlineGame); 85 m_checkboxes[eLaunchCheckbox_InviteOnly].init(app.GetString(IDS_INVITE_ONLY),eLaunchCheckbox_InviteOnly,bInviteOnly); 86 m_checkboxes[eLaunchCheckbox_AllowFoF].init(app.GetString(IDS_ALLOWFRIENDSOFFRIENDS),eLaunchCheckbox_AllowFoF,bAllowFriendsOfFriends); 87 m_checkboxes[eLaunchCheckbox_PVP].init(app.GetString(IDS_PLAYER_VS_PLAYER),eLaunchCheckbox_PVP,m_params->bPVP); 88 m_checkboxes[eLaunchCheckbox_TrustSystem].init(app.GetString(IDS_TRUST_PLAYERS),eLaunchCheckbox_TrustSystem,m_params->bTrust); 89 m_checkboxes[eLaunchCheckbox_FireSpreads].init(app.GetString(IDS_FIRE_SPREADS),eLaunchCheckbox_FireSpreads,m_params->bFireSpreads); 90 m_checkboxes[eLaunchCheckbox_TNT].init(app.GetString(IDS_TNT_EXPLODES),eLaunchCheckbox_TNT,m_params->bTNT); 91 m_checkboxes[eLaunchCheckbox_HostPrivileges].init(app.GetString(IDS_HOST_PRIVILEGES),eLaunchCheckbox_HostPrivileges,m_params->bHostPrivileges); 92 m_checkboxes[eLaunchCheckbox_ResetNether].init(app.GetString(IDS_RESET_NETHER),eLaunchCheckbox_ResetNether,m_params->bResetNether); 93 m_checkboxes[eLaunchCheckbox_Structures].init(app.GetString(IDS_GENERATE_STRUCTURES),eLaunchCheckbox_Structures,m_params->bStructures); 94 m_checkboxes[eLaunchCheckbox_FlatWorld].init(app.GetString(IDS_SUPERFLAT_WORLD),eLaunchCheckbox_FlatWorld,m_params->bFlatWorld); 95 m_checkboxes[eLaunchCheckbox_BonusChest].init(app.GetString(IDS_BONUS_CHEST),eLaunchCheckbox_BonusChest,m_params->bBonusChest); 96 97 m_checkboxes[eLaunchCheckbox_KeepInventory].init(app.GetString(IDS_KEEP_INVENTORY), eLaunchCheckbox_KeepInventory, m_params->bKeepInventory); 98 m_checkboxes[eLaunchCheckbox_MobSpawning].init(app.GetString(IDS_MOB_SPAWNING), eLaunchCheckbox_MobSpawning, m_params->bDoMobSpawning); 99 m_checkboxes[eLaunchCheckbox_MobLoot].init(app.GetString(IDS_MOB_LOOT), eLaunchCheckbox_MobLoot, m_params->bDoMobLoot); 100 m_checkboxes[eLaunchCheckbox_MobGriefing].init(app.GetString(IDS_MOB_GRIEFING), eLaunchCheckbox_MobGriefing, m_params->bMobGriefing); 101 m_checkboxes[eLaunchCheckbox_TileDrops].init(app.GetString(IDS_TILE_DROPS), eLaunchCheckbox_TileDrops, m_params->bDoTileDrops); 102 m_checkboxes[eLaunchCheckbox_NaturalRegeneration].init(app.GetString(IDS_NATURAL_REGEN), eLaunchCheckbox_NaturalRegeneration, m_params->bNaturalRegeneration); 103 m_checkboxes[eLaunchCheckbox_DayLightCycle].init(app.GetString(IDS_DAYLIGHT_CYCLE), eLaunchCheckbox_DayLightCycle, m_params->bDoDaylightCycle); 104 105 m_labelGameOptions.init( app.GetString(IDS_GAME_OPTIONS) ); 106 m_labelSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_SEED)); 107 m_labelRandomSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_RANDOM_SEED)); 108 m_editSeed.init(m_params->seed, eControl_EditSeed); 109 110#ifdef _LARGE_WORLDS 111 m_labelWorldSize.init(app.GetString(IDS_WORLD_SIZE)); 112 m_sliderWorldSize.init(app.GetString(m_iWorldSizeTitleA[m_params->worldSize]),eControl_WorldSize,0,3,m_params->worldSize); 113 114 m_checkboxes[eLaunchCheckbox_DisableSaving].init( app.GetString(IDS_DISABLE_SAVING), eLaunchCheckbox_DisableSaving, m_params->bDisableSaving ); 115 116 if(m_params->currentWorldSize != e_worldSize_Unknown) 117 { 118 m_labelWorldResize.init(app.GetString(IDS_INCREASE_WORLD_SIZE)); 119 int min= int(m_params->currentWorldSize)-1; 120 int max=3; 121 int curr = int(m_params->newWorldSize)-1; 122 m_sliderWorldResize.init(app.GetString(m_iWorldSizeTitleA[curr]),eControl_WorldResize,min,max,curr); 123 m_checkboxes[eLaunchCheckbox_WorldResizeType].init(app.GetString(IDS_INCREASE_WORLD_SIZE_OVERWRITE_EDGES),eLaunchCheckbox_WorldResizeType,m_params->newWorldSizeOverwriteEdges); 124 } 125#endif 126 127 // Only the Xbox 360 needs a reset nether 128 // 4J-PB - PS3 needs it now 129 // #ifndef _XBOX 130 // if(!m_params->bGenerateOptions) removeControl( &m_checkboxes[eLaunchCheckbox_ResetNether], false ); 131 // #endif 132 133 m_tabIndex = m_params->bGenerateOptions ? TAB_WORLD_OPTIONS : TAB_GAME_OPTIONS; 134 135 // set the default text 136#ifdef _LARGE_WORLDS 137 wstring wsText=L""; 138 if(m_params->bGenerateOptions) 139 { 140 wsText = app.GetString(IDS_GAMEOPTION_SEED); 141 } 142 else 143 { 144 wsText = app.GetString(IDS_GAMEOPTION_ONLINE); 145 } 146#else 147 wstring wsText=app.GetString(IDS_GAMEOPTION_ONLINE); 148#endif 149 EHTMLFontSize size = eHTMLSize_Normal; 150 if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) 151 { 152 size = eHTMLSize_Splitscreen; 153 } 154 wchar_t startTags[64]; 155 swprintf(startTags,64,L"<font color=\"#%08x\">",app.GetHTMLColour(eHTMLColor_White)); 156 wsText= startTags + wsText; 157 if (m_tabIndex == TAB_WORLD_OPTIONS) 158 m_labelDescription_WorldOptions.setLabel(wsText); 159 else 160 m_labelDescription_GameOptions.setLabel(wsText); 161 162 addTimer(GAME_CREATE_ONLINE_TIMER_ID,GAME_CREATE_ONLINE_TIMER_TIME); 163 164#ifdef __PSVITA__ 165 // initialise vita tab controls with ids 166 m_TouchTabWorld.init(ETouchInput_TabWorld); 167 m_TouchTabGame.init(ETouchInput_TabGame); 168 169 ui.TouchBoxRebuild(this); 170#endif 171 172 m_bIgnoreInput = false; 173} 174 175void UIScene_LaunchMoreOptionsMenu::updateTooltips() 176{ 177 int changeTabTooltip = -1; 178 179 // Set tooltip for change tab (only two tabs) 180 if (m_tabIndex == TAB_GAME_OPTIONS) 181 { 182 changeTabTooltip = IDS_WORLD_OPTIONS; 183 } 184 else 185 { 186 changeTabTooltip = IDS_GAME_OPTIONS; 187 } 188 189 // If there's a change tab tooltip, left bumper symbol should show but not the text (-2) 190 int lb = changeTabTooltip == -1 ? -1 : -2; 191 192 ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT, IDS_TOOLTIPS_BACK, -1, -1, -1, -1, lb, changeTabTooltip); 193} 194 195void UIScene_LaunchMoreOptionsMenu::updateComponents() 196{ 197 m_parentLayer->showComponent(m_iPad,eUIComponent_Panorama,true); 198//#ifdef _LARGE_WORLDS 199// m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,true); 200//#else 201 m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,false); 202//#endif 203} 204 205wstring UIScene_LaunchMoreOptionsMenu::getMoviePath() 206{ 207 return L"LaunchMoreOptionsMenu"; 208} 209 210void UIScene_LaunchMoreOptionsMenu::tick() 211{ 212 UIScene::tick(); 213 214 bool bMultiplayerAllowed = ProfileManager.IsSignedInLive(m_params->iPad) && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad); 215 216 if (bMultiplayerAllowed != m_bMultiplayerAllowed) 217 { 218 m_checkboxes[ eLaunchCheckbox_Online].SetEnable(bMultiplayerAllowed); 219 m_checkboxes[eLaunchCheckbox_InviteOnly].SetEnable(bMultiplayerAllowed); 220 m_checkboxes[ eLaunchCheckbox_AllowFoF].SetEnable(bMultiplayerAllowed); 221 222 if (bMultiplayerAllowed) 223 { 224 m_checkboxes[ eLaunchCheckbox_Online].setChecked(true); 225 m_checkboxes[eLaunchCheckbox_AllowFoF].setChecked(true); 226 } 227 228 m_bMultiplayerAllowed = bMultiplayerAllowed; 229 } 230 231 // Check cheats 232 if (m_bUpdateCheats) 233 { 234 UpdateCheats(); 235 m_bUpdateCheats = false; 236 } 237 // check online 238 if(m_bUpdateOnline) 239 { 240 UpdateOnline(); 241 m_bUpdateOnline = false; 242 } 243} 244 245void UIScene_LaunchMoreOptionsMenu::handleDestroy() 246{ 247#ifdef __PSVITA__ 248 app.DebugPrintf("missing InputManager.DestroyKeyboard on Vita !!!!!!\n"); 249#endif 250 251 // so shut down the keyboard if it is displayed 252#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO) 253 InputManager.DestroyKeyboard(); 254#endif 255} 256 257void UIScene_LaunchMoreOptionsMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled) 258{ 259 if(m_bIgnoreInput) return; 260 261 //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"); 262 ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released); 263 264 switch(key) 265 { 266 case ACTION_MENU_CANCEL: 267 if(pressed) 268 { 269 navigateBack(); 270 handled = true; 271 } 272 break; 273 case ACTION_MENU_OK: 274#ifdef __ORBIS__ 275 case ACTION_MENU_TOUCHPAD_PRESS: 276#endif 277 // 4J-JEV: Inform user why their game must be offline. 278#if defined _XBOX_ONE 279 { 280 UIControl_CheckBox *checkboxOnline = &m_checkboxes[eLaunchCheckbox_Online]; 281 if ( pressed && controlHasFocus( checkboxOnline->getId()) && !checkboxOnline->IsEnabled() ) 282 { 283 UINT uiIDA[1] = { IDS_CONFIRM_OK }; 284 ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad); 285 } 286 } 287#endif 288 289 case ACTION_MENU_UP: 290 case ACTION_MENU_DOWN: 291 case ACTION_MENU_LEFT: 292 case ACTION_MENU_RIGHT: 293 case ACTION_MENU_PAGEUP: 294 case ACTION_MENU_PAGEDOWN: 295 case ACTION_MENU_OTHER_STICK_UP: 296 case ACTION_MENU_OTHER_STICK_DOWN: 297 sendInputToMovie(key, repeat, pressed, released); 298 handled = true; 299 break; 300 case ACTION_MENU_LEFT_SCROLL: 301 case ACTION_MENU_RIGHT_SCROLL: 302 if(pressed) 303 { 304 // Toggle tab index 305 m_tabIndex = m_tabIndex == 0 ? 1 : 0; 306 updateTooltips(); 307 IggyDataValue result; 308 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcChangeTab , 0 , NULL ); 309 } 310 break; 311 } 312} 313 314#ifdef __PSVITA__ 315void UIScene_LaunchMoreOptionsMenu::handleTouchInput(unsigned int iPad, S32 x, S32 y, int iId, bool bPressed, bool bRepeat, bool bReleased) 316{ 317 if(bPressed) 318 { 319 switch(iId) 320 { 321 case ETouchInput_TabWorld: 322 case ETouchInput_TabGame: 323 // Toggle tab index 324 int iNewTabIndex = (iId == ETouchInput_TabWorld) ? 0 : 1; 325 if(m_tabIndex != iNewTabIndex) 326 { 327 m_tabIndex = iNewTabIndex; 328 updateTooltips(); 329 IggyDataValue result; 330 IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcChangeTab , 0 , NULL ); 331 } 332 ui.TouchBoxRebuild(this); 333 break; 334 } 335 } 336} 337 338UIControl* UIScene_LaunchMoreOptionsMenu::GetMainPanel() 339{ 340 if(m_tabIndex == 0) 341 return &m_worldOptions; 342 else 343 return &m_gameOptions; 344} 345#endif 346 347void UIScene_LaunchMoreOptionsMenu::handleCheckboxToggled(F64 controlId, bool selected) 348{ 349 //CD - Added for audio 350 ui.PlayUISFX(eSFX_Press); 351 352 switch((EControls)((int)controlId)) 353 { 354 case eLaunchCheckbox_Online: 355 m_params->bOnlineGame = selected; 356 m_bUpdateOnline = true; 357 break; 358 case eLaunchCheckbox_InviteOnly: 359 m_params->bInviteOnly = selected; 360 break; 361 case eLaunchCheckbox_AllowFoF: 362 m_params->bAllowFriendsOfFriends = selected; 363 break; 364 case eLaunchCheckbox_PVP: 365 m_params->bPVP = selected; 366 break; 367 case eLaunchCheckbox_TrustSystem: 368 m_params->bTrust = selected; 369 break; 370 case eLaunchCheckbox_FireSpreads: 371 m_params->bFireSpreads = selected; 372 break; 373 case eLaunchCheckbox_TNT: 374 m_params->bTNT = selected; 375 break; 376 case eLaunchCheckbox_HostPrivileges: 377 m_params->bHostPrivileges = selected; 378 m_bUpdateCheats = true; 379 break; 380 case eLaunchCheckbox_ResetNether: 381 m_params->bResetNether = selected; 382 break; 383 case eLaunchCheckbox_Structures: 384 m_params->bStructures = selected; 385 break; 386 case eLaunchCheckbox_FlatWorld: 387 m_params->bFlatWorld = selected; 388 break; 389 case eLaunchCheckbox_BonusChest: 390 m_params->bBonusChest = selected; 391 break; 392#ifdef _LARGE_WORLDS 393 case eLaunchCheckbox_DisableSaving: 394 m_params->bDisableSaving = selected; 395 break; 396 case eLaunchCheckbox_WorldResizeType: 397 m_params->newWorldSizeOverwriteEdges = selected; 398 break; 399#endif 400 case eLaunchCheckbox_KeepInventory: 401 m_params->bKeepInventory = selected; 402 break; 403 case eLaunchCheckbox_MobSpawning: 404 m_params->bDoMobSpawning = selected; 405 break; 406 case eLaunchCheckbox_MobLoot: 407 m_params->bDoMobLoot = selected; 408 case eLaunchCheckbox_MobGriefing: 409 m_params->bMobGriefing = selected; 410 break; 411 case eLaunchCheckbox_TileDrops: 412 m_params->bDoTileDrops = selected; 413 break; 414 case eLaunchCheckbox_NaturalRegeneration: 415 m_params->bNaturalRegeneration = selected; 416 break; 417 case eLaunchCheckbox_DayLightCycle: 418 m_params->bDoDaylightCycle = selected; 419 break; 420 }; 421} 422 423void UIScene_LaunchMoreOptionsMenu::handleFocusChange(F64 controlId, F64 childId) 424{ 425 int stringId = 0; 426 switch((int)controlId) 427 { 428 case eLaunchCheckbox_Online: 429 stringId = IDS_GAMEOPTION_ONLINE; 430 break; 431 case eLaunchCheckbox_InviteOnly: 432 stringId = IDS_GAMEOPTION_INVITEONLY; 433 break; 434 case eLaunchCheckbox_AllowFoF: 435 stringId = IDS_GAMEOPTION_ALLOWFOF; 436 break; 437 case eLaunchCheckbox_PVP: 438 stringId = IDS_GAMEOPTION_PVP; 439 break; 440 case eLaunchCheckbox_TrustSystem: 441 stringId = IDS_GAMEOPTION_TRUST; 442 break; 443 case eLaunchCheckbox_FireSpreads: 444 stringId = IDS_GAMEOPTION_FIRE_SPREADS; 445 break; 446 case eLaunchCheckbox_TNT: 447 stringId = IDS_GAMEOPTION_TNT_EXPLODES; 448 break; 449 case eLaunchCheckbox_HostPrivileges: 450 stringId = IDS_GAMEOPTION_HOST_PRIVILEGES; 451 break; 452 case eLaunchCheckbox_ResetNether: 453 stringId = IDS_GAMEOPTION_RESET_NETHER; 454 break; 455 case eLaunchCheckbox_Structures: 456 stringId = IDS_GAMEOPTION_STRUCTURES; 457 break; 458 case eLaunchCheckbox_FlatWorld: 459 stringId = IDS_GAMEOPTION_SUPERFLAT; 460 break; 461 case eLaunchCheckbox_BonusChest: 462 stringId = IDS_GAMEOPTION_BONUS_CHEST; 463 break; 464 case eLaunchCheckbox_KeepInventory: 465 stringId = IDS_GAMEOPTION_KEEP_INVENTORY; 466 break; 467 case eLaunchCheckbox_MobSpawning: 468 stringId = IDS_GAMEOPTION_MOB_SPAWNING; 469 break; 470 case eLaunchCheckbox_MobLoot: 471 stringId = IDS_GAMEOPTION_MOB_LOOT; // PLACEHOLDER 472 break; 473 case eLaunchCheckbox_MobGriefing: 474 stringId = IDS_GAMEOPTION_MOB_GRIEFING; // PLACEHOLDER 475 break; 476 case eLaunchCheckbox_TileDrops: 477 stringId = IDS_GAMEOPTION_TILE_DROPS; 478 break; 479 case eLaunchCheckbox_NaturalRegeneration: 480 stringId = IDS_GAMEOPTION_NATURAL_REGEN; 481 break; 482 case eLaunchCheckbox_DayLightCycle: 483 stringId = IDS_GAMEOPTION_DAYLIGHT_CYCLE; 484 break; 485 case eControl_EditSeed: 486 stringId = IDS_GAMEOPTION_SEED; 487 break; 488#ifdef _LARGE_WORLDS 489 case eControl_WorldSize: 490 stringId = IDS_GAMEOPTION_WORLD_SIZE; 491 break; 492 case eControl_WorldResize: 493 stringId = IDS_GAMEOPTION_INCREASE_WORLD_SIZE; 494 break; 495 case eLaunchCheckbox_DisableSaving: 496 stringId = IDS_GAMEOPTION_DISABLE_SAVING; 497 break; 498 case eLaunchCheckbox_WorldResizeType: 499 stringId = IDS_GAMEOPTION_INCREASE_WORLD_SIZE_OVERWRITE_EDGES; 500 break; 501#endif 502 }; 503 504 wstring wsText=app.GetString(stringId); 505 EHTMLFontSize size = eHTMLSize_Normal; 506 if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) 507 { 508 size = eHTMLSize_Splitscreen; 509 } 510 wchar_t startTags[64]; 511 swprintf(startTags,64,L"<font color=\"#%08x\">",app.GetHTMLColour(eHTMLColor_White)); 512 wsText = startTags + wsText; 513 514 if (m_tabIndex == TAB_WORLD_OPTIONS) 515 m_labelDescription_WorldOptions.setLabel(wsText); 516 else 517 m_labelDescription_GameOptions.setLabel(wsText); 518} 519 520void UIScene_LaunchMoreOptionsMenu::handleTimerComplete(int id) 521{ 522 /*switch(id) //4J-JEV: Moved this over to the tick. 523 { 524 case GAME_CREATE_ONLINE_TIMER_ID: 525 { 526 bool bMultiplayerAllowed 527 = ProfileManager.IsSignedInLive(m_params->iPad) 528 && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad); 529 530 if (bMultiplayerAllowed != m_bMultiplayerAllowed) 531 { 532 m_checkboxes[ eLaunchCheckbox_Online].SetEnable(bMultiplayerAllowed); 533 m_checkboxes[eLaunchCheckbox_InviteOnly].SetEnable(bMultiplayerAllowed); 534 m_checkboxes[ eLaunchCheckbox_AllowFoF].SetEnable(bMultiplayerAllowed); 535 536 m_checkboxes[eLaunchCheckbox_Online].setChecked(bMultiplayerAllowed); 537 538 m_bMultiplayerAllowed = bMultiplayerAllowed; 539 } 540 } 541 break; 542 };*/ 543} 544 545int UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallback(LPVOID lpParam,bool bRes) 546{ 547 UIScene_LaunchMoreOptionsMenu *pClass=(UIScene_LaunchMoreOptionsMenu *)lpParam; 548 pClass->m_bIgnoreInput=false; 549 // 4J HEG - No reason to set value if keyboard was cancelled 550 if (bRes) 551 { 552#ifdef __PSVITA__ 553 //CD - Changed to 2048 [SCE_IME_MAX_TEXT_LENGTH] 554 uint16_t pchText[2048]; 555 ZeroMemory(pchText, 2048 * sizeof(uint16_t) ); 556#else 557 uint16_t pchText[128]; 558 ZeroMemory(pchText, 128 * sizeof(uint16_t) ); 559#endif 560 InputManager.GetText(pchText); 561 pClass->m_editSeed.setLabel((wchar_t *)pchText); 562 pClass->m_params->seed = (wchar_t *)pchText; 563 } 564 return 0; 565} 566 567void UIScene_LaunchMoreOptionsMenu::handlePress(F64 controlId, F64 childId) 568{ 569 if(m_bIgnoreInput) return; 570 571 switch((int)controlId) 572 { 573 case eControl_EditSeed: 574 { 575 m_bIgnoreInput=true; 576#ifdef __PS3__ 577 int language = XGetLanguage(); 578 switch(language) 579 { 580 case XC_LANGUAGE_JAPANESE: 581 case XC_LANGUAGE_KOREAN: 582 case XC_LANGUAGE_TCHINESE: 583 InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD_SEED),m_editSeed.getLabel(),(DWORD)0,60,&UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallback,this,C_4JInput::EKeyboardMode_Default); 584 break; 585 default: 586 // 4J Stu - Use a different keyboard for non-asian languages so we don't have prediction on 587 InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD_SEED),m_editSeed.getLabel(),(DWORD)0,60,&UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallback,this,C_4JInput::EKeyboardMode_Alphabet_Extended); 588 break; 589 } 590#else 591 InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD_SEED),m_editSeed.getLabel(),(DWORD)0,60,&UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallback,this,C_4JInput::EKeyboardMode_Default); 592#endif 593 } 594 break; 595 } 596} 597 598 599void UIScene_LaunchMoreOptionsMenu::handleSliderMove(F64 sliderId, F64 currentValue) 600{ 601 int value = (int)currentValue; 602 switch((int)sliderId) 603 { 604 case eControl_WorldSize: 605#ifdef _LARGE_WORLDS 606 m_sliderWorldSize.handleSliderMove(value); 607 m_params->worldSize = value; 608 m_sliderWorldSize.setLabel(app.GetString(m_iWorldSizeTitleA[value])); 609#endif 610 break; 611 case eControl_WorldResize: 612#ifdef _LARGE_WORLDS 613 EGameHostOptionWorldSize changedSize = EGameHostOptionWorldSize(value+1); 614 if(changedSize >= m_params->currentWorldSize) 615 { 616 m_sliderWorldResize.handleSliderMove(value); 617 m_params->newWorldSize = EGameHostOptionWorldSize(value+1); 618 m_sliderWorldResize.setLabel(app.GetString(m_iWorldSizeTitleA[value])); 619 } 620#endif 621 break; 622 } 623} 624 625void UIScene_LaunchMoreOptionsMenu::UpdateCheats() 626{ 627 bool cheatsOn = m_params->bHostPrivileges; 628 629 m_checkboxes[eLaunchCheckbox_KeepInventory].SetEnable(cheatsOn); 630 m_checkboxes[eLaunchCheckbox_MobSpawning].SetEnable(cheatsOn); 631 m_checkboxes[eLaunchCheckbox_MobGriefing].SetEnable(cheatsOn); 632 m_checkboxes[eLaunchCheckbox_DayLightCycle].SetEnable(cheatsOn); 633 634 if (!cheatsOn) 635 { 636 // Set defaults 637 m_params->bMobGriefing = true; 638 m_params->bKeepInventory = false; 639 m_params->bDoMobSpawning = true; 640 m_params->bDoDaylightCycle = true; 641 642 m_checkboxes[eLaunchCheckbox_KeepInventory].setChecked(m_params->bKeepInventory); 643 m_checkboxes[eLaunchCheckbox_MobSpawning].setChecked(m_params->bDoMobSpawning); 644 m_checkboxes[eLaunchCheckbox_MobGriefing].setChecked(m_params->bMobGriefing); 645 m_checkboxes[eLaunchCheckbox_DayLightCycle].setChecked(m_params->bDoDaylightCycle); 646 } 647} 648 649void UIScene_LaunchMoreOptionsMenu::UpdateOnline() 650{ 651 bool bOnline = m_params->bOnlineGame; 652 653 m_checkboxes[eLaunchCheckbox_InviteOnly].SetEnable(bOnline); 654 m_checkboxes[eLaunchCheckbox_AllowFoF].SetEnable(bOnline); 655}