aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_Ctrl_EnchantButton.cpp
blob: 6c7876c9fb3526c2c77e63b641f3a8ebe1e25765 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
#include "..\..\..\Minecraft.World\StringHelpers.h"
#include "..\..\Font.h"
#include "..\..\Lighting.h"
#include "..\..\MultiPlayerLocalPlayer.h"
#include "XUI_Scene_Enchant.h"
#include "XUI_Ctrl_EnchantButton.h"

//-----------------------------------------------------------------------------
HRESULT CXuiCtrlEnchantmentButton::OnInit(XUIMessageInit* pInitData, BOOL& rfHandled)
{
	HRESULT hr=S_OK;

	Minecraft *pMinecraft=Minecraft::GetInstance();

	ScreenSizeCalculator ssc(pMinecraft->options, pMinecraft->width_phys, pMinecraft->height_phys);
	m_fScreenWidth=(float)pMinecraft->width_phys;
	m_fRawWidth=(float)ssc.rawWidth;
	m_fScreenHeight=(float)pMinecraft->height_phys;
	m_fRawHeight=(float)ssc.rawHeight;

	HXUIOBJ parent = m_hObj;
	HXUICLASS hcInventoryClass = XuiFindClass( L"CXuiSceneEnchant" );
	HXUICLASS currentClass;

	do
	{
		XuiElementGetParent(parent,&parent);
		currentClass = XuiGetObjectClass( parent );
	} while (parent != NULL && !XuiClassDerivesFrom( currentClass, hcInventoryClass ) );

	assert( parent != NULL );

	VOID *pObj;
	XuiObjectFromHandle( parent, &pObj );
	m_containerScene = (CXuiSceneEnchant *)pObj;

	m_index = 0;
	m_lastCost = 0;
	m_iPad = 0;
	m_costString = L"";

	return hr;
}

void CXuiCtrlEnchantmentButton::SetData(int iPad, int index)
{
	m_iPad = iPad;
	m_index = index;
}

HRESULT CXuiCtrlEnchantmentButton::OnGetSourceDataText(XUIMessageGetSourceText *pGetSourceTextData, BOOL& bHandled)
{
	EnchantmentMenu *menu = m_containerScene->getMenu();

	int cost = menu->costs[m_index];

	if(cost != m_lastCost)
	{
		Minecraft *pMinecraft = Minecraft::GetInstance();
		if(cost > pMinecraft->localplayers[m_iPad]->experienceLevel && !pMinecraft->localplayers[m_iPad]->abilities.instabuild)
		{
			// Dark background
			SetEnable(FALSE);
		}
		else
		{
			// Light background and focus background
			SetEnable(TRUE);
		}
		m_costString = std::to_wstring(cost);
		m_lastCost = cost;
	}
	if(cost == 0)
	{
		// Dark background
		SetEnable(FALSE);
		pGetSourceTextData->bDisplay = FALSE;
	}
	else
	{
		pGetSourceTextData->szText = m_costString.c_str();
		pGetSourceTextData->bDisplay = TRUE;
	}

	bHandled = TRUE;

	return S_OK;
}