the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 499 lines 20 kB view raw
1#include "stdafx.h" 2#include "XUI_MultiGameCreate.h" 3#include "XUI_InGamePlayerOptions.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#include "..\..\..\Minecraft.World\net.minecraft.world.entity.player.h" 10#include "XUI_InGameInfo.h" 11 12 13 14//---------------------------------------------------------------------------------- 15// Performs initialization tasks - retrieves controls. 16//---------------------------------------------------------------------------------- 17HRESULT CScene_InGamePlayerOptions::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) 18{ 19 m_iPad = *(int *)pInitData->pvInitData; 20 21 InGamePlayerOptionsInitData *initData = (InGamePlayerOptionsInitData *)pInitData->pvInitData; 22 m_iPad = initData->iPad; 23 m_networkSmallId = initData->networkSmallId; 24 m_playerPrivileges = initData->playerPrivileges; 25 26 MapChildControls(); 27 28 m_focusElement = m_checkboxes[eControl_BuildAndMine].m_hObj; 29 30 m_TeleportGroup.SetShow(false); 31 32 INetworkPlayer *localPlayer = g_NetworkManager.GetLocalPlayerByUserIndex( m_iPad ); 33 INetworkPlayer *editingPlayer = g_NetworkManager.GetPlayerBySmallId(m_networkSmallId); 34 35 if(editingPlayer != NULL) 36 { 37 m_Gamertag.SetText(editingPlayer->GetOnlineName()); 38 } 39 40 bool trustPlayers = app.GetGameHostOption(eGameHostOption_TrustPlayers) != 0; 41 bool cheats = app.GetGameHostOption(eGameHostOption_CheatsEnabled) != 0; 42 m_editingSelf = (localPlayer != NULL && localPlayer == editingPlayer); 43 44 if( m_editingSelf || trustPlayers || editingPlayer->IsHost()) 45 { 46 removeControl( m_checkboxes[eControl_BuildAndMine], true ); 47 removeControl( m_checkboxes[eControl_UseDoorsAndSwitches], true ); 48 removeControl( m_checkboxes[eControl_UseContainers], true ); 49 removeControl( m_checkboxes[eControl_AttackPlayers], true ); 50 removeControl( m_checkboxes[eControl_AttackAnimals], true ); 51 } 52 else 53 { 54 bool checked = (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CannotMine)==0 && Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CannotBuild)==0); 55 m_checkboxes[eControl_BuildAndMine].SetText( app.GetString(IDS_CAN_BUILD_AND_MINE) ); 56 m_checkboxes[eControl_BuildAndMine].SetCheck(checked); 57 58 checked = (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanUseDoorsAndSwitches)!=0); 59 m_checkboxes[eControl_UseDoorsAndSwitches].SetText( app.GetString(IDS_CAN_USE_DOORS_AND_SWITCHES) ); 60 m_checkboxes[eControl_UseDoorsAndSwitches].SetCheck(checked); 61 62 checked = (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanUseContainers)!=0); 63 m_checkboxes[eControl_UseContainers].SetText( app.GetString(IDS_CAN_OPEN_CONTAINERS) ); 64 m_checkboxes[eControl_UseContainers].SetCheck(checked); 65 66 checked = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CannotAttackPlayers)==0; 67 m_checkboxes[eControl_AttackPlayers].SetText( app.GetString(IDS_CAN_ATTACK_PLAYERS) ); 68 m_checkboxes[eControl_AttackPlayers].SetCheck(checked); 69 70 checked = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CannotAttackAnimals)==0; 71 m_checkboxes[eControl_AttackAnimals].SetText( app.GetString(IDS_CAN_ATTACK_ANIMALS) ); 72 m_checkboxes[eControl_AttackAnimals].SetCheck(checked); 73 } 74 75 if(m_editingSelf) 76 { 77#if (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) 78 removeControl( m_checkboxes[eControl_Op], true ); 79#else 80 m_checkboxes[eControl_Op].SetText(L"DEBUG: Creative"); 81 m_checkboxes[eControl_Op].SetCheck(Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode)); 82#endif 83 84 removeControl( m_buttonKick, true ); 85 removeControl( m_checkboxes[eControl_CheatTeleport], true ); 86 87 if(cheats) 88 { 89 bool canBeInvisible = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleInvisible) != 0; 90 m_checkboxes[eControl_HostInvisible].SetEnable(canBeInvisible); 91 bool checked = canBeInvisible && (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_Invisible)!=0 && Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_Invulnerable)!=0); 92 m_checkboxes[eControl_HostInvisible].SetText( app.GetString(IDS_INVISIBLE) ); 93 m_checkboxes[eControl_HostInvisible].SetCheck(checked); 94 95 bool inCreativeMode = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode) != 0; 96 if(inCreativeMode) 97 { 98 removeControl( m_checkboxes[eControl_HostFly], true ); 99 removeControl( m_checkboxes[eControl_HostHunger], true ); 100 } 101 else 102 { 103 bool canFly = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanToggleFly); 104 bool canChangeHunger = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanToggleClassicHunger); 105 106 m_checkboxes[eControl_HostFly].SetEnable(canFly); 107 checked = canFly && Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanFly)!=0; 108 m_checkboxes[eControl_HostFly].SetText( app.GetString(IDS_CAN_FLY) ); 109 m_checkboxes[eControl_HostFly].SetCheck(checked); 110 111 m_checkboxes[eControl_HostHunger].SetEnable(canChangeHunger); 112 checked = canChangeHunger && Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_ClassicHunger)!=0; 113 m_checkboxes[eControl_HostHunger].SetText( app.GetString(IDS_DISABLE_EXHAUSTION) ); 114 m_checkboxes[eControl_HostHunger].SetCheck(checked); 115 } 116 } 117 else 118 { 119 removeControl( m_checkboxes[eControl_HostInvisible], true ); 120 removeControl( m_checkboxes[eControl_HostFly], true ); 121 removeControl( m_checkboxes[eControl_HostHunger], true ); 122 } 123 } 124 else 125 { 126 if(localPlayer->IsHost()) 127 { 128 // Only host can make people moderators, or enable teleporting for them 129 m_checkboxes[eControl_Op].SetText( app.GetString(IDS_MODERATOR) ); 130 m_checkboxes[eControl_Op].SetCheck(Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_Op)!=0); 131 } 132 else 133 { 134 removeControl( m_checkboxes[eControl_Op], true ); 135 } 136 137 if(localPlayer->IsHost() && cheats) 138 { 139 m_checkboxes[eControl_HostInvisible].SetEnable(true); 140 bool checked = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleInvisible)!=0; 141 m_checkboxes[eControl_HostInvisible].SetText( app.GetString(IDS_CAN_INVISIBLE) ); 142 m_checkboxes[eControl_HostInvisible].SetCheck(checked); 143 144 145 bool inCreativeMode = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode) != 0; 146 if(inCreativeMode) 147 { 148 removeControl( m_checkboxes[eControl_HostFly], true ); 149 removeControl( m_checkboxes[eControl_HostHunger], true ); 150 } 151 else 152 { 153 m_checkboxes[eControl_HostFly].SetEnable(true); 154 checked = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleFly)!=0; 155 m_checkboxes[eControl_HostFly].SetText( app.GetString(IDS_CAN_FLY) ); 156 m_checkboxes[eControl_HostFly].SetCheck(checked); 157 158 m_checkboxes[eControl_HostHunger].SetEnable(true); 159 checked = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleClassicHunger)!=0; 160 m_checkboxes[eControl_HostHunger].SetText( app.GetString(IDS_CAN_DISABLE_EXHAUSTION) ); 161 m_checkboxes[eControl_HostHunger].SetCheck(checked); 162 } 163 164 checked = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanTeleport)!=0; 165 m_checkboxes[eControl_CheatTeleport].SetText(app.GetString(IDS_ENABLE_TELEPORT)); 166 m_checkboxes[eControl_CheatTeleport].SetCheck(checked); 167 } 168 else 169 { 170 removeControl( m_checkboxes[eControl_HostInvisible], true ); 171 removeControl( m_checkboxes[eControl_HostFly], true ); 172 removeControl( m_checkboxes[eControl_HostHunger], true ); 173 removeControl( m_checkboxes[eControl_CheatTeleport], true ); 174 } 175 176 // Can only kick people if they are not local, and not local to the host 177 if(editingPlayer->IsLocal() != TRUE && editingPlayer->IsSameSystem(g_NetworkManager.GetHostPlayer()) != TRUE) 178 { 179 m_buttonKick.SetText( app.GetString(IDS_KICK_PLAYER)); 180 } 181 else 182 { 183 removeControl( m_buttonKick, true ); 184 } 185 } 186 187 if(app.GetLocalPlayerCount()>1) 188 { 189 app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); 190 } 191 192 ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK); 193 194 CXuiSceneBase::ShowLogo( m_iPad, FALSE ); 195 196 g_NetworkManager.RegisterPlayerChangedCallback(m_iPad, &CScene_InGamePlayerOptions::OnPlayerChanged, this); 197 198 //SentientManager.RecordMenuShown(m_iPad, eUIScene_CreateWorldMenu, 0); 199 200 resetCheatCheckboxes(); 201 202 return S_OK; 203} 204 205HRESULT CScene_InGamePlayerOptions::OnDestroy() 206{ 207 g_NetworkManager.UnRegisterPlayerChangedCallback(m_iPad, &CScene_InGameInfo::OnPlayerChanged, this); 208 return S_OK; 209} 210 211 212HRESULT CScene_InGamePlayerOptions::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled) 213{ 214 ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode); 215 216 // Explicitly handle B button presses 217 switch(pInputData->dwKeyCode) 218 { 219 case VK_PAD_B: 220 case VK_ESCAPE: 221 { 222 bool trustPlayers = app.GetGameHostOption(eGameHostOption_TrustPlayers) != 0; 223 bool cheats = app.GetGameHostOption(eGameHostOption_CheatsEnabled) != 0; 224 if(m_editingSelf) 225 { 226#if (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) 227#else 228 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode,m_checkboxes[eControl_Op].IsChecked()); 229#endif 230 if(cheats) 231 { 232 bool canBeInvisible = Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleInvisible) != 0; 233 if(canBeInvisible) Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_Invisible,m_checkboxes[eControl_HostInvisible].IsChecked()); 234 if(canBeInvisible) Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_Invulnerable,m_checkboxes[eControl_HostInvisible].IsChecked()); 235 236 bool inCreativeMode = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode) != 0; 237 if(!inCreativeMode) 238 { 239 bool canFly = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanToggleFly); 240 bool canChangeHunger = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanToggleClassicHunger); 241 242 if(canFly) Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanFly,m_checkboxes[eControl_HostFly].IsChecked()); 243 if(canChangeHunger) Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_ClassicHunger,m_checkboxes[eControl_HostHunger].IsChecked()); 244 } 245 } 246 } 247 else 248 { 249 INetworkPlayer *editingPlayer = g_NetworkManager.GetPlayerBySmallId(m_networkSmallId); 250 if(!trustPlayers && (editingPlayer != NULL && !editingPlayer->IsHost() ) ) 251 { 252 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CannotMine,!m_checkboxes[eControl_BuildAndMine].IsChecked()); 253 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CannotBuild,!m_checkboxes[eControl_BuildAndMine].IsChecked()); 254 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CannotAttackPlayers,!m_checkboxes[eControl_AttackPlayers].IsChecked()); 255 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CannotAttackAnimals, !m_checkboxes[eControl_AttackAnimals].IsChecked()); 256 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanUseDoorsAndSwitches, m_checkboxes[eControl_UseDoorsAndSwitches].IsChecked()); 257 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanUseContainers, m_checkboxes[eControl_UseContainers].IsChecked()); 258 } 259 260 INetworkPlayer *localPlayer = g_NetworkManager.GetLocalPlayerByUserIndex( m_iPad ); 261 262 if(localPlayer->IsHost()) 263 { 264 if(cheats) 265 { 266 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanToggleInvisible,m_checkboxes[eControl_HostInvisible].IsChecked()); 267 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanToggleFly,m_checkboxes[eControl_HostFly].IsChecked()); 268 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanToggleClassicHunger,m_checkboxes[eControl_HostHunger].IsChecked()); 269 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CanTeleport,m_checkboxes[eControl_CheatTeleport].IsChecked()); 270 } 271 272 Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_Op,m_checkboxes[eControl_Op].IsChecked()); 273 } 274 } 275 unsigned int originalPrivileges = app.GetPlayerPrivileges(m_networkSmallId); 276 if(originalPrivileges != m_playerPrivileges) 277 { 278 // Send update settings packet to server 279 Minecraft *pMinecraft = Minecraft::GetInstance(); 280 shared_ptr<MultiplayerLocalPlayer> player = pMinecraft->localplayers[m_iPad]; 281 if(player != NULL && player->connection) 282 { 283 player->connection->send( shared_ptr<PlayerInfoPacket>( new PlayerInfoPacket( m_networkSmallId, -1, m_playerPrivileges) ) ); 284 } 285 } 286 287 app.NavigateBack(pInputData->UserIndex); 288 rfHandled = TRUE; 289 } 290 break; 291 } 292 return S_OK; 293} 294 295HRESULT CScene_InGamePlayerOptions::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled) 296{ 297 //HRESULT hr = S_OK; 298 // This assumes all buttons can only be pressed with the A button 299 ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A); 300 301 if( hObjPressed == m_buttonKick ) 302 { 303 BYTE *smallId = new BYTE(); 304 *smallId = m_networkSmallId; 305 UINT uiIDA[2]; 306 uiIDA[0]=IDS_CONFIRM_OK; 307 uiIDA[1]=IDS_CONFIRM_CANCEL; 308 309 StorageManager.RequestMessageBox(IDS_UNLOCK_KICK_PLAYER_TITLE, IDS_UNLOCK_KICK_PLAYER, uiIDA, 2, m_iPad,&CScene_InGamePlayerOptions::KickPlayerReturned,smallId,app.GetStringTable()); 310 } 311 else if (hObjPressed == m_checkboxes[eControl_Op] ) 312 { 313 resetCheatCheckboxes(); 314 } 315 316 return S_OK; 317} 318 319HRESULT CScene_InGamePlayerOptions::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) 320{ 321 pControlNavigateData->hObjDest=XuiControlGetNavigation(pControlNavigateData->hObjSource,pControlNavigateData->nControlNavigate,TRUE,TRUE); 322 323 if(pControlNavigateData->hObjDest!=NULL) 324 { 325 bHandled=TRUE; 326 } 327 328 return S_OK; 329} 330 331int CScene_InGamePlayerOptions::KickPlayerReturned(void *pParam,int iPad,C4JStorage::EMessageResult result) 332{ 333 BYTE smallId = *(BYTE *)pParam; 334 delete pParam; 335 336 if(result==C4JStorage::EMessage_ResultAccept) 337 { 338 Minecraft *pMinecraft = Minecraft::GetInstance(); 339 shared_ptr<MultiplayerLocalPlayer> localPlayer = pMinecraft->localplayers[iPad]; 340 if(localPlayer != NULL && localPlayer->connection) 341 { 342 localPlayer->connection->send( shared_ptr<KickPlayerPacket>( new KickPlayerPacket(smallId) ) ); 343 } 344 345 // Fix for #61494 - [CRASH]: TU7: Code: Multiplayer: Title may crash while kicking a player from an online game. 346 // We cannot do a navigate back here is this actually occurs on a thread other than the main thread. On rare occasions this can clash 347 // with the XUI render and causes a crash. The OnPlayerChanged event should perform the navigate back on the main thread 348 //app.NavigateBack(iPad); 349 } 350 351 return 0; 352} 353 354void CScene_InGamePlayerOptions::OnPlayerChanged(void *callbackParam, INetworkPlayer *pPlayer, bool leaving) 355{ 356 CScene_InGamePlayerOptions *scene = (CScene_InGamePlayerOptions *)callbackParam; 357 358 HXUIOBJ hBackScene = scene->GetBackScene(); 359 CScene_InGameInfo* infoScene; 360 VOID *pObj; 361 XuiObjectFromHandle( hBackScene, &pObj ); 362 infoScene = (CScene_InGameInfo *)pObj; 363 if(infoScene != NULL) CScene_InGameInfo::OnPlayerChanged(infoScene,pPlayer,leaving); 364 365 if(leaving && pPlayer != NULL && pPlayer->GetSmallId() == scene->m_networkSmallId) 366 { 367 app.NavigateBack(scene->m_iPad); 368 } 369} 370 371HRESULT CScene_InGamePlayerOptions::OnTransitionStart( XUIMessageTransition *pTransition, BOOL& bHandled ) 372{ 373 if(pTransition->dwTransType == XUI_TRANSITION_TO || pTransition->dwTransType == XUI_TRANSITION_BACKTO) 374 { 375 INetworkPlayer *editingPlayer = g_NetworkManager.GetPlayerBySmallId(m_networkSmallId); 376 if(editingPlayer != NULL) 377 { 378 short colourIndex = app.GetPlayerColour( m_networkSmallId ); 379 switch(colourIndex) 380 { 381 case 1: 382 m_Icon.PlayVisualRange(L"P1",NULL,L"P1"); 383 break; 384 case 2: 385 m_Icon.PlayVisualRange(L"P2",NULL,L"P2"); 386 break; 387 case 3: 388 m_Icon.PlayVisualRange(L"P3",NULL,L"P3"); 389 break; 390 case 4: 391 m_Icon.PlayVisualRange(L"P4",NULL,L"P4"); 392 break; 393 case 5: 394 m_Icon.PlayVisualRange(L"P5",NULL,L"P5"); 395 break; 396 case 6: 397 m_Icon.PlayVisualRange(L"P6",NULL,L"P6"); 398 break; 399 case 7: 400 m_Icon.PlayVisualRange(L"P7",NULL,L"P7"); 401 break; 402 case 8: 403 m_Icon.PlayVisualRange(L"P8",NULL,L"P8"); 404 break; 405 case 9: 406 m_Icon.PlayVisualRange(L"P9",NULL,L"P9"); 407 break; 408 case 10: 409 m_Icon.PlayVisualRange(L"P10",NULL,L"P10"); 410 break; 411 case 11: 412 m_Icon.PlayVisualRange(L"P11",NULL,L"P11"); 413 break; 414 case 12: 415 m_Icon.PlayVisualRange(L"P12",NULL,L"P12"); 416 break; 417 case 13: 418 m_Icon.PlayVisualRange(L"P13",NULL,L"P13"); 419 break; 420 case 14: 421 m_Icon.PlayVisualRange(L"P14",NULL,L"P14"); 422 break; 423 case 15: 424 m_Icon.PlayVisualRange(L"P15",NULL,L"P15"); 425 break; 426 case 0: 427 default: 428 m_Icon.PlayVisualRange(L"P0",NULL,L"P0"); 429 break; 430 }; 431 } 432 } 433 return S_OK; 434} 435 436void CScene_InGamePlayerOptions::removeControl(HXUIOBJ hObjToRemove, bool center) 437{ 438 D3DXVECTOR3 pos; 439 float fControlHeight, fTempHeight, fWidth; 440 441 bool changeFocus = m_focusElement == hObjToRemove; 442 443 XuiElementGetBounds(hObjToRemove,&fWidth,&fControlHeight); 444 445 // Hide this control 446 XuiControlSetEnable(hObjToRemove, FALSE); 447 XuiElementSetShow(hObjToRemove, FALSE); 448 449 // Move future downwards nav up 450 HXUIOBJ controlToMove = hObjToRemove; 451 while(controlToMove = XuiControlGetNavigation(controlToMove, XUI_CONTROL_NAVIGATE_DOWN, FALSE, TRUE) ) 452 { 453 if(changeFocus && XuiElementIsShown(controlToMove)) 454 { 455 m_focusElement = controlToMove; 456 XuiElementSetUserFocus( controlToMove, m_iPad ); 457 changeFocus = FALSE; 458 } 459 XuiElementGetPosition(controlToMove, &pos); 460 pos.y -= fControlHeight; 461 XuiElementSetPosition(controlToMove, &pos); 462 } 463 464 // Resize and move scene 465 GetBounds(&fWidth, &fTempHeight); 466 SetBounds(fWidth, fTempHeight - fControlHeight); 467 468 GetPosition(&pos); 469 pos.y += fControlHeight/2; 470 SetPosition(&pos); 471} 472 473void CScene_InGamePlayerOptions::resetCheatCheckboxes() 474{ 475 bool isModerator = m_checkboxes[eControl_Op].IsChecked(); 476 //bool cheatsEnabled = app.GetGameHostOption(eGameHostOption_CheatsEnabled) != 0; 477 478 if (!m_editingSelf) 479 { 480 m_checkboxes[eControl_HostInvisible].SetEnable(isModerator); 481 m_checkboxes[eControl_HostInvisible].SetCheck( isModerator 482 && (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleInvisible) != 0) ); 483 484 // NOT CREATIVE MODE. 485 { 486 m_checkboxes[eControl_HostFly].SetEnable(isModerator); 487 m_checkboxes[eControl_HostFly].SetCheck( isModerator 488 && (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleFly) != 0) ); 489 490 m_checkboxes[eControl_HostHunger].SetEnable(isModerator); 491 m_checkboxes[eControl_HostHunger].SetCheck( isModerator 492 && (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanToggleClassicHunger) != 0) ); 493 } 494 495 m_checkboxes[eControl_CheatTeleport].SetEnable(isModerator); 496 m_checkboxes[eControl_CheatTeleport].SetCheck( isModerator 497 && (Player::getPlayerGamePrivilege(m_playerPrivileges, Player::ePlayerGamePrivilege_CanTeleport) != 0) ); 498 } 499}