Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
6.7 kB · 209 lines
C++
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209#include "stdafx.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
#include "..\..\..\Minecraft.World\Container.h"#include "..\..\..\Minecraft.World\Slot.h"#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.h"#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"#include "..\..\..\Minecraft.World\net.minecraft.world.entity.player.h"
#include "..\..\..\Minecraft.World\net.minecraft.stats.h"#include "..\..\MultiplayerLocalPlayer.h"#include "..\..\Common\Tutorial\Tutorial.h"#include "..\..\Common\Tutorial\TutorialMode.h"#include "..\..\Minecraft.h"
#include "XUI_Scene_AbstractContainer.h"#include "XUI_Ctrl_SlotItem.h"#include "XUI_Ctrl_SlotList.h"#include "XUI_Ctrl_SlotItemListItem.h"
#include "..\..\Common\Potion_macros.h"
//--------------------------------------------------------------------------------------// Name: CXuiSceneInventoryCreative::OnInit// Desc: Message handler for XM_INIT//--------------------------------------------------------------------------------------HRESULT CXuiSceneInventoryCreative::OnInit( XUIMessageInit *pInitData, BOOL &bHandled ){ D3DXVECTOR3 vec; MapChildControls();
Minecraft *pMinecraft = Minecraft::GetInstance();
InventoryScreenInput *initData = (InventoryScreenInput *)pInitData->pvInitData; m_iPad=initData->iPad; m_bSplitscreen=initData->bSplitscreen;
// if we are in splitscreen, then we need to figure out if we want to move this scene
if(m_bSplitscreen) { if(m_bSplitscreen) { app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); } }
#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_Creative_Inventory_Menu, this); }#endif
// 4J JEV - Does this still count as opening the inventory? initData->player->awardStat(GenericStats::openInventory(), GenericStats::param_noArgs());
// 4J JEV - Item Picker Menu shared_ptr<SimpleContainer> creativeContainer = shared_ptr<SimpleContainer>(new SimpleContainer( 0, TabSpec::MAX_SIZE + 9 )); itemPickerMenu = new ItemPickerMenu(creativeContainer, initData->player->inventory); // 4J JEV - InitDataAssociations. m_containerControl->SetData( initData->iPad, itemPickerMenu, TabSpec::rows, TabSpec::columns, 0, TabSpec::MAX_SIZE ); m_useRowControl->SetData( initData->iPad, itemPickerMenu, 1, 9, TabSpec::MAX_SIZE, TabSpec::MAX_SIZE + 9 ); m_pointerControl->SetUserIndex(m_pointerControl->m_hObj, initData->iPad);
// Initialize superclass. CXuiSceneAbstractContainer::Initialize( initData->iPad, itemPickerMenu, false, -1, eSectionInventoryCreativeUsing, eSectionInventoryCreativeMax, initData->bNavigateBack );
delete initData;
// Change the point at which the cursor stops so we can't move the pointer over the tabs D3DXVECTOR3 containerPos; m_containerControl->GetPosition(&containerPos); m_fPointerMinY += containerPos.y;
// 4J JEV - Settup Tabs for (int i = 0; i < eCreativeInventoryTab_COUNT; i++) { m_hTabGroupA[i].SetShow(FALSE); }
m_curTab = eCreativeInventoryTab_COUNT; switchTab(eCreativeInventoryTab_BuildingBlocks);
return S_OK;}
HRESULT CXuiSceneInventoryCreative::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
// 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. // 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) if(Minecraft::GetInstance()->localplayers[m_iPad] != NULL) Minecraft::GetInstance()->localplayers[m_iPad]->closeContainer(); return S_OK;}
////////////////////////////////////////////////////////////////////////////// OnTransitionEnd////////////////////////////////////////////////////////////////////////////HRESULT CXuiSceneInventoryCreative::OnTransitionEnd( XUIMessageTransition *pTransData, BOOL& bHandled ){ // are we being destroyed? If so, don't do anything if(pTransData->dwTransAction==XUI_TRANSITION_ACTION_DESTROY ) { return S_OK; }
// Fix for issue caused by autosave while crafting is up if(pTransData->dwTransType == XUI_TRANSITION_TO || pTransData->dwTransType == XUI_TRANSITION_BACKTO) { for(int i=0;i<eCreativeInventoryTab_COUNT;i++) { m_hGroupIconA[i].PlayVisualRange(specs[i]->m_icon,NULL,specs[i]->m_icon); XuiElementSetShow(m_hGroupIconA[i].m_hObj,TRUE); } }
return S_OK;}
CXuiControl* CXuiSceneInventoryCreative::GetSectionControl( ESceneSection eSection ){ switch( eSection ) { case eSectionInventoryCreativeUsing: return (CXuiControl *)m_useRowControl; break; case eSectionInventoryCreativeSelector: return (CXuiControl *)m_containerControl; break; default: assert( false ); break; } return NULL;}
CXuiCtrlSlotList* CXuiSceneInventoryCreative::GetSectionSlotList( ESceneSection eSection ){ switch( eSection ) { case eSectionInventoryCreativeUsing: return m_useRowControl; break; case eSectionInventoryCreativeSelector: return m_containerControl; break; default: assert( false ); break; } return NULL;}
void CXuiSceneInventoryCreative::updateTabHighlightAndText(ECreativeInventoryTabs tab){ if (m_curTab < eCreativeInventoryTab_COUNT) { m_hTabGroupA[m_curTab].SetShow(FALSE); }
m_hTabGroupA[tab].SetShow(TRUE); wstring wsText=app.GetString(specs[tab]->m_descriptionId); m_GroupDescription.SetText(wsText.c_str()); m_GroupDescription.SetShow(TRUE);}
void CXuiSceneInventoryCreative::updateScrollCurrentPage(int currentPage, int pageCount){ m_pageSlider.SetEnable(pageCount > 1);
if(pageCount == 1) { m_pageSlider.SetRange(0,1); m_pageSlider.SetValue(0); } else { m_pageSlider.SetRange(0,pageCount - 1); m_pageSlider.SetValue(currentPage - 1); }
m_scrollUp.SetShow(currentPage > 1); m_scrollUp.PlayOptionalVisual(L"ScrollMore",L"EndScrollMore");
m_scrollDown.SetShow(currentPage < pageCount); m_scrollDown.PlayOptionalVisual(L"ScrollMore",L"EndScrollMore");
//wchar_t pageNum[10]; //swprintf(pageNum,10,L"%d/%d",currentPage,pageCount); //m_pageNumber.SetText(pageNum);}