diff options
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_Scene_CraftingPanel.cpp')
| -rw-r--r-- | Minecraft.Client/Common/XUI/XUI_Scene_CraftingPanel.cpp | 636 |
1 files changed, 636 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_Scene_CraftingPanel.cpp b/Minecraft.Client/Common/XUI/XUI_Scene_CraftingPanel.cpp new file mode 100644 index 00000000..a5dc6584 --- /dev/null +++ b/Minecraft.Client/Common/XUI/XUI_Scene_CraftingPanel.cpp @@ -0,0 +1,636 @@ +// Minecraft.cpp : Defines the entry point for the application. +// + +#include "stdafx.h" + +#include <assert.h> +#include "..\..\MultiplayerLocalPlayer.h" +#include "..\..\..\Minecraft.World\net.minecraft.world.item.h" +#include "..\..\..\Minecraft.World\net.minecraft.world.item.crafting.h" +#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h" +#include "..\..\..\Minecraft.World\Tile.h" +#include "..\..\..\Minecraft.World\net.minecraft.stats.h" +#include "..\..\Common\Tutorial\Tutorial.h" +#include "..\..\Common\Tutorial\TutorialMode.h" +#include "..\..\Common\Tutorial\TutorialEnum.h" +#include "..\..\Minecraft.h" +#include "XUI_Ctrl_CraftIngredientSlot.h" +#include "XUI_Ctrl_SlotList.h" + +#define IGNORE_KEYPRESS_TIMERID 0 +#define IGNORE_KEYPRESS_TIME 100 + +////////////////////////////////////////////////////////////////////////// +// +// +// +////////////////////////////////////////////////////////////////////////// +CXuiSceneCraftingPanel::CXuiSceneCraftingPanel() +{ +} + +////////////////////////////////////////////////////////////////////////// +// +// OnInit +// +////////////////////////////////////////////////////////////////////////// +HRESULT CXuiSceneCraftingPanel::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) +{ + m_bIgnoreKeyPresses=true; + + D3DXVECTOR3 vec; + VOID *pObj; + CraftingPanelScreenInput* pCraftingPanelData = (CraftingPanelScreenInput*)pInitData->pvInitData; + m_iContainerType=pCraftingPanelData->iContainerType; + m_pPlayer=pCraftingPanelData->player; + m_iPad=pCraftingPanelData->iPad; + m_bSplitscreen=pCraftingPanelData->bSplitscreen; + + HRESULT hr = S_OK; + + MapChildControls(); + + if(m_iContainerType==RECIPE_TYPE_2x2) + { + // TODO Inventory dimensions need defined as constants + m_inventoryControl->SetData( m_iPad, m_pPlayer->inventoryMenu, 3, 9, InventoryMenu::INV_SLOT_START, InventoryMenu::INV_SLOT_END ); + + // TODO Inventory dimensions need defined as constants + m_useRowControl->SetData( m_iPad, m_pPlayer->inventoryMenu, 1, 9, InventoryMenu::USE_ROW_SLOT_START, InventoryMenu::USE_ROW_SLOT_END ); + } + else + { + CraftingMenu *menu = new CraftingMenu(m_pPlayer->inventory, m_pPlayer->level, pCraftingPanelData->x, pCraftingPanelData->y, pCraftingPanelData->z); + Minecraft::GetInstance()->localplayers[m_iPad]->containerMenu = menu; + // TODO Inventory dimensions need defined as constants + m_inventoryControl->SetData( m_iPad, menu, 3, 9, CraftingMenu::INV_SLOT_START, CraftingMenu::INV_SLOT_END ); + + // TODO Inventory dimensions need defined as constants + m_useRowControl->SetData( m_iPad, menu, 1, 9, CraftingMenu::USE_ROW_SLOT_START, CraftingMenu::USE_ROW_SLOT_END ); + } + + delete pCraftingPanelData; + + // 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); + + // Set up the CXuiCtrlCraftIngredientSlots + if(m_iContainerType==RECIPE_TYPE_3x3) + { + m_pCursors=m_pHSlotsCraftingTableCursors; + + m_iIngredientsMaxSlotC = m_iIngredients3x3SlotC; + for(int i=0;i<m_iIngredients3x3SlotC;i++) + { + XuiObjectFromHandle( m_hCraftIngredientA[i], &pObj ); + m_pCraftingIngredientA[i] = (CXuiCtrlCraftIngredientSlot *)pObj; + } + XuiObjectFromHandle( m_hCraftOutput, &pObj ); + m_pCraftingOutput = (CXuiCtrlCraftIngredientSlot *)pObj; + m_pGroupA=(Recipy::_eGroupType *)&m_GroupTypeMapping9GridA; + m_pGroupTabA=(CXuiSceneCraftingPanel::_eGroupTab *)&m_GroupTabBkgMapping3x3A; + + m_iCraftablesMaxHSlotC=m_iMaxHSlot3x3C; + + // set up the ingredients descriptions + for(int i=0;i<4;i++) + { + XuiObjectFromHandle( m_hCraftIngredientDescA[i], &pObj ); + m_pCraftIngredientDescA[i] = (CXuiCtrlCraftIngredientSlot *)pObj; + } + } + else + { + m_pCursors=m_pHSlotsCraftingCursors; + + m_iIngredientsMaxSlotC = m_iIngredients2x2SlotC; + for(int i=0;i<m_iIngredients2x2SlotC;i++) + { + XuiObjectFromHandle( m_hCraftIngredientA[i], &pObj ); + m_pCraftingIngredientA[i] = (CXuiCtrlCraftIngredientSlot *)pObj; + } + + XuiObjectFromHandle( m_hCraftOutput, &pObj ); + m_pCraftingOutput = (CXuiCtrlCraftIngredientSlot *)pObj; + m_pGroupA=(Recipy::_eGroupType *)&m_GroupTypeMapping4GridA; + m_pGroupTabA=(CXuiSceneCraftingPanel::_eGroupTab *)&m_GroupTabBkgMapping2x2A; + + m_iCraftablesMaxHSlotC=m_iMaxHSlot2x2C; + + // set up the ingredients descriptions + for(int i=0;i<4;i++) + { + XuiObjectFromHandle( m_hCraftIngredientDescA[i], &pObj ); + m_pCraftIngredientDescA[i] = (CXuiCtrlCraftIngredientSlot *)pObj; + } + } + + // 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;i<m_iCraftablesMaxHSlotC;i++) + { + m_pHSlotsBrushImageControl[i]->SetShow(FALSE); + } + + XuiElementSetShow(m_hGridInventory,FALSE); + + m_hScrollBar2.SetShow(FALSE); + m_hScrollBar3.SetShow(FALSE); + + app.SetRichPresenceContext(m_iPad,CONTEXT_GAME_STATE_CRAFTING); + m_GroupName.SetText(GetGroupNameText(m_pGroupA[m_iGroupIndex])); + + UpdateTooltips(); + + // Update the tutorial state + Minecraft *pMinecraft = Minecraft::GetInstance(); + +#ifdef _XBOX + 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); + } + } +#endif + + XuiSetTimer(m_hObj,IGNORE_KEYPRESS_TIMERID,IGNORE_KEYPRESS_TIME); + + return S_OK; +} + +////////////////////////////////////////////////////////////////////////// +// +// OnTransitionEnd +// +////////////////////////////////////////////////////////////////////////// +HRESULT CXuiSceneCraftingPanel::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) + { + // Update the tab icons + if(m_iContainerType==RECIPE_TYPE_3x3) + { + for(int i=0;i<m_iMaxGroup3x3;i++) + { + m_hGroupIconA[i].PlayVisualRange(m_GroupIconNameA[m_pGroupA[i]],NULL,m_GroupIconNameA[m_pGroupA[i]]); + XuiElementSetShow(m_hGroupIconA[i].m_hObj,TRUE); + } + } + else + { + for(int i=0;i<m_iMaxGroup2x2;i++) + { + m_hGroupIconA[i].PlayVisualRange(m_GroupIconNameA[m_pGroupA[i]],NULL,m_GroupIconNameA[m_pGroupA[i]]); + XuiElementSetShow(m_hGroupIconA[i].m_hObj,TRUE); + } + } + + + // Display the tooltips + ui.SetTooltips(m_iPad, IDS_TOOLTIPS_CREATE,IDS_TOOLTIPS_EXIT, IDS_TOOLTIPS_SHOW_INVENTORY,-1,-1,-1,-2, IDS_TOOLTIPS_CHANGE_GROUP); + CXuiSceneBase::EnableTooltip(m_iPad, BUTTON_TOOLTIP_A, FALSE ); + + // 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(); + } + + return S_OK; +} + +HRESULT CXuiSceneCraftingPanel::OnCustomMessage_InventoryUpdated() +{ + // Display the tooltips + ui.SetTooltips(m_iPad, IDS_TOOLTIPS_CREATE,IDS_TOOLTIPS_EXIT, IDS_TOOLTIPS_SHOW_INVENTORY,-1,-1,-1,-2, IDS_TOOLTIPS_CHANGE_GROUP); + CXuiSceneBase::EnableTooltip(m_iPad, BUTTON_TOOLTIP_A, FALSE ); + + // Check which recipes are available with the resources we have + CheckRecipesAvailable(); + UpdateVerticalSlots(); + UpdateHighlight(); + + return S_OK; +} + +////////////////////////////////////////////////////////////////////////// +// +// OnKeyDown +// +////////////////////////////////////////////////////////////////////////// +HRESULT CXuiSceneCraftingPanel::OnKeyDown(XUIMessageInput* pInputData, BOOL& bHandled) +{ + bHandled = handleKeyDown(pInputData->UserIndex, mapVKToAction(pInputData->dwKeyCode), (pInputData->dwFlags & XUI_INPUT_FLAG_REPEAT) != 0); + + return S_OK; +} + +int CXuiSceneCraftingPanel::mapVKToAction(int vk) +{ + int action = MINECRAFT_ACTION_MAX; + switch(vk) + { + case VK_PAD_A: + action = ACTION_MENU_A; + break; + case VK_PAD_B: + case VK_PAD_START: + action = ACTION_MENU_B; + break; + case VK_PAD_X: + action = ACTION_MENU_X; + break; + case VK_PAD_Y: + action = ACTION_MENU_Y; + break; + case VK_PAD_DPAD_LEFT: + case VK_PAD_LTHUMB_LEFT: + action = ACTION_MENU_LEFT; + break; + case VK_PAD_DPAD_RIGHT: + case VK_PAD_LTHUMB_RIGHT: + action = ACTION_MENU_RIGHT; + break; + case VK_PAD_LTHUMB_UP: + case VK_PAD_DPAD_UP: + action = ACTION_MENU_UP; + break; + case VK_PAD_LTHUMB_DOWN: + case VK_PAD_DPAD_DOWN: + action = ACTION_MENU_DOWN; + break; + case VK_PAD_LTRIGGER: + action = ACTION_MENU_PAGEUP; + break; + case VK_PAD_RTRIGGER: + action = ACTION_MENU_PAGEDOWN; + break; + case VK_PAD_LSHOULDER: + action = ACTION_MENU_LEFT_SCROLL; + break; + case VK_PAD_RSHOULDER: + action = ACTION_MENU_RIGHT_SCROLL; + break; + case VK_PAD_RTHUMB_UP: + action = ACTION_MENU_OTHER_STICK_UP; + break; + case VK_PAD_RTHUMB_DOWN: + action = ACTION_MENU_OTHER_STICK_DOWN; + break; + case VK_PAD_RTHUMB_RIGHT: + action = ACTION_MENU_OTHER_STICK_RIGHT; + break; + case VK_PAD_RTHUMB_LEFT: + action = ACTION_MENU_OTHER_STICK_LEFT; + break; + }; + + return action; +} + +////////////////////////////////////////////////////////////////////////// +// +// OnGetSourceImage +// +////////////////////////////////////////////////////////////////////////// +HRESULT CXuiSceneCraftingPanel::OnGetSourceImage(XUIMessageGetSourceImage* pData, BOOL& rfHandled) +{ + HRESULT hr = S_OK; + //int iId=pData->iItem; + int iId=(pData->iData>>22)&0x1FF; + pData->szPath = NULL; + pData->bDirty=true; + rfHandled = TRUE; + return hr; +} + +////////////////////////////////////////////////////////////////////////// +// +// OnDestroy +// +////////////////////////////////////////////////////////////////////////// +HRESULT CXuiSceneCraftingPanel::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 + + // 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; +} + +HRESULT CXuiSceneCraftingPanel::OnCustomMessage_Splitscreenplayer(bool bJoining, BOOL& bHandled) +{ + bHandled=true; + return app.AdjustSplitscreenScene_PlayerChanged(m_hObj,&m_OriginalPosition,m_iPad,bJoining); +} + +HRESULT CXuiSceneCraftingPanel::OnTimer(XUIMessageTimer *pData,BOOL& rfHandled) +{ + if(pData->nId==IGNORE_KEYPRESS_TIMERID) + { + XuiKillTimer(m_hObj,IGNORE_KEYPRESS_TIMERID); + m_bIgnoreKeyPresses=false; + } + + return S_OK; +} + +HRESULT CXuiSceneCraftingPanel::OnKillFocus(HXUIOBJ hObjGettingFocus, BOOL& bHandled) +{ + return S_OK; +} + +int CXuiSceneCraftingPanel::getPad() +{ + return m_iPad; +} + +void CXuiSceneCraftingPanel::hideAllHSlots() +{ + for(int i=0;i<m_iMaxHSlotC;i++) + { + m_pHSlotsBrushImageControl[i]->SetShow(FALSE); + } +} + +void CXuiSceneCraftingPanel::hideAllVSlots() +{ + for(int i=0;i<m_iMaxDisplayedVSlotC;i++) + { + m_pVSlotsBrushImageControl[i]->SetShow(FALSE); + } +} + + +void CXuiSceneCraftingPanel::hideAllIngredientsSlots() +{ + for(int i=0;i<m_iIngredientsC;i++) + { + m_pCraftIngredientDescA[i]->SetShow(FALSE); + } +} + +void CXuiSceneCraftingPanel::setCraftHSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha) +{ + m_pHSlotsBrushImageControl[iIndex]->SetIcon(iPad, item, 9, uiAlpha, false); + //m_pHSlotsBrushImageControl[iIndex]->SetPassThroughDataAssociation(MAKE_SLOTDISPLAY_ITEM_BITMASK(item->id,item->getAuxValue(),item->isFoil()),MAKE_SLOTDISPLAY_DATA_BITMASK (iPad, uiAlpha, false, item->GetCount(), 9,0) ); + //m_pHSlotsBrushImageControl[iIndex]->SetShow(TRUE); +} + +void CXuiSceneCraftingPanel::setCraftVSlotItem(int iPad, int iIndex, shared_ptr<ItemInstance> item, unsigned int uiAlpha) +{ + m_pVSlotsBrushImageControl[iIndex]->SetIcon(iPad, item, 9, uiAlpha, false); + //m_pVSlotsBrushImageControl[iIndex]->SetPassThroughDataAssociation(MAKE_SLOTDISPLAY_ITEM_BITMASK(item->id,item->getAuxValue(),item->isFoil()),MAKE_SLOTDISPLAY_DATA_BITMASK (iPad, uiAlpha, false, item->GetCount(), 9,0) ); + //m_pVSlotsBrushImageControl[iIndex]->SetShow(TRUE); +} + +void CXuiSceneCraftingPanel::setCraftingOutputSlotItem(int iPad, shared_ptr<ItemInstance> item) +{ + if(item == NULL) + { + m_pCraftingOutput->SetIcon(iPad, 0,0,0,0,0,false); + } + else + { + m_pCraftingOutput->SetIcon(iPad, item->id,item->getAuxValue(),item->GetCount(),12,31,true,item->isFoil()); + } +} + +void CXuiSceneCraftingPanel::setCraftingOutputSlotRedBox(bool show) +{ + m_pCraftingOutput->SetRedBox(show?TRUE:FALSE); +} + +void CXuiSceneCraftingPanel::setIngredientSlotItem(int iPad, int index, shared_ptr<ItemInstance> item) +{ + if(item == NULL) + { + m_pCraftingIngredientA[index]->SetIcon(iPad, 0,0,0,0,0,false); + } + else + { + m_pCraftingIngredientA[index]->SetIcon(m_iPad, item->id,item->getAuxValue(),0,8,31,false); + } +} + +void CXuiSceneCraftingPanel::setIngredientSlotRedBox(int index, bool show) +{ + m_pCraftingIngredientA[index]->SetRedBox(show?TRUE:FALSE); +} + +void CXuiSceneCraftingPanel::setIngredientDescriptionItem(int iPad, int index, shared_ptr<ItemInstance> item) +{ + m_pCraftIngredientDescA[index]->SetIcon(iPad, item->id,item->getAuxValue(),item->GetCount(),8,31,TRUE,item->isFoil(),FALSE); +} + +void CXuiSceneCraftingPanel::setIngredientDescriptionRedBox(int index, bool show) +{ + m_pCraftIngredientDescA[index]->SetRedBox(show?TRUE:FALSE); +} + +void CXuiSceneCraftingPanel::setIngredientDescriptionText(int index, LPCWSTR text) +{ + m_pCraftIngredientDescA[index]->SetDescription(text); +} + +void CXuiSceneCraftingPanel::setShowCraftHSlot(int iIndex, bool show) +{ + m_pHSlotsBrushImageControl[iIndex]->SetShow(show?TRUE:FALSE); +} + +void CXuiSceneCraftingPanel::showTabHighlight(int iIndex, bool show) +{ + m_hTabGroupA[iIndex].SetShow(show?TRUE:FALSE); +} + +void CXuiSceneCraftingPanel::setGroupText(LPCWSTR text) +{ + m_GroupName.SetText(text); +} + +void CXuiSceneCraftingPanel::setDescriptionText(LPCWSTR text) +{ + m_DescriptionText.SetText(text); +} + +void CXuiSceneCraftingPanel::setItemText(LPCWSTR text) +{ + m_ItemName.SetText(text); +} + +void CXuiSceneCraftingPanel::UpdateMultiPanel() +{ + switch(m_iDisplayDescription) + { + case DISPLAY_INVENTORY: + // turn off all the ingredients display + for(int i=0;i<4;i++) + { + m_pCraftIngredientDescA[i]->SetShow(FALSE); + } + + XuiElementSetShow(m_hGridInventory,TRUE); + XuiControlSetText(m_InventoryText,app.GetString(IDS_INVENTORY)); + XuiElementSetShow(m_InventoryText,TRUE); + break; + case DISPLAY_DESCRIPTION: + // turn off the inventory + XuiElementSetShow(m_hGridInventory,FALSE); + XuiElementSetShow(m_DescriptionText,TRUE); + XuiElementSetShow(m_InventoryText,FALSE); + break; + case DISPLAY_INGREDIENTS: + // turn off all the descriptions + XuiElementSetShow(m_DescriptionText,FALSE); + + // display the ingredients + for(int i=0;i<m_iIngredientsC;i++) + { + m_pCraftIngredientDescA[i]->SetShow(TRUE); + } + + if(m_iIngredientsC==0) + { + XuiElementSetShow(m_InventoryText,FALSE); + } + else + { + XuiControlSetText(m_InventoryText,app.GetString(IDS_INGREDIENTS)); + XuiElementSetShow(m_InventoryText,TRUE); + } + break; + } +} + +void CXuiSceneCraftingPanel::scrollDescriptionUp() +{ + XUIHtmlScrollInfo ScrollInfo; + + XuiHtmlControlGetVScrollInfo(m_DescriptionText.m_hObj,&ScrollInfo); + if(!ScrollInfo.bScrolling) + { + XuiHtmlControlVScrollBy(m_DescriptionText.m_hObj,-1); + } +} + +void CXuiSceneCraftingPanel::scrollDescriptionDown() +{ + XUIHtmlScrollInfo ScrollInfo; + + XuiHtmlControlGetVScrollInfo(m_DescriptionText.m_hObj,&ScrollInfo); + if(!ScrollInfo.bScrolling) + { + XuiHtmlControlVScrollBy(m_DescriptionText.m_hObj,1); + } +} + +void CXuiSceneCraftingPanel::updateHighlightAndScrollPositions() +{ + D3DXVECTOR3 vec; + + vec.z=0.0f; + vec.x=m_vSlot0HighlightPos.x + (m_iCurrentSlotHIndex*m_fSlotSize); + vec.y=m_vSlot0HighlightPos.y + ((m_iCurrentSlotVIndex-1)*m_fSlotSize); // vslot 1 is the centred one + m_hHighlight.SetPosition(&vec); + + // Update the scroll icons for all h boxes + for(int i=0;i<m_iCraftablesMaxHSlotC;i++) + { + if((i!=m_iCurrentSlotHIndex) &&(CanBeMadeA[i].iCount>1)) + { + m_pCursors[i].SetShow(TRUE); + } + else + { + m_pCursors[i].SetShow(FALSE); + } + } + + if(CanBeMadeA[m_iCurrentSlotHIndex].iCount<2) + { + m_hScrollBar2.SetShow(FALSE); + m_hScrollBar3.SetShow(FALSE); + } + else if(CanBeMadeA[m_iCurrentSlotHIndex].iCount<3) + { + // 2 slot + vec.x=m_vSlot0V2ScrollPos.x + (m_iCurrentSlotHIndex*m_fSlotSize); + vec.y=m_vSlot0V2ScrollPos.y; + m_hScrollBar2.SetPosition(&vec); + m_hScrollBar2.SetShow(TRUE); + m_hScrollBar3.SetShow(FALSE); + } + else + { + // 3 slot + vec.x=m_vSlot0V3ScrollPos.x + (m_iCurrentSlotHIndex*m_fSlotSize); + vec.y=m_vSlot0V3ScrollPos.y;//+m_fSlotSize; + + m_hScrollBar3.SetPosition(&vec); + m_hScrollBar2.SetShow(FALSE); + m_hScrollBar3.SetShow(TRUE); + } +} + +void CXuiSceneCraftingPanel::updateVSlotPositions(int iSlots, int i) +{ + D3DXVECTOR3 vec; + if(iSlots==2) + { + vec.y=m_vSlot0Pos.y + (1-i)*m_fSlotSize; + } + else + { + vec.y=m_vSlot0Pos.y + (i-1)*m_fSlotSize; + } + vec.x=m_vSlot0Pos.x + m_iCurrentSlotHIndex*m_fSlotSize; + vec.z=0.0f; + m_pVSlotsBrushImageControl[i]->SetPosition(&vec); +}
\ No newline at end of file |
