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 "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}