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

📄 reinforcedlg.cpp

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

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

CReinforceDlg::CReinforceDlg()
{
	m_pReinforceDlg = NULL;
	m_pReinforceGridDlg = NULL;

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

CReinforceDlg::~CReinforceDlg()
{
	// don't call Release() 
	// pre delete item 
}
void CReinforceDlg::Release(eReinforceReleaseOpt op)
{
	CVirtualItem * pVItem = NULL;

	if((op & eReinforceBasicRelease) && !IsEmpty(0))
	{
		m_pReinforceDlg->DeleteIcon(0, (cIcon **)&pVItem);
		pVItem->GetLinkItem()->SetLock(FALSE);
		pVItem->SetLinkItem(NULL);
	}


	if( (op & eReinforceViewRelease) )
	{
		for(int i = 1 ; i < MAX_REINFORCEGRID_NUM+1 ; ++i)
		{
			if(!IsEmpty(i))
			{
				m_pReinforceGridDlg->DeleteIcon(i-1, (cIcon **)&pVItem);
				pVItem->GetLinkItem()->SetLock(FALSE);
				pVItem->SetLinkItem(NULL);
			}
		}		
	}

}
void CReinforceDlg::Linking()
{
	m_pReinforceDlg		= (cIconDialog *)GetWindowForID(ITR_REINFORCEICONDLG);
	m_pReinforceGridDlg = (cIconGridDialog *)GetWindowForID(ITR_REINFORCEICONGRIDDLG);
}
BOOL CReinforceDlg::IsEmpty(POSTYPE pos)
{
	if(pos == 0)
	{
		if(m_pReinforceDlg->IsAddable(0))
			return TRUE;
		else
			return FALSE;
	}
	else
	{
		if(m_pReinforceGridDlg->IsAddable(pos-1))
			return TRUE;
		else
			return FALSE;
	}
}
BOOL CReinforceDlg::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()))
		return FALSE;


	eITEM_KINDBIT bits = pOrigItem->GetItemKind();
	if(bits & eEQUIP_ITEM)
	{
		if(!IsEmpty(0))
		{
			Release(eReinforceBasicRelease);
		}

		AddVirtualItemWrap(0, pOrigItem);
	}
	// ReinforceInfo must exist
	else if( bits == eEXTRA_ITEM_JEWEL )
	{
		CVirtualItem* pVItem = GetVirtualItem(0);
		if( pVItem )
		{
			if( !REINFORCEMGR->CheckValidMaterial( pVItem->GetSrcItemIdx(), pOrigItem->GetItemIdx() ) )
			{
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(680) );
				//碍拳且 酒捞袍苞 嘎瘤 臼绰 犁丰涝聪促.
				return FALSE;
			}

			BOOL bEmpty = FALSE;
			for(int i = 1 ; i < MAX_REINFORCEGRID_NUM +1 ; ++i)
			{
				if(IsEmpty(i))
				{
					bEmpty = TRUE;
					break;
				}
			}
			if(!bEmpty)	return FALSE;

			AddVirtualItemWrap(i, pOrigItem);
		}
		else
		{
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(222) );
			//"刚历 碍拳且 酒捞袍阑 棵妨林技夸"
			return FALSE;
		}
	}
	else
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(220) );
		return FALSE;
	}


	pOrigItem->SetLock(TRUE);

	return FALSE;
}
CVirtualItem * CReinforceDlg::GetVirtualItem(POSTYPE relPos)
{
	if(relPos == 0)
	{
		return (CVirtualItem *)m_pReinforceDlg->GetIconForIdx(0);
	}
	else
	{
		return (CVirtualItem *)m_pReinforceGridDlg->GetIconForIdx(relPos-1);
	}
}
BOOL CReinforceDlg::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 CReinforceDlg::AddVirtualItem(POSTYPE relPos, CVirtualItem * pItem)
{
	//empty 眉农饶 
	if(relPos == 0)
	{
		if(IsEmpty(0))
		{
			m_pReinforceDlg->AddIcon(0, (cIcon *)pItem);
			return TRUE;
		}
		return FALSE;
	}
	else
	{
		if(IsEmpty(relPos))
		{
			m_pReinforceGridDlg->AddIcon(relPos-1, (cIcon *)pItem);
			return TRUE;
		}
		return FALSE;
	}
}

DWORD CReinforceDlg::ActionEvent(CMouse * mouseInfo)
{
	DWORD we = WE_NULL;
	if( !m_bActive ) return we;
	we |= cDialog::ActionEvent(mouseInfo);

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

	return we;
}

BOOL CReinforceDlg::OnActionEvent(LONG lId, void * p, DWORD we)
{
	
	switch(we)
	{
	case WE_CLOSEWINDOW:
		{
			CReinforceDlg * pReinforceDlg = (CReinforceDlg*)WINDOWMGR->GetWindowForID(lId);
			pReinforceDlg->Release();
			return TRUE;
		}
		break;
	}

	switch( lId )
	{
	case ITR_REINFORCEOKBTN:
		{
			CReinforceDlg * pReinforceDlg = (CReinforceDlg *)p;
			CReinforceDlg::ReinforceOkBtn(pReinforceDlg);
		}
		break;
	case ITR_REINFORCECANCELBTN:
		{
			CReinforceDlg * pReinforceDlg = (CReinforceDlg *)p;
			CReinforceDlg::ReinforceCancelBtn(pReinforceDlg);
		}
		break;
		
	}


	return TRUE;
}
void CReinforceDlg::ReinforceOkBtn(CReinforceDlg * pThis)
{
	if(pThis->IsEmpty(0))
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(222) );
		return;
	}


	MSG_ITEM_REINFORCE_SYN msg;
	msg.Init(MP_ITEM, MP_ITEM_REINFORCE_SYN, HEROID);
	CVirtualItem * pTargetItem = (CVirtualItem *)pThis->m_pReinforceDlg->GetIconForIdx(0);
	msg.wTargetItemIdx	= pTargetItem->GetSrcItemIdx();
	msg.TargetPos		= pTargetItem->GetSrcPosition();
	for(int i = 1 ; i < MAX_REINFORCEGRID_NUM +1 ; ++i)
	{
		if(!pThis->IsEmpty(i))
		{
			CVirtualItem * pJewelItem = (CVirtualItem *)pThis->m_pReinforceGridDlg->GetIconForIdx(i-1);
			msg.AddJewelInfo(pJewelItem->GetSrcItemIdx(), pJewelItem->GetSrcPosition(), pJewelItem->GetDurability() );
		}
	}	
	if(msg.wJewelUnit == 0)
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(224) );
		return ;
	}

	NETWORK->Send(&msg, msg.GetSize());
}

void CReinforceDlg::ReinforceCancelBtn(CReinforceDlg * pThis)
{
	pThis->Release();
	pThis->SetActiveRecursive(FALSE);
	CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(223) );
}



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

⌨️ 快捷键说明

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