diff options
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp')
| -rw-r--r-- | Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp | 306 |
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 |
