first commit
This commit is contained in:
306
Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp
Normal file
306
Minecraft.Client/Common/XUI/XUI_MultiGameLaunchMoreOptions.cpp
Normal file
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user