the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 150 lines 5.1 kB view raw
1#include "stdafx.h" 2#include "XUI_MultiGameCreate.h" 3#include "XUI_InGameHostOptions.h" 4#include "..\..\Minecraft.h" 5#include "..\..\MultiPlayerLocalPlayer.h" 6#include "..\..\ClientConnection.h" 7#include "..\..\..\Minecraft.World\net.minecraft.network.h" 8#include "..\..\..\Minecraft.World\net.minecraft.network.packet.h" 9 10//---------------------------------------------------------------------------------- 11// Performs initialization tasks - retrieves controls. 12//---------------------------------------------------------------------------------- 13HRESULT CScene_InGameHostOptions::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) 14{ 15 m_iPad = *(int *)pInitData->pvInitData; 16 17 MapChildControls(); 18 19 m_focusElement = m_CheckboxFireSpreads.m_hObj; 20 21 XuiControlSetText(m_CheckboxFireSpreads,app.GetString(IDS_FIRE_SPREADS)); 22 XuiControlSetText(m_CheckboxTNTExplodes,app.GetString(IDS_TNT_EXPLODES)); 23 24 if(app.GetLocalPlayerCount()>1) 25 { 26 app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); 27 } 28 29 m_CheckboxFireSpreads.SetEnable(TRUE); 30 m_CheckboxTNTExplodes.SetEnable(TRUE); 31 m_CheckboxFireSpreads.SetCheck((app.GetGameHostOption(eGameHostOption_FireSpreads)!=0)?TRUE:FALSE); 32 m_CheckboxTNTExplodes.SetCheck((app.GetGameHostOption(eGameHostOption_TNT)!=0)?TRUE:FALSE); 33 34 INetworkPlayer *localPlayer = g_NetworkManager.GetLocalPlayerByUserIndex( m_iPad ); 35 unsigned int privs = app.GetPlayerPrivileges(localPlayer->GetSmallId()); 36 if ( app.GetGameHostOption(eGameHostOption_CheatsEnabled) 37 && Player::getPlayerGamePrivilege(privs,Player::ePlayerGamePrivilege_CanTeleport) 38 && (g_NetworkManager.GetPlayerCount() > 1) ) 39 { 40 m_buttonTeleportToPlayer.SetText(app.GetString(IDS_TELEPORT_TO_PLAYER)); 41 m_buttonTeleportToMe.SetText(app.GetString(IDS_TELEPORT_TO_ME)); 42 } 43 else 44 { 45 removeControl(m_buttonTeleportToPlayer, true); 46 removeControl(m_buttonTeleportToMe, true); 47 } 48 49 ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK); 50 51 CXuiSceneBase::ShowLogo( m_iPad, FALSE ); 52 53 54 //SentientManager.RecordMenuShown(m_iPad, eUIScene_CreateWorldMenu, 0); 55 56 return S_OK; 57} 58 59 60HRESULT CScene_InGameHostOptions::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled) 61{ 62 ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode); 63 64 // Explicitly handle B button presses 65 switch(pInputData->dwKeyCode) 66 { 67 case VK_PAD_B: 68 case VK_ESCAPE: 69 { 70 unsigned int hostOptions = app.GetGameHostOption(eGameHostOption_All); 71 app.SetGameHostOption(hostOptions,eGameHostOption_FireSpreads,m_CheckboxFireSpreads.IsChecked()); 72 app.SetGameHostOption(hostOptions,eGameHostOption_TNT,m_CheckboxTNTExplodes.IsChecked()); 73 74 // Send update settings packet to server 75 if(hostOptions != app.GetGameHostOption(eGameHostOption_All) ) 76 { 77 Minecraft *pMinecraft = Minecraft::GetInstance(); 78 shared_ptr<MultiplayerLocalPlayer> player = pMinecraft->localplayers[m_iPad]; 79 if(player != NULL && player->connection) 80 { 81 player->connection->send( shared_ptr<ServerSettingsChangedPacket>( new ServerSettingsChangedPacket( ServerSettingsChangedPacket::HOST_IN_GAME_SETTINGS, hostOptions) ) ); 82 } 83 } 84 85 app.NavigateBack(pInputData->UserIndex); 86 rfHandled = TRUE; 87 } 88 break; 89 } 90 return S_OK; 91} 92 93//---------------------------------------------------------------------------------- 94// Handler for the button press message. 95//---------------------------------------------------------------------------------- 96HRESULT CScene_InGameHostOptions::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled) 97{ 98 // This assumes all buttons can only be pressed with the A button 99 ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A); 100 101 if(hObjPressed == m_buttonTeleportToPlayer || hObjPressed == m_buttonTeleportToMe) 102 { 103 TeleportMenuInitData *initData = new TeleportMenuInitData(); 104 initData->iPad = m_iPad; 105 initData->teleportToPlayer = false; 106 if( hObjPressed == m_buttonTeleportToPlayer ) 107 { 108 initData->teleportToPlayer = true; 109 } 110 ui.NavigateToScene(m_iPad,eUIScene_TeleportMenu,(void*)initData); 111 } 112 return S_OK; 113} 114 115void CScene_InGameHostOptions::removeControl(HXUIOBJ hObjToRemove, bool center) 116{ 117 D3DXVECTOR3 pos; 118 float fControlHeight, fTempHeight, fWidth; 119 120 bool changeFocus = m_focusElement == hObjToRemove; 121 122 XuiElementGetBounds(hObjToRemove,&fWidth,&fControlHeight); 123 124 // Hide this control 125 XuiControlSetEnable(hObjToRemove, FALSE); 126 XuiElementSetShow(hObjToRemove, FALSE); 127 128 // Move future downwards nav up 129 HXUIOBJ controlToMove = hObjToRemove; 130 while(controlToMove = XuiControlGetNavigation(controlToMove, XUI_CONTROL_NAVIGATE_DOWN, FALSE, TRUE) ) 131 { 132 if(changeFocus && XuiElementIsShown(controlToMove)) 133 { 134 m_focusElement = controlToMove; 135 XuiElementSetUserFocus( controlToMove, m_iPad ); 136 changeFocus = FALSE; 137 } 138 XuiElementGetPosition(controlToMove, &pos); 139 pos.y -= fControlHeight; 140 XuiElementSetPosition(controlToMove, &pos); 141 } 142 143 // Resize and move scene 144 GetBounds(&fWidth, &fTempHeight); 145 SetBounds(fWidth, fTempHeight - fControlHeight); 146 147 GetPosition(&pos); 148 pos.y += fControlHeight/2; 149 SetPosition(&pos); 150}