⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upgradedlg.cpp

📁 墨香最新私服
💻 CPP
字号:
// UpgradeDlg.cpp: implementation of the CUpgradeDlg class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "UpgradeDlg.h"
#include "Item.h"
#include "INTERFACE\cIconDialog.h"
#include "WindowIDEnum.h"
#include "ChatManager.h"
#include "./Interface/cScriptManager.h"
#include "ItemManager.h"
#include "./Interface/cWindowManager.h"
#include "ObjectManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CUpgradeDlg::CUpgradeDlg()
{
	m_pUpgradeDlg = NULL;

	cImage imgToolTip;
	SCRIPTMGR->GetImage( 63, &imgToolTip, PFT_HARDPATH );
	for(int i = 0 ; i < eMAXITEM_POS ; ++i)
	{
		m_VirtualItem[i].SetToolTip( "", RGB_HALF( 255, 255, 255), &imgToolTip );
		m_VirtualItem[i].SetMovable(FALSE);
	}

}

CUpgradeDlg::~CUpgradeDlg()
{
	// don't call Release() 
	// pre delete item 
	m_pUpgradeDlg = NULL;
}
void CUpgradeDlg::Release(eReleaseOpt op)
{
	// 扁夯 酒捞袍 傅农
	// 厚鞭辑 酒捞袍 傅农
	// 搬苞 酒捞袍 傅农
	CVirtualItem * pVItem;
	if(m_pUpgradeDlg)
	{
		if(!m_pUpgradeDlg->IsAddable(eBASICITEM_POS) && (op & eBasicRelease) )
		{
			m_pUpgradeDlg->DeleteIcon(eBASICITEM_POS, (cIcon **)&pVItem);
			m_VirtualItem[eBASICITEM_POS].GetLinkItem()->SetLock(FALSE);
			m_VirtualItem[eBASICITEM_POS].SetLinkItem(NULL);

			//pVItem->SetLinkItem(NULL);
			//pVItem->GetLinkItem()->SetLock(FALSE);
			//pVItem->SetLinkItem(NULL);
		}

		if(!m_pUpgradeDlg->IsAddable(eUPGRADEITEM_POS) && (op & eUpgradeRelease) )
		{
			m_pUpgradeDlg->DeleteIcon(eUPGRADEITEM_POS, (cIcon **)&pVItem);
			m_VirtualItem[eUPGRADEITEM_POS].GetLinkItem()->SetLock(FALSE);
			m_VirtualItem[eUPGRADEITEM_POS].SetLinkItem(NULL);
			//pVItem->GetLinkItem()->SetLock(FALSE);
			//pVItem->SetLinkItem(NULL);
		}

		if(!m_pUpgradeDlg->IsAddable(eRESULTITEM_POS) && (op & eResultRelease) )
		{
			m_pUpgradeDlg->DeleteIcon(eRESULTITEM_POS, (cIcon **)&pVItem);
			m_VirtualItem[eRESULTITEM_POS].GetLinkItem()->SetLock(FALSE);
			m_VirtualItem[eRESULTITEM_POS].SetLinkItem(NULL);
			//pVItem->GetLinkItem()->SetLock(FALSE);
			//pVItem->SetLinkItem(NULL);
		}
	}

}
void CUpgradeDlg::Linking()
{
	m_pUpgradeDlg = (cIconDialog *)GetWindowForID(ITD_UPGRADEGRID);
}

BOOL CUpgradeDlg::CanBasicEquipItem(CItem * pBasicItem)
{
	CVirtualItem * pUpgradeItem = (CVirtualItem *)m_pUpgradeDlg->GetIconForIdx(eUPGRADEITEM_POS);
	if(pUpgradeItem)
	{
		eITEM_KINDBIT upbits = pUpgradeItem->GetSrcItemKind();
		eITEM_KINDBIT bits = pBasicItem->GetItemKind();
		if( upbits == eEXTRA_ITEM_UPGRADE_ATTACK)
		{
			// 公扁
			if((bits >= eEQUIP_ITEM_WEAPON && bits < eEQUIP_ITEM_WEAPON+6))
			{
				return TRUE;
			}
			else
			{
				return FALSE;
			}
		}
		else if( upbits == eEXTRA_ITEM_UPGRADE_DEFENSE)
		{
			// 规绢备 
			if(bits == eEQUIP_ITEM_DRESS ||
				bits == eEQUIP_ITEM_HAT ||
				bits == eEQUIP_ITEM_SHOES)
			{
				return TRUE;
			}
			else
			{
				return FALSE;
			}
		}
	}
	else
	{
		if(!m_pUpgradeDlg->IsAddable(eBASICITEM_POS)) 
			return FALSE;	
	}
	return TRUE;
}

