📄 reinforcedlg.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 + -