aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_Ctrl_CraftIngredientSlot.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_Ctrl_CraftIngredientSlot.cpp')
-rw-r--r--Minecraft.Client/Common/XUI/XUI_Ctrl_CraftIngredientSlot.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_Ctrl_CraftIngredientSlot.cpp b/Minecraft.Client/Common/XUI/XUI_Ctrl_CraftIngredientSlot.cpp
new file mode 100644
index 00000000..82b6c3ed
--- /dev/null
+++ b/Minecraft.Client/Common/XUI/XUI_Ctrl_CraftIngredientSlot.cpp
@@ -0,0 +1,123 @@
+#include "stdafx.h"
+
+#include "XUI_Ctrl_CraftIngredientSlot.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"
+
+//-----------------------------------------------------------------------------
+// CXuiCtrlMinecraftSlot class
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+CXuiCtrlCraftIngredientSlot::CXuiCtrlCraftIngredientSlot()
+{
+ m_iID=0;
+ m_Desc=NULL;
+ m_isFoil = false;
+ m_isDirty = false;
+ m_item = nullptr;
+}
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CXuiCtrlCraftIngredientSlot::OnInit(XUIMessageInit* pInitData, BOOL& rfHandled)
+{
+ HRESULT hr=S_OK;
+
+ return hr;
+}
+//-----------------------------------------------------------------------------
+HRESULT CXuiCtrlCraftIngredientSlot::OnCustomMessage_GetSlotItem(CustomMessage_GetSlotItem_Struct *pData, BOOL& bHandled)
+{
+ if( m_iID != 0 || m_item != NULL )
+ {
+ pData->item = m_item;
+ pData->iItemBitField = MAKE_SLOTDISPLAY_ITEM_BITMASK(m_iID,m_iAuxVal,m_isFoil);
+ pData->iDataBitField = MAKE_SLOTDISPLAY_DATA_BITMASK(m_iPad, m_uiAlpha,m_bDecorations,m_iCount,m_iScale,0);
+ }
+ else
+ {
+ pData->iDataBitField = 0;
+ pData->szPath = L"";
+ }
+ pData->bDirty = m_isDirty ? TRUE : FALSE;
+ m_isDirty = false;
+
+ bHandled = TRUE;
+ return S_OK;
+}
+
+HRESULT CXuiCtrlCraftIngredientSlot::OnGetSourceText(XUIMessageGetSourceText *pGetSourceTextData,BOOL& bHandled)
+{
+ pGetSourceTextData->szText=m_Desc;
+ bHandled = TRUE;
+
+ return S_OK;
+}
+
+void CXuiCtrlCraftIngredientSlot::SetRedBox(BOOL bVal)
+{
+ HRESULT hr=S_OK;
+
+ HXUIOBJ hObj,hObjChild;
+ hr=GetVisual(&hObj);
+ XuiElementGetChildById(hObj,L"BoxRed",&hObjChild);
+ XuiElementSetShow(hObjChild,bVal);
+ XuiElementGetChildById(hObj,L"Exclaim",&hObjChild);
+ XuiElementSetShow(hObjChild,bVal);
+}
+
+void CXuiCtrlCraftIngredientSlot::SetIcon(int iPad, int iId,int iAuxVal, int iCount, int iScale, unsigned int uiAlpha,bool bDecorations,bool isFoil, BOOL bShow)
+{
+ m_item = nullptr;
+ m_iID=iId;
+ m_iAuxVal=iAuxVal;
+
+ // 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
+ // not right... auxvals for diggables are damage values, can be a lot higher
+ if( (m_iAuxVal & 0xFF) == 0xFF && !( iId == Item::clock_Id || iId == Item::compass_Id ) ) // 4J Stu - If the aux value is set to match any
+ m_iAuxVal = 0;
+
+ // if the count comes in as 0, make it 1
+ m_iCount=iCount==0?1:iCount;
+ m_iScale=iScale;
+ m_uiAlpha=uiAlpha;
+ m_bDecorations=bDecorations;
+ m_isFoil = isFoil;
+
+ m_iPad = iPad;
+ m_isDirty = true;
+
+ XuiElementSetShow(m_hObj,bShow);
+}
+
+void CXuiCtrlCraftIngredientSlot::SetIcon(int iPad, shared_ptr<ItemInstance> item, int iScale, unsigned int uiAlpha,bool bDecorations, BOOL bShow)
+{
+ if(item == NULL) SetIcon(iPad, 0,0,0,0,0,false,false,bShow);
+ else
+ {
+ m_item = item;
+ m_iID = item->id;
+ m_iScale = iScale;
+ m_uiAlpha = uiAlpha;
+ m_bDecorations = bDecorations;
+
+ m_iPad = iPad;
+ m_isDirty = true;
+
+ XuiElementSetShow(m_hObj,bShow);
+ }
+}
+
+void CXuiCtrlCraftIngredientSlot::SetDescription(LPCWSTR Desc)
+{
+ HRESULT hr=S_OK;
+
+ HXUIOBJ hObj,hObjChild;
+ hr=GetVisual(&hObj);
+ XuiElementGetChildById(hObj,L"text_name",&hObjChild);
+ XuiControlSetText(hObjChild,Desc);
+ XuiElementSetShow(hObjChild,Desc==NULL?FALSE:TRUE);
+ m_Desc=Desc;
+} \ No newline at end of file