BOOL CUpgradeDlg::CanUpgradeEquipItem(CItem * pUpgradeItem)
{
	CVirtualItem * pBasicItem = (CVirtualItem *)m_pUpgradeDlg->GetIconForIdx(eBASICITEM_POS);
	if(pBasicItem)
	{
		eITEM_KINDBIT upbits = pUpgradeItem->GetItemKind();
		eITEM_KINDBIT bits = pBasicItem->GetSrcItemKind();
		if((bits >= eEQUIP_ITEM_WEAPON && bits < eEQUIP_ITEM_WEAPON+6))
		{
			if(upbits == eEXTRA_ITEM_UPGRADE_ATTACK)
				return TRUE;
			else 
				return FALSE;
		}
		else if(bits == eEQUIP_ITEM_DRESS ||
				bits == eEQUIP_ITEM_HAT ||
				bits == eEQUIP_ITEM_SHOES)
		{
			if(upbits == eEXTRA_ITEM_UPGRADE_DEFENSE)
				return TRUE;
			else 
				return FALSE;
		}
		else
		{
			return FALSE;
		}
	}
	else
	{

	}
	return TRUE;
}

eErrorUpgrade CUpgradeDlg::CanUpgradeItem(CItem * pBasicItem)
{
	eITEM_KINDBIT bits = pBasicItem->GetItemKind();
	if(bits & eEQUIP_ITEM)
	{
		if(CanBasicEquipItem(pBasicItem))
			return eErrorUpgrade_NoError;
		else
			return eErrorUpgrade_OnlyBasicItem;
	}
	else if(bits & eEXTRA_ITEM_UPGRADE)
	{
		if(CanUpgradeEquipItem(pBasicItem))
			return eErrorUpgrade_NoError;
		else
			return eErrorUpgrade_OnlyExtraItem;
	}
	return eErrorUpgrade_UnKnownError;
}


BOOL CUpgradeDlg::AddVirtualItem(POSTYPE relPos, CVirtualItem * pItem)
{
	//empty 眉农饶 
	if(m_pUpgradeDlg->IsAddable(relPos))
	{
		m_pUpgradeDlg->AddIcon(relPos, (cIcon *)pItem);
		return TRUE;
	}
	return FALSE;
}
DWORD CUpgradeDlg::ActionEvent(CMouse * mouseInfo)
{
	DWORD we = WE_NULL;
	if( !m_bActive ) return we;
	we |= cDialog::ActionEvent(mouseInfo);

	for(int i = 0 ; i < eMAXITEM_POS ; ++i)
	{
		m_VirtualItem[i].ActionEvent(mouseInfo);
	}

	return we;
}

BOOL CUpgradeDlg::AddVirtualItemWrap(POSTYPE relPos, CItem * pItem)
{
	m_VirtualItem[relPos].SetData(pItem->GetItemIdx());
	m_VirtualItem[relPos].SetLinkItem(pItem);

	if(pItem->GetDurability() != 0 && !ITEMMGR->IsDupItem(pItem->GetItemIdx()))
		ITEMMGR->SetToolTipIcon((cIcon*)&m_VirtualItem[relPos], ITEMMGR->GetItemOption(pItem->GetDurability()));
	else
		ITEMMGR->SetToolTipIcon((cIcon*)&m_VirtualItem[relPos]);
	return AddVirtualItem(relPos, &m_VirtualItem[relPos]);
}

BOOL CUpgradeDlg::FakeMoveIcon(LONG x, LONG y, cIcon * pOrigIcon)
{
	if(pOrigIcon->GetType() != WT_ITEM) return FALSE;
	if( m_bDisable ) return FALSE;

	CItem * pOrigItem = (CItem *)pOrigIcon;
	if( pOrigItem->IsLocked() ) return FALSE;

	// 牢亥配府捞寇俊 酒捞袍 FALSE
	if(!ITEMMGR->IsEqualTableIdxForPos(eItemTable_Inventory, pOrigItem->GetPosition()))
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg( 620 ) );
		return FALSE;
	}

	eITEM_KINDBIT bits = pOrigItem->GetItemKind();
	
	if(bits & eEQUIP_ITEM)
	{
		if(!CanBasicEquipItem(pOrigItem))
		{
			//厚鞭辑俊 嘎瘤 臼绰 公扁/规绢备绰 殿废 阂啊瓷
			//CHATMGR->AddMsg( CTC_TOWHOLE, CHATMGR->GetChatMsg(170) );
			//return FALSE;	
			Release();

		}
		else
		{
			if(!m_pUpgradeDlg->IsAddable(eRESULTITEM_POS) )
			{
				Release();
			}
			else if(!m_pUpgradeDlg->IsAddable(eBASICITEM_POS) )
			{
				Release(eBasicRelease);
			}
		}
		
		AddVirtualItemWrap(eBASICITEM_POS, pOrigItem);
	}
	else if(bits & eEXTRA_ITEM_UPGRADE)
	{
		if(!CanUpgradeEquipItem(pOrigItem))
		{
			//公扁/规绢备俊 嘎瘤 臼绰 厚鞭辑
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(171) );
			return FALSE;
		}

		if(!m_pUpgradeDlg->IsAddable(eRESULTITEM_POS) )
		{
			Release();
		}
		else if(!m_pUpgradeDlg->IsAddable(eUPGRADEITEM_POS) )
		{
			Release(eUpgradeRelease);
		}

		AddVirtualItemWrap(eUPGRADEITEM_POS, pOrigItem);
	}
	else
	{
		//殿鞭诀俊 荤侩且 荐 绝绰 酒捞袍
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(172) );
		return FALSE;
	}
	

