From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- .../Common/UI/UIScene_CraftingMenu.cpp | 769 +++++++++++++++++++++ 1 file changed, 769 insertions(+) create mode 100644 Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp (limited to 'Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp') diff --git a/Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp b/Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp new file mode 100644 index 00000000..5b729069 --- /dev/null +++ b/Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp @@ -0,0 +1,769 @@ +#include "stdafx.h" +#include "UI.h" +#include "..\..\Minecraft.h" +#include "..\..\MultiplayerLocalPlayer.h" +#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h" +#include "UIScene_CraftingMenu.h" + +#ifdef __PSVITA__ +#define GAME_CRAFTING_TOUCHUPDATE_TIMER_ID 0 +#define GAME_CRAFTING_TOUCHUPDATE_TIMER_TIME 100 +#endif + +UIScene_CraftingMenu::UIScene_CraftingMenu(int iPad, void *_initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) +{ + m_bIgnoreKeyPresses = false; + + CraftingPanelScreenInput* initData = (CraftingPanelScreenInput*)_initData; + m_iContainerType=initData->iContainerType; + m_pPlayer=initData->player; + m_bSplitscreen=initData->bSplitscreen; + + // Setup all the Iggy references we need for this scene + initialiseMovie(); + + for(unsigned int i = 0; i < 4; ++i) m_labelIngredientsDesc[i].init(L""); + m_labelDescription.init(L""); + m_labelGroupName.init(L""); + m_labelItemName.init(L""); + m_labelInventory.init( app.GetString(IDS_INVENTORY) ); + m_labelIngredients.init( app.GetString(IDS_INGREDIENTS) ); + + if(m_iContainerType==RECIPE_TYPE_2x2) + { + m_menu = m_pPlayer->inventoryMenu; + m_iMenuInventoryStart = InventoryMenu::INV_SLOT_START; + m_iMenuHotBarStart = InventoryMenu::USE_ROW_SLOT_START; + } + else + { + CraftingMenu *menu = new CraftingMenu(m_pPlayer->inventory, m_pPlayer->level, initData->x, initData->y, initData->z); + Minecraft::GetInstance()->localplayers[m_iPad]->containerMenu = menu; + + m_menu = menu; + m_iMenuInventoryStart = CraftingMenu::INV_SLOT_START; + m_iMenuHotBarStart = CraftingMenu::USE_ROW_SLOT_START; + } + m_slotListInventory.addSlots(CRAFTING_INVENTORY_SLOT_START,CRAFTING_INVENTORY_SLOT_END - CRAFTING_INVENTORY_SLOT_START); + m_slotListHotBar.addSlots(CRAFTING_HOTBAR_SLOT_START, CRAFTING_HOTBAR_SLOT_END - CRAFTING_HOTBAR_SLOT_START); + +#if TO_BE_IMPLEMENTED + // if we are in splitscreen, then we need to figure out if we want to move this scene + if(m_bSplitscreen) + { + app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); + } + + XuiElementSetShow(m_hGrid,TRUE); + XuiElementSetShow(m_hPanel,TRUE); +#endif + + if(m_iContainerType==RECIPE_TYPE_3x3) + { + m_iIngredientsMaxSlotC = m_iIngredients3x3SlotC; + m_pGroupA=(Recipy::_eGroupType *)&m_GroupTypeMapping9GridA; + m_pGroupTabA=(_eGroupTab *)&m_GroupTabBkgMapping3x3A; + m_iCraftablesMaxHSlotC=m_iMaxHSlot3x3C; + } + else + { + m_iIngredientsMaxSlotC = m_iIngredients2x2SlotC; + m_pGroupA=(Recipy::_eGroupType *)&m_GroupTypeMapping4GridA; + m_pGroupTabA=(_eGroupTab *)&m_GroupTabBkgMapping2x2A; + m_iCraftablesMaxHSlotC=m_iMaxHSlot2x2C; + } + +#if TO_BE_IMPLEMENTED + + + // display the first group tab + m_hTabGroupA[m_iGroupIndex].SetShow(TRUE); + + // store the slot 0 position + m_pHSlotsBrushImageControl[0]->GetPosition(&m_vSlot0Pos); + m_pHSlotsBrushImageControl[1]->GetPosition(&vec); + m_fSlotSize=vec.x-m_vSlot0Pos.x; + + // store the slot 0 highlight position + m_hHighlight.GetPosition(&m_vSlot0HighlightPos); + // Store the V slot position + m_hScrollBar2.GetPosition(&m_vSlot0V2ScrollPos); + m_hScrollBar3.GetPosition(&m_vSlot0V3ScrollPos); + + // get the position of the slot from the xui, and apply any offset needed + for(int i=0;iSetShow(FALSE); + } + + XuiElementSetShow(m_hGridInventory,FALSE); + + m_hScrollBar2.SetShow(FALSE); + m_hScrollBar3.SetShow(FALSE); + +#endif + + app.SetRichPresenceContext(m_iPad,CONTEXT_GAME_STATE_CRAFTING); + setGroupText(GetGroupNameText(m_pGroupA[m_iGroupIndex])); + + // Update the tutorial state + Minecraft *pMinecraft = Minecraft::GetInstance(); + + if( pMinecraft->localgameModes[m_iPad] != NULL ) + { + TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad]; + m_previousTutorialState = gameMode->getTutorial()->getCurrentState(); + if(m_iContainerType==RECIPE_TYPE_2x2) + { + gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_2x2Crafting_Menu, this); + } + else + { + gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_3x3Crafting_Menu, this); + } + } + +#ifdef _TO_BE_IMPLEMENTED + XuiSetTimer(m_hObj,IGNORE_KEYPRESS_TIMERID,IGNORE_KEYPRESS_TIME); +#endif + + for(unsigned int i = 0; i < 4; ++i) + { + m_slotListIngredients[i].addSlot(CRAFTING_INGREDIENTS_DESCRIPTION_START + i); + } + m_slotListCraftingOutput.addSlot(CRAFTING_OUTPUT_SLOT_START); + m_slotListIngredientsLayout.addSlots(CRAFTING_INGREDIENTS_LAYOUT_START, m_iIngredientsMaxSlotC); + + // 3 Slot vertical scroll + m_slotListCrafting3VSlots[0].addSlot(CRAFTING_V_SLOT_START + 0); + m_slotListCrafting3VSlots[1].addSlot(CRAFTING_V_SLOT_START + 1); + m_slotListCrafting3VSlots[2].addSlot(CRAFTING_V_SLOT_START + 2); + + // 2 Slot vertical scroll + // 2 slot scroll has swapped order + m_slotListCrafting2VSlots[0].addSlot(CRAFTING_V_SLOT_START + 1); + m_slotListCrafting2VSlots[1].addSlot(CRAFTING_V_SLOT_START + 0); + + // 1 Slot scroll (for 480 mainly) + m_slotListCrafting1VSlots.addSlot(CRAFTING_V_SLOT_START); + + m_slotListCraftingHSlots.addSlots(CRAFTING_H_SLOT_START,m_iCraftablesMaxHSlotC); + + // Check which recipes are available with the resources we have + CheckRecipesAvailable(); + // reset the vertical slots + iVSlotIndexA[0]=CanBeMadeA[m_iCurrentSlotHIndex].iCount-1; + iVSlotIndexA[1]=0; + iVSlotIndexA[2]=1; + UpdateVerticalSlots(); + UpdateHighlight(); + + if(initData) delete initData; + + // in this scene, we override the press sound with our own for crafting success or fail + ui.OverrideSFX(m_iPad,ACTION_MENU_A,true); + ui.OverrideSFX(m_iPad,ACTION_MENU_OK,true); +#ifdef __ORBIS__ + ui.OverrideSFX(m_iPad,ACTION_MENU_TOUCHPAD_PRESS,true); +#endif + ui.OverrideSFX(m_iPad,ACTION_MENU_LEFT_SCROLL,true); + ui.OverrideSFX(m_iPad,ACTION_MENU_RIGHT_SCROLL,true); + ui.OverrideSFX(m_iPad,ACTION_MENU_LEFT,true); + ui.OverrideSFX(m_iPad,ACTION_MENU_RIGHT,true); + ui.OverrideSFX(m_iPad,ACTION_MENU_UP,true); + ui.OverrideSFX(m_iPad,ACTION_MENU_DOWN,true); + + // 4J-PB - Must be after the CanBeMade list has been set up with CheckRecipesAvailable + UpdateTooltips(); + +#ifdef __PSVITA__ + // initialise vita touch controls with ids + for(unsigned int i = 0; i < ETouchInput_Count; ++i) + { + m_TouchInput[i].init(i); + } + ui.TouchBoxRebuild(this); +#endif +} + +void UIScene_CraftingMenu::handleDestroy() +{ + Minecraft *pMinecraft = Minecraft::GetInstance(); + + if( pMinecraft->localgameModes[m_iPad] != NULL ) + { + TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad]; + if(gameMode != NULL) gameMode->getTutorial()->changeTutorialState(m_previousTutorialState); + } + + // 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(); + + ui.OverrideSFX(m_iPad,ACTION_MENU_A,false); + ui.OverrideSFX(m_iPad,ACTION_MENU_OK,false); +#ifdef __ORBIS__ + ui.OverrideSFX(m_iPad,ACTION_MENU_TOUCHPAD_PRESS,false); +#endif + ui.OverrideSFX(m_iPad,ACTION_MENU_LEFT_SCROLL,false); + ui.OverrideSFX(m_iPad,ACTION_MENU_RIGHT_SCROLL,false); + ui.OverrideSFX(m_iPad,ACTION_MENU_LEFT,false); + ui.OverrideSFX(m_iPad,ACTION_MENU_RIGHT,false); + ui.OverrideSFX(m_iPad,ACTION_MENU_UP,false); + ui.OverrideSFX(m_iPad,ACTION_MENU_DOWN,false); +} + +EUIScene UIScene_CraftingMenu::getSceneType() +{ + if(m_iContainerType==RECIPE_TYPE_3x3) + { + return eUIScene_Crafting3x3Menu; + } + else + { + return eUIScene_Crafting2x2Menu; + } +} + +wstring UIScene_CraftingMenu::getMoviePath() +{ + if(app.GetLocalPlayerCount() > 1) + { + m_bSplitscreen = true; + if(m_iContainerType==RECIPE_TYPE_3x3) + { + return L"Crafting3x3MenuSplit"; + } + else + { + return L"Crafting2x2MenuSplit"; + } + } + else + { + if(m_iContainerType==RECIPE_TYPE_3x3) + { + return L"Crafting3x3Menu"; + } + else + { + return L"Crafting2x2Menu"; + } + } +} + +#ifdef __PSVITA__ +UIControl* UIScene_CraftingMenu::GetMainPanel() +{ + return &m_controlMainPanel; +} + +void UIScene_CraftingMenu::handleTouchInput(unsigned int iPad, S32 x, S32 y, int iId, bool bPressed, bool bRepeat, bool bReleased) +{ + // perform action on release + if(bPressed) + { + if(iId == ETouchInput_CraftingHSlots) + { + m_iCraftingSlotTouchStartY = y; + } + } + else if(bRepeat) + { + if(iId == ETouchInput_CraftingHSlots) + { + if(y >= m_iCraftingSlotTouchStartY + m_TouchInput[ETouchInput_CraftingHSlots].getHeight()) // scroll list down + { + if(iVSlotIndexA[1]==(CanBeMadeA[m_iCurrentSlotHIndex].iCount-1)) + { + iVSlotIndexA[1]=0; + } + else + { + iVSlotIndexA[1]++; + } + ui.PlayUISFX(eSFX_Focus); + + UpdateVerticalSlots(); + UpdateHighlight(); + + m_iCraftingSlotTouchStartY = y; + } + else if(y <= m_iCraftingSlotTouchStartY - m_TouchInput[ETouchInput_CraftingHSlots].getHeight()) // scroll list up + { + if(iVSlotIndexA[1]==0) + { + iVSlotIndexA[1]=CanBeMadeA[m_iCurrentSlotHIndex].iCount-1; + } + else + { + iVSlotIndexA[1]--; + } + ui.PlayUISFX(eSFX_Focus); + + UpdateVerticalSlots(); + UpdateHighlight(); + + m_iCraftingSlotTouchStartY = y; + } + } + } + else if(bReleased) + { + if(iId >= ETouchInput_TouchPanel_0 && iId <= ETouchInput_TouchPanel_6) // Touch Change Group + { + m_iGroupIndex = iId; + // turn on the new group + showTabHighlight(m_iGroupIndex,true); + + m_iCurrentSlotHIndex=0; + m_iCurrentSlotVIndex=1; + CheckRecipesAvailable(); + // reset the vertical slots + iVSlotIndexA[0]=CanBeMadeA[m_iCurrentSlotHIndex].iCount-1; + iVSlotIndexA[1]=0; + iVSlotIndexA[2]=1; + ui.PlayUISFX(eSFX_Focus); + UpdateVerticalSlots(); + UpdateHighlight(); + setGroupText(GetGroupNameText(m_pGroupA[m_iGroupIndex])); + } + else if(iId == ETouchInput_CraftingHSlots) // Touch Change Slot + { + int iMaxHSlots = 0; + if(m_iContainerType==RECIPE_TYPE_3x3) + { + iMaxHSlots = m_iMaxHSlot3x3C; + } + else + { + iMaxHSlots = m_iMaxHSlot2x2C; + } + + int iNewSlot = (x - m_TouchInput[ETouchInput_CraftingHSlots].getXPos() - m_controlMainPanel.getXPos()) / m_TouchInput[ETouchInput_CraftingHSlots].getHeight(); + + int iOldHSlot=m_iCurrentSlotHIndex; + + m_iCurrentSlotHIndex = iNewSlot; + if(m_iCurrentSlotHIndex>=m_iCraftablesMaxHSlotC) m_iCurrentSlotHIndex=0; + m_iCurrentSlotVIndex=1; + // clear the indices + iVSlotIndexA[0]=CanBeMadeA[m_iCurrentSlotHIndex].iCount-1; + iVSlotIndexA[1]=0; + iVSlotIndexA[2]=1; + + UpdateVerticalSlots(); + UpdateHighlight(); + // re-enable the old hslot + if(CanBeMadeA[iOldHSlot].iCount>0) + { + setShowCraftHSlot(iOldHSlot,true); + } + ui.PlayUISFX(eSFX_Focus); + } + } +} + +void UIScene_CraftingMenu::handleTouchBoxRebuild() +{ + addTimer(GAME_CRAFTING_TOUCHUPDATE_TIMER_ID,GAME_CRAFTING_TOUCHUPDATE_TIMER_TIME); +} + +void UIScene_CraftingMenu::handleTimerComplete(int id) +{ + if(id == GAME_CRAFTING_TOUCHUPDATE_TIMER_ID) + { + // we cannot rebuild touch boxes in an iggy callback because it requires further iggy calls + GetMainPanel()->UpdateControl(); + ui.TouchBoxRebuild(this); + killTimer(GAME_CRAFTING_TOUCHUPDATE_TIMER_ID); + } +} +#endif + +void UIScene_CraftingMenu::handleReload() +{ + m_slotListInventory.addSlots(CRAFTING_INVENTORY_SLOT_START,CRAFTING_INVENTORY_SLOT_END - CRAFTING_INVENTORY_SLOT_START); + m_slotListHotBar.addSlots(CRAFTING_HOTBAR_SLOT_START, CRAFTING_HOTBAR_SLOT_END - CRAFTING_HOTBAR_SLOT_START); + + for(unsigned int i = 0; i < 4; ++i) + { + m_slotListIngredients[i].addSlot(CRAFTING_INGREDIENTS_DESCRIPTION_START + i); + } + m_slotListCraftingOutput.addSlot(CRAFTING_OUTPUT_SLOT_START); + m_slotListIngredientsLayout.addSlots(CRAFTING_INGREDIENTS_LAYOUT_START, m_iIngredientsMaxSlotC); + + // 3 Slot vertical scroll + m_slotListCrafting3VSlots[0].addSlot(CRAFTING_V_SLOT_START + 0); + m_slotListCrafting3VSlots[1].addSlot(CRAFTING_V_SLOT_START + 1); + m_slotListCrafting3VSlots[2].addSlot(CRAFTING_V_SLOT_START + 2); + + // 2 Slot vertical scroll + // 2 slot scroll has swapped order + m_slotListCrafting2VSlots[0].addSlot(CRAFTING_V_SLOT_START + 1); + m_slotListCrafting2VSlots[1].addSlot(CRAFTING_V_SLOT_START + 0); + + // 1 Slot scroll (for 480 mainly) + m_slotListCrafting1VSlots.addSlot(CRAFTING_V_SLOT_START); + + m_slotListCraftingHSlots.addSlots(CRAFTING_H_SLOT_START,m_iCraftablesMaxHSlotC); + + app.DebugPrintf(app.USER_SR,"Reloading MultiPanel\n"); + int temp = m_iDisplayDescription; + m_iDisplayDescription = m_iDisplayDescription==0?1:0; + UpdateMultiPanel(); + m_iDisplayDescription = temp; + UpdateMultiPanel(); + + app.DebugPrintf(app.USER_SR,"Reloading Highlight and scroll\n"); + + // reset the vertical slots + m_iCurrentSlotHIndex = 0; + m_iCurrentSlotVIndex = 1; + iVSlotIndexA[0]=CanBeMadeA[m_iCurrentSlotHIndex].iCount-1; + iVSlotIndexA[1]=0; + iVSlotIndexA[2]=1; + UpdateVerticalSlots(); + UpdateHighlight(); + + app.DebugPrintf(app.USER_SR,"Reloading tabs\n"); + showTabHighlight(0,false); + showTabHighlight(m_iGroupIndex,true); +} + +void UIScene_CraftingMenu::customDraw(IggyCustomDrawCallbackRegion *region) +{ + Minecraft *pMinecraft = Minecraft::GetInstance(); + if(pMinecraft->localplayers[m_iPad] == NULL || pMinecraft->localgameModes[m_iPad] == NULL) return; + + shared_ptr item = nullptr; + int slotId = -1; + float alpha = 1.0f; + bool decorations = true; + bool inventoryItem = false; + swscanf((wchar_t*)region->name,L"slot_%d",&slotId); + if (slotId == -1) + { + app.DebugPrintf("This is not the control we are looking for\n"); + } + else if(slotId >= CRAFTING_INVENTORY_SLOT_START && slotId < CRAFTING_INVENTORY_SLOT_END) + { + int iIndex = slotId - CRAFTING_INVENTORY_SLOT_START; + iIndex += m_iMenuInventoryStart; + Slot *slot = m_menu->getSlot(iIndex); + item = slot->getItem(); + inventoryItem = true; + } + else if(slotId >= CRAFTING_HOTBAR_SLOT_START && slotId < CRAFTING_HOTBAR_SLOT_END) + { + int iIndex = slotId - CRAFTING_HOTBAR_SLOT_START; + iIndex += m_iMenuHotBarStart; + Slot *slot = m_menu->getSlot(iIndex); + item = slot->getItem(); + inventoryItem = true; + } + else if(slotId >= CRAFTING_V_SLOT_START && slotId < CRAFTING_V_SLOT_END ) + { + decorations = false; + int iIndex = slotId - CRAFTING_V_SLOT_START; + if(m_vSlotsInfo[iIndex].show) + { + item = m_vSlotsInfo[iIndex].item; + alpha = ((float)m_vSlotsInfo[iIndex].alpha)/31.0f; + } + } + else if(slotId >= CRAFTING_H_SLOT_START && slotId < (CRAFTING_H_SLOT_START + m_iCraftablesMaxHSlotC) ) + { + decorations = false; + int iIndex = slotId - CRAFTING_H_SLOT_START; + if(m_hSlotsInfo[iIndex].show) + { + item = m_hSlotsInfo[iIndex].item; + alpha = ((float)m_hSlotsInfo[iIndex].alpha)/31.0f; + } + } + else if(slotId >= CRAFTING_INGREDIENTS_LAYOUT_START && slotId < (CRAFTING_INGREDIENTS_LAYOUT_START + m_iIngredientsMaxSlotC) ) + { + int iIndex = slotId - CRAFTING_INGREDIENTS_LAYOUT_START; + if(m_ingredientsSlotsInfo[iIndex].show) + { + item = m_ingredientsSlotsInfo[iIndex].item; + alpha = ((float)m_ingredientsSlotsInfo[iIndex].alpha)/31.0f; + } + } + else if(slotId >= CRAFTING_INGREDIENTS_DESCRIPTION_START && slotId < (CRAFTING_INGREDIENTS_DESCRIPTION_START + 4) ) + { + int iIndex = slotId - CRAFTING_INGREDIENTS_DESCRIPTION_START; + if(m_ingredientsInfo[iIndex].show) + { + item = m_ingredientsInfo[iIndex].item; + alpha = ((float)m_ingredientsInfo[iIndex].alpha)/31.0f; + } + } + else if(slotId == CRAFTING_OUTPUT_SLOT_START ) + { + if(m_craftingOutputSlotInfo.show) + { + item = m_craftingOutputSlotInfo.item; + alpha = ((float)m_craftingOutputSlotInfo.alpha)/31.0f; + } + } + + if(item != NULL) + { + if(!inventoryItem) + { + if( item->id == Item::clock_Id || item->id == Item::compass_Id ) + { + // 4J Stu - For clocks and compasses we set the aux value to a special one that signals we should use a default texture + // rather than the dynamic one for the player + item->setAuxValue(0xFF); + } + else if( (item->getAuxValue() & 0xFF) == 0xFF) + { + // 4J Stu - If the aux value is set to match any + item->setAuxValue(0); + } + } + customDrawSlotControl(region,m_iPad,item,alpha,item->isFoil(),decorations); + } +} + +int UIScene_CraftingMenu::getPad() +{ + return m_iPad; +} + +bool UIScene_CraftingMenu::allowRepeat(int key) +{ + switch(key) + { + // X is used to open this menu, so don't let it repeat + case ACTION_MENU_X: + return false; + } + return true; +} + +void UIScene_CraftingMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled) +{ + //app.DebugPrintf("UIScene_InventoryMenu handling input for pad %d, key %d, down- %s, pressed- %s, released- %s\n", iPad, key, down?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE"); + ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released); + + switch(key) + { + case ACTION_MENU_OTHER_STICK_UP: + case ACTION_MENU_OTHER_STICK_DOWN: + sendInputToMovie(key,repeat,pressed,released); + break; + default: + if(pressed) + { + handled = handleKeyDown(m_iPad, key, repeat); + } + break; + }; +} + +void UIScene_CraftingMenu::hideAllHSlots() +{ + for(unsigned int iIndex = 0; iIndex < m_iMaxHSlotC; ++iIndex) + { + m_hSlotsInfo[iIndex].item = nullptr; + m_hSlotsInfo[iIndex].alpha = 31; + m_hSlotsInfo[iIndex].show = false; + } +} + +void UIScene_CraftingMenu::hideAllVSlots() +{ + for(unsigned int iIndex = 0; iIndex < m_iMaxDisplayedVSlotC; ++iIndex) + { + m_vSlotsInfo[iIndex].item = nullptr; + m_vSlotsInfo[iIndex].alpha = 31; + m_vSlotsInfo[iIndex].show = false; + } +} + +void UIScene_CraftingMenu::hideAllIngredientsSlots() +{ + for(int i=0;i item, unsigned int uiAlpha) +{ + m_hSlotsInfo[iIndex].item = item; + m_hSlotsInfo[iIndex].alpha = uiAlpha; + m_hSlotsInfo[iIndex].show = true; +} + +void UIScene_CraftingMenu::setCraftVSlotItem(int iPad, int iIndex, shared_ptr item, unsigned int uiAlpha) +{ + m_vSlotsInfo[iIndex].item = item; + m_vSlotsInfo[iIndex].alpha = uiAlpha; + m_vSlotsInfo[iIndex].show = true; +} + +void UIScene_CraftingMenu::setCraftingOutputSlotItem(int iPad, shared_ptr item) +{ + m_craftingOutputSlotInfo.item = item; + m_craftingOutputSlotInfo.alpha = 31; + m_craftingOutputSlotInfo.show = item != NULL; +} + +void UIScene_CraftingMenu::setCraftingOutputSlotRedBox(bool show) +{ + m_slotListCraftingOutput.showSlotRedBox(0,show); +} + +void UIScene_CraftingMenu::setIngredientSlotItem(int iPad, int index, shared_ptr item) +{ + m_ingredientsSlotsInfo[index].item = item; + m_ingredientsSlotsInfo[index].alpha = 31; + m_ingredientsSlotsInfo[index].show = item != NULL; +} + +void UIScene_CraftingMenu::setIngredientSlotRedBox(int index, bool show) +{ + m_slotListIngredientsLayout.showSlotRedBox(index,show); +} + +void UIScene_CraftingMenu::setIngredientDescriptionItem(int iPad, int index, shared_ptr item) +{ + m_ingredientsInfo[index].item = item; + m_ingredientsInfo[index].alpha = 31; + m_ingredientsInfo[index].show = item != NULL; + + IggyDataValue result; + IggyDataValue value[2]; + + value[0].type = IGGY_DATATYPE_number; + value[0].number = index; + + value[1].type = IGGY_DATATYPE_boolean; + value[1].boolval = m_ingredientsInfo[index].show; + IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ) , m_funcShowIngredientSlot , 2 , value ); +} + +void UIScene_CraftingMenu::setIngredientDescriptionRedBox(int index, bool show) +{ + m_slotListIngredients[index].showSlotRedBox(0,show); +} + +void UIScene_CraftingMenu::setIngredientDescriptionText(int index, LPCWSTR text) +{ + m_labelIngredientsDesc[index].setLabel(text); +} + + +void UIScene_CraftingMenu::setShowCraftHSlot(int iIndex, bool show) +{ + m_hSlotsInfo[iIndex].show = show; +} + +void UIScene_CraftingMenu::showTabHighlight(int iIndex, bool show) +{ + if(show) + { + IggyDataValue result; + IggyDataValue value[1]; + + value[0].type = IGGY_DATATYPE_number; + value[0].number = iIndex; + IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ) , m_funcSetActiveTab , 1 , value ); + } +} + +void UIScene_CraftingMenu::setGroupText(LPCWSTR text) +{ + m_labelGroupName.setLabel(text); +} + +void UIScene_CraftingMenu::setDescriptionText(LPCWSTR text) +{ + m_labelDescription.setLabel(text); +} + +void UIScene_CraftingMenu::setItemText(LPCWSTR text) +{ + m_labelItemName.setLabel(text); +} + +void UIScene_CraftingMenu::UpdateMultiPanel() +{ + // Call Iggy function to show the current panel + IggyDataValue result; + IggyDataValue value[1]; + + value[0].type = IGGY_DATATYPE_number; + value[0].number = m_iDisplayDescription; + + IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ) , m_funcShowPanelDisplay , 1 , value ); +} + +void UIScene_CraftingMenu::scrollDescriptionUp() +{ + // handled differently +} + +void UIScene_CraftingMenu::scrollDescriptionDown() +{ + // handled differently +} + +void UIScene_CraftingMenu::updateHighlightAndScrollPositions() +{ + { + IggyDataValue result; + IggyDataValue value[2]; + + value[0].type = IGGY_DATATYPE_number; + value[0].number = m_iCurrentSlotHIndex; + + int selectorType = 0; + if(CanBeMadeA[m_iCurrentSlotHIndex].iCount == 2) + { + selectorType = 1; + } + else if( CanBeMadeA[m_iCurrentSlotHIndex].iCount > 2) + { + selectorType = 2; + } + + value[1].type = IGGY_DATATYPE_number; + value[1].number = selectorType; + + IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ) , m_funcMoveSelector , 2 , value ); + } + + { + IggyDataValue result; + IggyDataValue value[1]; + + value[0].type = IGGY_DATATYPE_number; + value[0].number = m_iCurrentSlotVIndex; + + IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ) , m_funcSelectVerticalItem , 1 , value ); + } +} + +void UIScene_CraftingMenu::updateVSlotPositions(int iSlots, int i) +{ + // Not needed +} -- cgit v1.2.3