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