aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp')
-rw-r--r--Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp306
1 files changed, 306 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp b/Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp
new file mode 100644
index 00000000..08656111
--- /dev/null
+++ b/Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp
@@ -0,0 +1,306 @@
+#include "stdafx.h"
+#include "XUI_MultiGameCreate.h"
+#include "XUI_MultiGameLaunchMoreOptions.h"
+#include "..\..\TexturePackRepository.h"
+#include "..\..\Minecraft.h"
+
+#define GAME_CREATE_ONLINE_TIMER_ID 0
+#define GAME_CREATE_ONLINE_TIMER_TIME 100
+
+//----------------------------------------------------------------------------------
+// Performs initialization tasks - retrieves controls.
+//----------------------------------------------------------------------------------
+HRESULT CScene_MultiGameLaunchMoreOptions::OnInit( XUIMessageInit* pInitData, BOOL& bHandled )
+{
+ MapChildControls();
+
+ XuiControlSetText(m_CheckboxOnline,app.GetString(IDS_ONLINE_GAME));
+ XuiControlSetText(m_CheckboxInviteOnly,app.GetString(IDS_INVITE_ONLY));
+ XuiControlSetText(m_CheckboxAllowFoF,app.GetString(IDS_ALLOWFRIENDSOFFRIENDS));
+ XuiControlSetText(m_CheckboxPVP,app.GetString(IDS_PLAYER_VS_PLAYER));
+ XuiControlSetText(m_CheckboxTrustPlayers,app.GetString(IDS_TRUST_PLAYERS));
+ XuiControlSetText(m_CheckboxFireSpreads,app.GetString(IDS_FIRE_SPREADS));
+ XuiControlSetText(m_CheckboxTNTExplodes,app.GetString(IDS_TNT_EXPLODES));
+ XuiControlSetText(m_CheckboxHostPrivileges,app.GetString(IDS_HOST_PRIVILEGES));
+ XuiControlSetText(m_CheckboxResetNether,app.GetString(IDS_RESET_NETHER));
+ XuiControlSetText(m_LabelWorldOptions,app.GetString(IDS_WORLD_OPTIONS));
+ XuiControlSetText(m_CheckboxStructures,app.GetString(IDS_GENERATE_STRUCTURES));
+ XuiControlSetText(m_CheckboxFlatWorld,app.GetString(IDS_SUPERFLAT_WORLD));
+ XuiControlSetText(m_CheckboxBonusChest,app.GetString(IDS_BONUS_CHEST));
+
+ m_params = (LaunchMoreOptionsMenuInitData *)pInitData->pvInitData;
+
+ if(m_params->bGenerateOptions)
+ {
+ m_CheckboxStructures.SetEnable(TRUE);
+ m_CheckboxFlatWorld.SetEnable(TRUE);
+ m_CheckboxBonusChest.SetEnable(TRUE);
+ m_CheckboxStructures.SetCheck(m_params->bStructures);
+ m_CheckboxFlatWorld.SetCheck (m_params->bFlatWorld);
+ m_CheckboxBonusChest.SetCheck(m_params->bBonusChest);
+
+ // This is a create world, so don't need Reset Nether
+ float fHeight, fCheckboxHeight, fWidth;
+ m_CheckboxResetNether.GetBounds(&fWidth, &fCheckboxHeight);
+
+ m_HostOptionGroup.GetBounds(&fWidth, &fHeight);
+ m_HostOptionGroup.SetBounds(fWidth, fHeight - fCheckboxHeight);
+
+ GetBounds(&fWidth,&fHeight);
+ SetBounds(fWidth, fHeight - fCheckboxHeight);
+
+ D3DXVECTOR3 pos;
+ GetPosition(&pos);
+ pos.y += (fCheckboxHeight/2);
+ SetPosition(&pos);
+
+ m_GenerationGroup.GetPosition(&pos);
+ pos.y -= fCheckboxHeight;
+ m_GenerationGroup.SetPosition(&pos);
+
+ m_CheckboxResetNether.SetShow(FALSE);
+ }
+ else
+ {
+ float fHeight, fGroupHeight, fWidth;
+ m_GenerationGroup.GetBounds(&fWidth, &fGroupHeight);
+ m_GenerationGroup.SetShow(FALSE);
+ m_GenerationGroup.SetEnable(FALSE);
+ m_CheckboxStructures.SetShow(FALSE);
+ m_CheckboxFlatWorld.SetShow(FALSE);
+ m_CheckboxBonusChest.SetShow(FALSE);
+
+ GetBounds(&fWidth,&fHeight);
+ SetBounds(fWidth, fHeight +10 - fGroupHeight);
+
+ D3DXVECTOR3 pos;
+ GetPosition(&pos);
+ pos.y += (fGroupHeight/2);
+ SetPosition(&pos);
+
+ m_CheckboxResetNether.SetEnable(TRUE);
+ m_CheckboxResetNether.SetCheck(m_params->bResetNether);
+ }
+
+ m_CheckboxPVP.SetEnable(TRUE);
+ m_CheckboxTrustPlayers.SetEnable(TRUE);
+ m_CheckboxFireSpreads.SetEnable(TRUE);
+ m_CheckboxTNTExplodes.SetEnable(TRUE);
+ m_CheckboxHostPrivileges.SetEnable(TRUE);
+
+ m_CheckboxPVP.SetCheck(m_params->bPVP);
+ m_CheckboxTrustPlayers.SetCheck (m_params->bTrust);
+ m_CheckboxFireSpreads.SetCheck(m_params->bFireSpreads);
+ m_CheckboxTNTExplodes.SetCheck(m_params->bTNT);
+ m_CheckboxHostPrivileges.SetCheck(m_params->bHostPrivileges);
+
+
+ m_CheckboxOnline.SetCheck(m_params->bOnlineGame);
+ m_CheckboxInviteOnly.SetCheck(m_params->bInviteOnly);
+ m_CheckboxAllowFoF.SetCheck(m_params->bAllowFriendsOfFriends);
+
+ m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_params->iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad);
+ if(m_params->bOnlineSettingChangedBySystem)
+ {
+ m_CheckboxOnline.SetCheck(FALSE);
+ m_CheckboxOnline.SetEnable(FALSE);
+ m_CheckboxInviteOnly.SetCheck(FALSE);
+ m_CheckboxInviteOnly.SetEnable(FALSE);
+ m_CheckboxAllowFoF.SetCheck(FALSE);
+ m_CheckboxAllowFoF.SetEnable(FALSE);
+ }
+ else if(!m_params->bOnlineGame)
+ {
+ m_CheckboxInviteOnly.SetEnable(FALSE);
+ m_CheckboxAllowFoF.SetEnable(FALSE);
+ }
+
+ XuiSetTimer(m_hObj,GAME_CREATE_ONLINE_TIMER_ID,GAME_CREATE_ONLINE_TIMER_TIME);
+
+ ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK);
+
+ CXuiSceneBase::ShowLogo( DEFAULT_XUI_MENU_USER, FALSE );
+
+
+ //SentientManager.RecordMenuShown(m_params->iPad, eUIScene_CreateWorldMenu, 0);
+
+ return S_OK;
+}
+
+
+HRESULT CScene_MultiGameLaunchMoreOptions::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled)
+{
+ ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
+
+ // Explicitly handle B button presses
+ switch(pInputData->dwKeyCode)
+ {
+ case VK_PAD_B:
+ case VK_ESCAPE:
+ m_params->bOnlineGame = m_CheckboxOnline.IsChecked();
+ m_params->bInviteOnly = m_CheckboxInviteOnly.IsChecked();
+ m_params->bAllowFriendsOfFriends = m_CheckboxAllowFoF.IsChecked();
+
+ m_params->bStructures = m_CheckboxStructures.IsChecked();
+ m_params->bFlatWorld = m_CheckboxFlatWorld.IsChecked();
+ m_params->bBonusChest = m_CheckboxBonusChest.IsChecked();
+ m_params->bPVP = m_CheckboxPVP.IsChecked();
+ m_params->bTrust = m_CheckboxTrustPlayers.IsChecked();
+ m_params->bFireSpreads = m_CheckboxFireSpreads.IsChecked();
+ m_params->bTNT = m_CheckboxTNTExplodes.IsChecked();
+
+ m_params->bHostPrivileges = m_CheckboxHostPrivileges.IsChecked();
+
+ m_params->bResetNether = m_CheckboxResetNether.IsChecked();
+
+ app.NavigateBack(pInputData->UserIndex);
+ rfHandled = TRUE;
+ break;
+ }
+ return S_OK;
+}
+
+
+HRESULT CScene_MultiGameLaunchMoreOptions::OnNotifySetFocus( HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled )
+{
+ int stringId = 0;
+ if(hObjSource == m_CheckboxStructures)
+ {
+ stringId = IDS_GAMEOPTION_STRUCTURES;
+ }
+ else if(hObjSource == m_CheckboxOnline)
+ {
+ stringId = IDS_GAMEOPTION_ONLINE;
+ }
+ else if(hObjSource == m_CheckboxInviteOnly)
+ {
+ stringId = IDS_GAMEOPTION_INVITEONLY;
+ }
+ else if(hObjSource == m_CheckboxAllowFoF)
+ {
+ stringId = IDS_GAMEOPTION_ALLOWFOF;
+ }
+ else if(hObjSource == m_CheckboxFlatWorld)
+ {
+ stringId = IDS_GAMEOPTION_SUPERFLAT;
+ }
+ else if(hObjSource == m_CheckboxBonusChest)
+ {
+ stringId = IDS_GAMEOPTION_BONUS_CHEST;
+ }
+ else if(hObjSource == m_CheckboxPVP)
+ {
+ stringId = IDS_GAMEOPTION_PVP;
+ }
+ else if(hObjSource == m_CheckboxTrustPlayers)
+ {
+ stringId = IDS_GAMEOPTION_TRUST;
+ }
+ else if(hObjSource == m_CheckboxFireSpreads)
+ {
+ stringId = IDS_GAMEOPTION_FIRE_SPREADS;
+ }
+ else if(hObjSource == m_CheckboxTNTExplodes)
+ {
+ stringId = IDS_GAMEOPTION_TNT_EXPLODES;
+ }
+ else if(hObjSource == m_CheckboxHostPrivileges)
+ {
+ stringId = IDS_GAMEOPTION_HOST_PRIVILEGES;
+ }
+ else if(hObjSource == m_CheckboxResetNether)
+ {
+ stringId = IDS_GAMEOPTION_RESET_NETHER;
+ }
+
+ wstring wsText=app.GetString(stringId);
+ int size = 14;
+ if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen())
+ {
+ size = 12;
+ }
+ wchar_t startTags[64];
+ swprintf(startTags,64,L"<font color=\"#%08x\" size=%d>",app.GetHTMLColour(eHTMLColor_White), size);
+ wsText= startTags + wsText;
+
+ m_Description.SetText(wsText.c_str());
+ return S_OK;
+}
+
+HRESULT CScene_MultiGameLaunchMoreOptions::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled)
+{
+ pControlNavigateData->hObjDest=XuiControlGetNavigation(pControlNavigateData->hObjSource,pControlNavigateData->nControlNavigate,TRUE,TRUE);
+
+ if(pControlNavigateData->hObjDest!=NULL)
+ {
+ bHandled=TRUE;
+ }
+
+ return S_OK;
+}
+
+//----------------------------------------------------------------------------------
+// Handler for the button press message.
+//----------------------------------------------------------------------------------
+HRESULT CScene_MultiGameLaunchMoreOptions::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled)
+{
+ // This assumes all buttons can only be pressed with the A button
+ ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A);
+
+ if(hObjPressed==m_CheckboxOnline)
+ {
+ if(m_CheckboxOnline.IsChecked())
+ {
+ m_CheckboxInviteOnly.SetEnable(TRUE);
+ m_CheckboxAllowFoF.SetEnable(TRUE);
+ }
+ else
+ {
+ m_CheckboxInviteOnly.SetCheck(FALSE);
+ m_CheckboxInviteOnly.SetEnable(FALSE);
+ m_CheckboxAllowFoF.SetCheck(FALSE);
+ m_CheckboxAllowFoF.SetEnable(FALSE);
+ }
+ }
+ return S_OK;
+}
+
+HRESULT CScene_MultiGameLaunchMoreOptions::OnTimer( XUIMessageTimer *pTimer, BOOL& bHandled )
+{
+ // 4J-PB - TODO - Don't think we can do this - if a 2nd player signs in here with an offline profile, the signed in LIVE player gets re-logged in, and bMultiplayerAllowed is false briefly
+ if( pTimer->nId == GAME_CREATE_ONLINE_TIMER_ID)
+ {
+ bool bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_params->iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad);
+
+ if(bMultiplayerAllowed != m_bMultiplayerAllowed)
+ {
+ if( bMultiplayerAllowed )
+ {
+ bool bGameSetting_Online=(app.GetGameSettings(m_params->iPad,eGameSetting_Online)!=0);
+ m_CheckboxOnline.SetCheck(bGameSetting_Online?TRUE:FALSE);
+ if(bGameSetting_Online)
+ {
+ m_CheckboxInviteOnly.SetCheck((app.GetGameSettings(m_params->iPad,eGameSetting_InviteOnly)!=0)?TRUE:FALSE);
+ m_CheckboxAllowFoF.SetCheck((app.GetGameSettings(m_params->iPad,eGameSetting_FriendsOfFriends)!=0)?TRUE:FALSE);
+ }
+ else
+ {
+ m_CheckboxInviteOnly.SetCheck(FALSE);
+ m_CheckboxAllowFoF.SetCheck(FALSE);
+ }
+ }
+ else
+ {
+ m_CheckboxOnline.SetCheck(FALSE);
+ m_CheckboxOnline.SetEnable(FALSE);
+ m_CheckboxInviteOnly.SetCheck(FALSE);
+ m_CheckboxInviteOnly.SetEnable(FALSE);
+ m_CheckboxAllowFoF.SetCheck(FALSE);
+ }
+
+ m_bMultiplayerAllowed = bMultiplayerAllowed;
+ }
+ }
+
+ return S_OK;
+} \ No newline at end of file