fix: fixed Xbox 360 build issues

This commit is contained in:
2026-07-31 15:49:59 -07:00
parent db7d47b0ff
commit 036bdcff81
213 changed files with 193105 additions and 237759 deletions
@@ -0,0 +1,309 @@
#include "stdafx.h"
#include "..\..\..\Minecraft.World\Container.h"
#include "..\..\..\Minecraft.World\BeaconMenu.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.effect.h"
#include "..\..\..\Minecraft.World\HtmlString.h"
#include "..\..\MultiplayerLocalPlayer.h"
#include "XUI_Ctrl_SlotList.h"
#include "XUI_Scene_Beacon.h"
#include "XUI_Ctrl_SlotItemListItem.h"
#include "XUI_Ctrl_SlotItem.h"
#include "..\..\Common\Tutorial\Tutorial.h"
#include "..\..\Common\Tutorial\TutorialMode.h"
#include "..\..\Common\Tutorial\TutorialEnum.h"
#define BEACON_TICK_TIMER_ID 12
HRESULT CXuiSceneBeacon::OnInit( XUIMessageInit* pInitData, BOOL& bHandled )
{
D3DXVECTOR3 vec;
MapChildControls();
Minecraft *pMinecraft = Minecraft::GetInstance();
BeaconScreenInput* initData = (BeaconScreenInput*)pInitData->pvInitData;
m_beacon = initData->beacon;
BeaconMenu* menu = new BeaconMenu( initData->inventory, initData->beacon );
m_iPad=initData->iPad;
m_bSplitscreen=initData->bSplitscreen;
#ifdef _XBOX
if( pMinecraft->localgameModes[initData->iPad] != NULL )
{
TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[initData->iPad];
m_previousTutorialState = gameMode->getTutorial()->getCurrentState();
gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Container_Menu, this);
}
#endif
if(m_bSplitscreen)
{
app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad);
}
InitDataAssociations(initData->iPad, menu);
CXuiSceneAbstractContainer::Initialize( initData->iPad, menu, true, BeaconMenu::INV_SLOT_START, (ESceneSection)0, eSectionBeaconMax );
m_bIgnoreKeyPresses = false;
m_initPowerButtons = true;
XuiSetTimer( m_hObj, BEACON_TICK_TIMER_ID, 50 );
handleTick();
delete initData;
return S_OK;
}
HRESULT CXuiSceneBeacon::OnDestroy()
{
Minecraft *pMinecraft = Minecraft::GetInstance();
#ifdef _XBOX
if( pMinecraft->localgameModes[m_iPad] != NULL )
{
TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad];
if(gameMode != NULL) gameMode->getTutorial()->changeTutorialState(m_previousTutorialState);
}
#endif
if(Minecraft::GetInstance()->localplayers[m_iPad] != NULL) Minecraft::GetInstance()->localplayers[m_iPad]->closeContainer();
return S_OK;
}
CXuiControl* CXuiSceneBeacon::GetSectionControl( ESceneSection eSection )
{
switch( eSection )
{
case eSectionBeaconItem:
return (CXuiControl *)m_paymentControl;
break;
case eSectionBeaconInventory:
return (CXuiControl *)m_inventoryControl;
break;
case eSectionBeaconUsing:
return (CXuiControl *)m_useRowControl;
break;
case eSectionBeaconPrimaryTierOneOne:
return (CXuiControl *)m_primaryTierOneOne;
break;
case eSectionBeaconPrimaryTierOneTwo:
return (CXuiControl *)m_primaryTierOneTwo;
break;
case eSectionBeaconPrimaryTierTwoOne:
return (CXuiControl *)m_primaryTierTwoOne;
break;
case eSectionBeaconPrimaryTierTwoTwo:
return (CXuiControl *)m_primaryTierTwoTwo;
break;
case eSectionBeaconPrimaryTierThree:
return (CXuiControl *)m_primaryTierThree;
break;
case eSectionBeaconSecondaryOne:
return (CXuiControl *)m_secondaryOne;
break;
case eSectionBeaconSecondaryTwo:
return (CXuiControl *)m_secondaryTwo;
break;
case eSectionBeaconConfirm:
return (CXuiControl *)m_confirmButton;
break;
default:
break;
}
return NULL;
}
CXuiCtrlSlotList* CXuiSceneBeacon::GetSectionSlotList( ESceneSection eSection )
{
switch( eSection )
{
case eSectionBeaconItem:
return m_paymentControl;
break;
case eSectionBeaconInventory:
return m_inventoryControl;
break;
case eSectionBeaconUsing:
return m_useRowControl;
break;
default:
break;
}
return NULL;
}
void CXuiSceneBeacon::InitDataAssociations(int iPad, AbstractContainerMenu *menu, int startIndex)
{
m_paymentControl->SetData( iPad, menu, 1, 1, BeaconMenu::PAYMENT_SLOT );
int invRows = (BeaconMenu::INV_SLOT_END - BeaconMenu::INV_SLOT_START) / 9;
m_inventoryControl->SetData( iPad, menu, invRows, 9, BeaconMenu::INV_SLOT_START );
m_useRowControl->SetData( iPad, menu, 1, 9, BeaconMenu::USE_ROW_SLOT_START );
CXuiSceneAbstractContainer::InitDataAssociations(iPad, menu, BeaconMenu::INV_SLOT_START);
}
void CXuiSceneBeacon::SetConfirmButtonEnabled(bool enabled)
{
if(m_confirmButton != NULL)
m_confirmButton->SetButtonActive(enabled);
}
void CXuiSceneBeacon::AddPowerButton(int id, int icon, int tier, int count, bool active, bool selected)
{
switch(tier)
{
case 0:
if(count == 0)
{
if(m_primaryTierOneOne != NULL) m_primaryTierOneOne->SetData(id, icon, active, selected);
}
else
{
if(m_primaryTierOneTwo != NULL) m_primaryTierOneTwo->SetData(id, icon, active, selected);
}
break;
case 1:
if(count == 0)
{
if(m_primaryTierTwoOne != NULL) m_primaryTierTwoOne->SetData(id, icon, active, selected);
}
else
{
if(m_primaryTierTwoTwo != NULL) m_primaryTierTwoTwo->SetData(id, icon, active, selected);
}
break;
case 2:
if(m_primaryTierThree != NULL) m_primaryTierThree->SetData(id, icon, active, selected);
break;
case 3:
if(count == 0)
{
if(m_secondaryOne != NULL) m_secondaryOne->SetData(id, icon, active, selected);
}
else
{
if(m_secondaryTwo != NULL) m_secondaryTwo->SetData(id, icon, active, selected);
}
break;
};
}
int CXuiSceneBeacon::GetPowerButtonId(ESceneSection eSection)
{
switch(eSection)
{
case eSectionBeaconPrimaryTierOneOne:
return m_primaryTierOneOne != NULL ? m_primaryTierOneOne->GetData() : 0;
case eSectionBeaconPrimaryTierOneTwo:
return m_primaryTierOneTwo != NULL ? m_primaryTierOneTwo->GetData() : 0;
case eSectionBeaconPrimaryTierTwoOne:
return m_primaryTierTwoOne != NULL ? m_primaryTierTwoOne->GetData() : 0;
case eSectionBeaconPrimaryTierTwoTwo:
return m_primaryTierTwoTwo != NULL ? m_primaryTierTwoTwo->GetData() : 0;
case eSectionBeaconPrimaryTierThree:
return m_primaryTierThree != NULL ? m_primaryTierThree->GetData() : 0;
case eSectionBeaconSecondaryOne:
return m_secondaryOne != NULL ? m_secondaryOne->GetData() : 0;
case eSectionBeaconSecondaryTwo:
return m_secondaryTwo != NULL ? m_secondaryTwo->GetData() : 0;
};
return 0;
}
bool CXuiSceneBeacon::IsPowerButtonSelected(ESceneSection eSection)
{
switch(eSection)
{
case eSectionBeaconPrimaryTierOneOne:
return m_primaryTierOneOne != NULL ? m_primaryTierOneOne->IsButtonSelected() : false;
case eSectionBeaconPrimaryTierOneTwo:
return m_primaryTierOneTwo != NULL ? m_primaryTierOneTwo->IsButtonSelected() : false;
case eSectionBeaconPrimaryTierTwoOne:
return m_primaryTierTwoOne != NULL ? m_primaryTierTwoOne->IsButtonSelected() : false;
case eSectionBeaconPrimaryTierTwoTwo:
return m_primaryTierTwoTwo != NULL ? m_primaryTierTwoTwo->IsButtonSelected() : false;
case eSectionBeaconPrimaryTierThree:
return m_primaryTierThree != NULL ? m_primaryTierThree->IsButtonSelected() : false;
case eSectionBeaconSecondaryOne:
return m_secondaryOne != NULL ? m_secondaryOne->IsButtonSelected() : false;
case eSectionBeaconSecondaryTwo:
return m_secondaryTwo != NULL ? m_secondaryTwo->IsButtonSelected() : false;
};
return false;
}
void CXuiSceneBeacon::SetPowerButtonSelected(ESceneSection eSection)
{
switch(eSection)
{
case eSectionBeaconPrimaryTierOneOne:
case eSectionBeaconPrimaryTierOneTwo:
case eSectionBeaconPrimaryTierTwoOne:
case eSectionBeaconPrimaryTierTwoTwo:
case eSectionBeaconPrimaryTierThree:
if(m_primaryTierOneOne != NULL) m_primaryTierOneOne->SetButtonSelected(false);
if(m_primaryTierOneTwo != NULL) m_primaryTierOneTwo->SetButtonSelected(false);
if(m_primaryTierTwoOne != NULL) m_primaryTierTwoOne->SetButtonSelected(false);
if(m_primaryTierTwoTwo != NULL) m_primaryTierTwoTwo->SetButtonSelected(false);
if(m_primaryTierThree != NULL) m_primaryTierThree->SetButtonSelected(false);
break;
case eSectionBeaconSecondaryOne:
case eSectionBeaconSecondaryTwo:
if(m_secondaryOne != NULL) m_secondaryOne->SetButtonSelected(false);
if(m_secondaryTwo != NULL) m_secondaryTwo->SetButtonSelected(false);
break;
};
switch(eSection)
{
case eSectionBeaconPrimaryTierOneOne:
if(m_primaryTierOneOne != NULL) m_primaryTierOneOne->SetButtonSelected(true);
break;
case eSectionBeaconPrimaryTierOneTwo:
if(m_primaryTierOneTwo != NULL) m_primaryTierOneTwo->SetButtonSelected(true);
break;
case eSectionBeaconPrimaryTierTwoOne:
if(m_primaryTierTwoOne != NULL) m_primaryTierTwoOne->SetButtonSelected(true);
break;
case eSectionBeaconPrimaryTierTwoTwo:
if(m_primaryTierTwoTwo != NULL) m_primaryTierTwoTwo->SetButtonSelected(true);
break;
case eSectionBeaconPrimaryTierThree:
if(m_primaryTierThree != NULL) m_primaryTierThree->SetButtonSelected(true);
break;
case eSectionBeaconSecondaryOne:
if(m_secondaryOne != NULL) m_secondaryOne->SetButtonSelected(true);
break;
case eSectionBeaconSecondaryTwo:
if(m_secondaryTwo != NULL) m_secondaryTwo->SetButtonSelected(true);
break;
};
}
HRESULT CXuiSceneBeacon::handleCustomTimer( XUIMessageTimer *pTimer, BOOL& bHandled )
{
if( pTimer->nId == BEACON_TICK_TIMER_ID )
{
handleTick();
bHandled = TRUE;
return S_OK;
}
return CXuiSceneAbstractContainer::handleCustomTimer( pTimer, bHandled );
}
void CXuiSceneBeacon::handleTick()
{
IUIScene_BeaconMenu::handleTick();
}