/*
	switch(CanUpgradeItem(pOrigItem))
	{
	case eErrorUpgrade_OnlyBasicItem:
		{
			CHATMGR->AddMsg( CTC_TOWHOLE, CHATMGR->GetChatMsg(170) );
			return FALSE;
		}
		break;
	case eErrorUpgrade_OnlyExtraItem:
		{
			CHATMGR->AddMsg( CTC_TOWHOLE, CHATMGR->GetChatMsg(173) );
			return FALSE;
		}
		break;
	case eErrorUpgrade_UnKnownError:
		{
			CHATMGR->AddMsg( CTC_TOWHOLE, CHATMGR->GetChatMsg(170) );
			return FALSE;
		}
		break;
	}

	eITEM_KINDBIT bits = pOrigItem->GetItemKind();
	if(bits & eEQUIP_ITEM)
	{
		AddVirtualItemWrap(eBASICITEM_POS, pOrigItem);
		//m_VirtualItem[eBASICITEM_POS].SetLinkItem(pOrigItem);
		//AddVirtualItem(eBASICITEM_POS, &m_VirtualItem[eBASICITEM_POS]);
	}
	else if(bits & eEXTRA_ITEM_UPGRADE)
	{
		AddVirtualItemWrap(eUPGRADEITEM_POS, pOrigItem);
		//m_VirtualItem[eUPGRADEITEM_POS].SetLinkItem(pOrigItem);
		//AddVirtualItem(eUPGRADEITEM_POS, &m_VirtualItem[eUPGRADEITEM_POS]);
	}
	*/
	
	//LOCK ITEM
	pOrigItem->SetLock(TRUE);
	
	return FALSE;
}
BOOL CUpgradeDlg::IsUpgrade()
{
	if(m_pUpgradeDlg->IsAddable(eBASICITEM_POS))
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg( 619 ) );
		return FALSE;
	}
	if(m_pUpgradeDlg->IsAddable(eUPGRADEITEM_POS))
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg( 620 ) );
		return FALSE;
	}
	return TRUE;
}

CVirtualItem * CUpgradeDlg::GetVirtualItem(POSTYPE relPos)
{
	return (CVirtualItem *)m_pUpgradeDlg->GetIconForIdx(relPos);
}
BOOL CUpgradeDlg::OnActionEvent(LONG lId, void * p, DWORD we)
{
	switch(we)
	{
	case WE_CLOSEWINDOW:
		{
//			CUpgradeDlg * pUpdradeDlg = (CUpgradeDlg*)p;	//PPP
			CUpgradeDlg * pUpdradeDlg = (CUpgradeDlg*)WINDOWMGR->GetWindowForID(lId);
			pUpdradeDlg->Release();
			return TRUE;
		}
		break;
	}
	
	switch( lId )
	{
	case ITD_UPGRADE_OKBTN:
		{
			CUpgradeDlg * pUpdradeDlg = (CUpgradeDlg*)p;
			CUpgradeDlg::UpgradeOkBtn(pUpdradeDlg);
		}
		break;
	case ITD_UPGRADE_CANCELBTN:
		{
			CUpgradeDlg * pUpdradeDlg = (CUpgradeDlg*)p;
			CUpgradeDlg::UpgradeCancelBtn(pUpdradeDlg);
		}
		break;
	}
	
	return TRUE;
}
void CUpgradeDlg::UpgradeOkBtn(CUpgradeDlg * pThis)
{
	if(!pThis->IsUpgrade()) return;

	CVirtualItem * pTargetItem = pThis->GetVirtualItem(eBASICITEM_POS);
	CVirtualItem * pMatItem = pThis->GetVirtualItem(eUPGRADEITEM_POS);

	MSG_ITEM_UPGRADE_SYN msg;
	msg.Category			= MP_ITEM;
	msg.Protocol			= MP_ITEM_UPGRADE_SYN;
	msg.dwObjectID			= HEROID;
	msg.ItemPos				= pTargetItem->GetSrcPosition();
	msg.wItemIdx			= pTargetItem->GetSrcItemIdx();
	msg.MaterialItemPos		= pMatItem->GetSrcPosition();
	msg.wMaterialItemIdx	= pMatItem->GetSrcItemIdx();


	NETWORK->Send(&msg, sizeof(msg));
}

void CUpgradeDlg::UpgradeCancelBtn(CUpgradeDlg * pThis)
{
	// basic item delete
	// upgrade item delete
	
	pThis->Release();
	pThis->SetActiveRecursive(FALSE);
	CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(175) );
}

void CUpgradeDlg::DieCheck()
{
	if( HERO->GetState() == eObjectState_Die )
	{
		Release();
		SetActiveRecursive( FALSE );
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -