the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 153 lines 4.7 kB view raw
1#include "stdafx.h" 2 3#include "..\..\..\Minecraft.World\FurnaceMenu.h" 4#include "..\..\MultiplayerLocalPlayer.h" 5#include "..\..\Common\Tutorial\Tutorial.h" 6#include "..\..\Common\Tutorial\TutorialMode.h" 7#include "..\..\Common\Tutorial\TutorialEnum.h" 8#include "..\..\Minecraft.h" 9#include "XUI_Ctrl_SlotList.h" 10#include "XUI_Scene_Furnace.h" 11#include "XUI_Ctrl_BurnProgress.h" 12#include "XUI_Ctrl_FireProgress.h" 13 14 15//-------------------------------------------------------------------------------------- 16// Name: CXuiSceneFurnace::OnInit 17// Desc: Message handler for XM_INIT 18//-------------------------------------------------------------------------------------- 19HRESULT CXuiSceneFurnace::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) 20{ 21 MapChildControls(); 22 23 XuiControlSetText(m_FurnaceText,app.GetString(IDS_FURNACE)); 24 XuiControlSetText(m_IngredientText,app.GetString(IDS_INGREDIENT)); 25 XuiControlSetText(m_FuelText,app.GetString(IDS_FUEL)); 26 27 Minecraft *pMinecraft = Minecraft::GetInstance(); 28 29 FurnaceScreenInput* initData = (FurnaceScreenInput*)pInitData->pvInitData; 30 m_iPad=initData->iPad; 31 m_bSplitscreen=initData->bSplitscreen; 32 33 // if we are in splitscreen, then we need to figure out if we want to move this scene 34 35 if(m_bSplitscreen) 36 { 37 app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); 38 } 39 40#ifdef _XBOX 41 if( pMinecraft->localgameModes[m_iPad] != NULL ) 42 { 43 TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad]; 44 m_previousTutorialState = gameMode->getTutorial()->getCurrentState(); 45 gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Furnace_Menu, this); 46 } 47#endif 48 49 FurnaceMenu* menu = new FurnaceMenu( initData->inventory, initData->furnace ); 50 51 52 InitDataAssociations(m_iPad, menu); 53 54 m_litProgressControl->SetUserData( initData->furnace.get() ); 55 56 m_burnProgress->SetUserData( initData->furnace.get() ); 57 58 CXuiSceneAbstractContainer::Initialize( m_iPad, menu, true, FurnaceMenu::INV_SLOT_START, eSectionFurnaceUsing, eSectionFurnaceMax ); 59 60 app.SetRichPresenceContext(m_iPad,CONTEXT_GAME_STATE_FORGING); 61 62 delete initData; 63 64 return S_OK; 65} 66 67HRESULT CXuiSceneFurnace::OnDestroy() 68{ 69 Minecraft *pMinecraft = Minecraft::GetInstance(); 70 71#ifdef _XBOX 72 if( pMinecraft->localgameModes[m_iPad] != NULL ) 73 { 74 TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad]; 75 if(gameMode != NULL) gameMode->getTutorial()->changeTutorialState(m_previousTutorialState); 76 } 77#endif 78 79 // 4J Stu - Fix for #11302 - TCR 001: Network Connectivity: Host crashed after being killed by the client while accessing a chest during burst packet loss. 80 // We need to make sure that we call closeContainer() anytime this menu is closed, even if it is forced to close by some other reason (like the player dying) 81 if(Minecraft::GetInstance()->localplayers[m_iPad] != NULL) Minecraft::GetInstance()->localplayers[m_iPad]->closeContainer(); 82 return S_OK; 83} 84 85CXuiControl* CXuiSceneFurnace::GetSectionControl( ESceneSection eSection ) 86{ 87 switch( eSection ) 88 { 89 case eSectionFurnaceResult: 90 return (CXuiControl *)m_resultControl; 91 break; 92 case eSectionFurnaceFuel: 93 return (CXuiControl *)m_fuelControl; 94 break; 95 case eSectionFurnaceIngredient: 96 return (CXuiControl *)m_ingredientControl; 97 break; 98 case eSectionFurnaceInventory: 99 return (CXuiControl *)m_inventoryControl; 100 break; 101 case eSectionFurnaceUsing: 102 return (CXuiControl *)m_useRowControl; 103 break; 104 default: 105 assert( false ); 106 break; 107 } 108 return NULL; 109} 110 111CXuiCtrlSlotList* CXuiSceneFurnace::GetSectionSlotList( ESceneSection eSection ) 112{ 113 switch( eSection ) 114 { 115 case eSectionFurnaceResult: 116 return m_resultControl; 117 break; 118 case eSectionFurnaceFuel: 119 return m_fuelControl; 120 break; 121 case eSectionFurnaceIngredient: 122 return m_ingredientControl; 123 break; 124 case eSectionFurnaceInventory: 125 return m_inventoryControl; 126 break; 127 case eSectionFurnaceUsing: 128 return m_useRowControl; 129 break; 130 default: 131 assert( false ); 132 break; 133 } 134 return NULL; 135} 136 137// 4J Stu - Added to support auto-save. Need to re-associate on a navigate back 138void CXuiSceneFurnace::InitDataAssociations(int iPad, AbstractContainerMenu *menu, int startIndex /*= 0*/) 139{ 140 // TODO Inventory dimensions need defined as constants 141 m_ingredientControl->SetData( iPad, menu, 1, 1, FurnaceMenu::INGREDIENT_SLOT ); 142 143 m_fuelControl->SetData( iPad, menu, 1, 1, FurnaceMenu::FUEL_SLOT ); 144 145 m_resultControl->SetData( iPad, menu, 1, 1, FurnaceMenu::RESULT_SLOT ); 146 147 //m_litProgressControl->SetUserData( initData->furnace.get() ); 148 149 //m_burnProgress->SetUserData( initData->furnace.get() ); 150 151 CXuiSceneAbstractContainer::InitDataAssociations(iPad, menu, FurnaceMenu::INV_SLOT_START); 152} 153