#include "stdafx.h" #include "IUIScene_InventoryMenu.h" #include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h" #include "..\..\Minecraft.h" #include "..\..\MultiPlayerLocalPlayer.h" IUIScene_AbstractContainerMenu::ESceneSection IUIScene_InventoryMenu::GetSectionAndSlotInDirection(ESceneSection eSection, ETapState eTapDirection, int* piTargetX, int* piTargetY) { Minecraft* pMinecraft = Minecraft::GetInstance(); ESceneSection newSection = eSection; int xOffset = 0; int yOffset = 0; //auto containerData = this->m_containerData; switch (eSection) { case eSectionInventoryInventory: if (eTapDirection == eTapStateDown) { newSection = eSectionInventoryUsing; } else if (eTapDirection == eTapStateUp) { if (app.GetGameSettings(getPad(), eGameSetting_ClassicCrafting) && *piTargetX >= 3) { if (*piTargetX < 7) { newSection = eSectionInventoryCraftingGrid; xOffset = 5; } else { newSection = eSectionInventoryCraftingResult; } } else { newSection = eSectionInventoryArmor; } } break; case eSectionInventoryUsing: if (eTapDirection == eTapStateUp) { newSection = eSectionInventoryInventory; } else if (eTapDirection == eTapStateDown) { if (app.GetGameSettings(getPad(), eGameSetting_ClassicCrafting) && *piTargetX >= 3) { if (*piTargetX < 7) { newSection = eSectionInventoryCraftingGrid; xOffset = 5; } else { newSection = eSectionInventoryCraftingResult; } } else { newSection = eSectionInventoryArmor; } } break; case eSectionInventoryArmor: if (eTapDirection == eTapStateDown) { newSection = eSectionInventoryInventory; } else if (eTapDirection == eTapStateUp) { newSection = eSectionInventoryUsing; } else if (eTapDirection == eTapStateLeft && app.GetGameSettings(getPad(), eGameSetting_ClassicCrafting)) { newSection = eSectionInventoryCraftingResult; } else if (eTapDirection == eTapStateRight && app.GetGameSettings(getPad(), eGameSetting_ClassicCrafting)) { newSection = eSectionInventoryCraftingGrid; xOffset = 1; yOffset = 1; } break; case eSectionInventoryCraftingGrid: if (app.GetGameSettings(getPad(), eGameSetting_ClassicCrafting)) { if (eTapDirection == eTapStateUp) { newSection = eSectionInventoryUsing; xOffset = -5; } else if (eTapDirection == eTapStateDown) { newSection = eSectionInventoryInventory; xOffset = -5; } else if (eTapDirection == eTapStateLeft) { newSection = eSectionInventoryArmor; yOffset = -1; } else if (eTapDirection == eTapStateRight) { newSection = eSectionInventoryCraftingResult; } } break; case eSectionInventoryCraftingResult: if (app.GetGameSettings(getPad(), eGameSetting_ClassicCrafting)) { if (eTapDirection == eTapStateUp) { newSection = eSectionInventoryUsing; xOffset = -8; } else if (eTapDirection == eTapStateDown) { newSection = eSectionInventoryInventory; xOffset = -8; } else if (eTapDirection == eTapStateLeft) { newSection = eSectionInventoryCraftingGrid; //*piTargetX = containerData->getSectionColumns(eSectionInventoryCraftingGrid); } else if (eTapDirection == eTapStateRight) { newSection = eSectionInventoryArmor; } } break; default: assert(false); break; } IUIScene_AbstractContainerMenu::updateSlotPosition(eSection, newSection, eTapDirection, piTargetX, piTargetY, xOffset, yOffset); return newSection; } int IUIScene_InventoryMenu::getSectionStartOffset(ESceneSection eSection) { int offset = 0; switch (eSection) { case eSectionInventoryArmor: offset = InventoryMenu::ARMOR_SLOT_START; break; case eSectionInventoryInventory: offset = InventoryMenu::INV_SLOT_START; break; case eSectionInventoryUsing: offset = InventoryMenu::INV_SLOT_START + 27; break; case eSectionInventoryCraftingGrid: offset = InventoryMenu::CRAFT_SLOT_START; break; case eSectionInventoryCraftingResult: offset = InventoryMenu::RESULT_SLOT; break; default: assert(false); break; } return offset; }