the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 156 lines 5.0 kB view raw
1#include "stdafx.h" 2 3#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.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_BrewingStand.h" 11#include "XUI_Ctrl_BrewProgress.h" 12#include "XUI_Ctrl_BubblesProgress.h" 13 14 15//-------------------------------------------------------------------------------------- 16// Name: CXuiSceneBrewingStand::OnInit 17// Desc: Message handler for XM_INIT 18//-------------------------------------------------------------------------------------- 19HRESULT CXuiSceneBrewingStand::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) 20{ 21 MapChildControls(); 22 23 XuiControlSetText(m_BrewingStandText,app.GetString(IDS_BREWING_STAND)); 24 25 Minecraft *pMinecraft = Minecraft::GetInstance(); 26 27 BrewingScreenInput* initData = (BrewingScreenInput*)pInitData->pvInitData; 28 m_iPad=initData->iPad; 29 m_bSplitscreen=initData->bSplitscreen; 30 31 // if we are in splitscreen, then we need to figure out if we want to move this scene 32 33 if(m_bSplitscreen) 34 { 35 app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); 36 } 37 38#ifdef _XBOX 39 if( pMinecraft->localgameModes[m_iPad] != NULL ) 40 { 41 TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad]; 42 m_previousTutorialState = gameMode->getTutorial()->getCurrentState(); 43 gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Brewing_Menu, this); 44 } 45#endif 46 47 BrewingStandMenu* menu = new BrewingStandMenu( initData->inventory, initData->brewingStand ); 48 49 50 InitDataAssociations(m_iPad, menu); 51 52 m_progressControl->SetUserData( initData->brewingStand.get() ); 53 54 m_bubbleProgress->SetUserData( initData->brewingStand.get() ); 55 56 delete initData; 57 58 CXuiSceneAbstractContainer::Initialize( m_iPad, menu, true, BrewingStandMenu::INV_SLOT_START, eSectionBrewingUsing, eSectionBrewingMax ); 59 60 //app.SetRichPresenceContextValue(m_iPad,CONTEXT_GAME_STATE_FORGING); 61 62 return S_OK; 63} 64 65HRESULT CXuiSceneBrewingStand::OnDestroy() 66{ 67 Minecraft *pMinecraft = Minecraft::GetInstance(); 68 69#ifdef _XBOX 70 if( pMinecraft->localgameModes[m_iPad] != NULL ) 71 { 72 TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad]; 73 if(gameMode != NULL) gameMode->getTutorial()->changeTutorialState(m_previousTutorialState); 74 } 75#endif 76 77 // 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. 78 // 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) 79 if(Minecraft::GetInstance()->localplayers[m_iPad] != NULL) Minecraft::GetInstance()->localplayers[m_iPad]->closeContainer(); 80 return S_OK; 81} 82 83CXuiControl* CXuiSceneBrewingStand::GetSectionControl( ESceneSection eSection ) 84{ 85 switch( eSection ) 86 { 87 case eSectionBrewingBottle1: 88 return (CXuiControl *)m_bottle1Control; 89 break; 90 case eSectionBrewingBottle2: 91 return (CXuiControl *)m_bottle2Control; 92 break; 93 case eSectionBrewingBottle3: 94 return (CXuiControl *)m_bottle3Control; 95 break; 96 case eSectionBrewingIngredient: 97 return (CXuiControl *)m_ingredientControl; 98 break; 99 case eSectionBrewingInventory: 100 return (CXuiControl *)m_inventoryControl; 101 break; 102 case eSectionBrewingUsing: 103 return (CXuiControl *)m_useRowControl; 104 break; 105 default: 106 assert( false ); 107 break; 108 } 109 return NULL; 110} 111 112CXuiCtrlSlotList* CXuiSceneBrewingStand::GetSectionSlotList( ESceneSection eSection ) 113{ 114 switch( eSection ) 115 { 116 case eSectionBrewingBottle1: 117 return m_bottle1Control; 118 break; 119 case eSectionBrewingBottle2: 120 return m_bottle2Control; 121 break; 122 case eSectionBrewingBottle3: 123 return m_bottle3Control; 124 break; 125 case eSectionBrewingIngredient: 126 return m_ingredientControl; 127 break; 128 case eSectionBrewingInventory: 129 return m_inventoryControl; 130 break; 131 case eSectionBrewingUsing: 132 return m_useRowControl; 133 break; 134 default: 135 assert( false ); 136 break; 137 } 138 return NULL; 139} 140 141// 4J Stu - Added to support auto-save. Need to re-associate on a navigate back 142void CXuiSceneBrewingStand::InitDataAssociations(int iPad, AbstractContainerMenu *menu, int startIndex /*= 0*/) 143{ 144 // TODO Inventory dimensions need defined as constants 145 m_ingredientControl->SetData( iPad, menu, 1, 1, BrewingStandMenu::INGREDIENT_SLOT ); 146 147 m_bottle1Control->SetData( iPad, menu, 1, 1, BrewingStandMenu::BOTTLE_SLOT_START ); 148 m_bottle2Control->SetData( iPad, menu, 1, 1, BrewingStandMenu::BOTTLE_SLOT_START + 1); 149 m_bottle3Control->SetData( iPad, menu, 1, 1, BrewingStandMenu::BOTTLE_SLOT_START + 2); 150 151 //m_litProgressControl->SetUserData( initData->furnace.get() ); 152 153 //m_burnProgress->SetUserData( initData->furnace.get() ); 154 155 CXuiSceneAbstractContainer::InitDataAssociations(iPad, menu, BrewingStandMenu::INV_SLOT_START); 156}