the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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}