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

📄 dlgimprove.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
// DlgImprove.cpp : implementation file
//

#include "stdafx.h"
#include "myshell.h"
#include "DlgImprove.h"

#include "Hero.h"
#include "Item.h"
#include "GameMsg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgImprove dialog


CDlgImprove::CDlgImprove(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgImprove::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgImprove)
	m_bShow = false ;
	m_nImproveType = 0;
	m_nIconRealID = 0 ;
	m_GoodID = 0;
	m_GemID = 0;
	//}}AFX_DATA_INIT
}


void CDlgImprove::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgImprove)
	DDX_Control(pDX, IDC_IMPROVE_BTN_CLOSEB, m_ImproveBtnCloseB);
	DDX_Control(pDX, IDC_IMPROVE_BTN_CLOSE, m_ImproveBtnClose);
	DDX_Control(pDX, IDC_IMPROVE_IMA_GOOD, m_ImproveImaGood);
	DDX_Control(pDX, IDC_IMPROVE_IMA_GEM, m_ImproveImaGem);
	DDX_Control(pDX, IDC_IMPROVE_BTN_IMP, m_ImproveBtnImp);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgImprove, CDialog)
	//{{AFX_MSG_MAP(CDlgImprove)
	ON_WM_CTLCOLOR()
	ON_WM_MOVE()
	ON_BN_CLICKED(IDC_IMPROVE_IMA_GEM, OnImproveImaGem)
	ON_BN_CLICKED(IDC_IMPROVE_IMA_GOOD, OnImproveImaGood)
	ON_BN_CLICKED(IDC_IMPROVE_BTN_IMP, OnImproveBtnImp)
	ON_BN_CLICKED(IDC_IMPROVE_BTN_CLOSE, OnImproveBtnClose)
	ON_BN_DOUBLECLICKED(IDC_IMPROVE_IMA_GEM, OnDoubleclickedImproveImaGem)
	ON_BN_DOUBLECLICKED(IDC_IMPROVE_IMA_GOOD, OnDoubleclickedImproveImaGood)
	ON_BN_CLICKED(IDC_IMPROVE_BTN_CLOSEB, OnImproveBtnCloseb)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgImprove message handlers

LRESULT CDlgImprove::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	switch ( message )
	{
	case WM_ENABLE:
		m_bShow = wParam ;
		CDlgImprove::ResetImproveDlg();
		if (wParam)
			DXPlaySound ( "Sound/Open.wav" ) ;
		else
			DXPlaySound ( "Sound/window_close.wav" ) ;		
		break ;
	case WM_COMMAND:
		if ( wParam == 1 )
		{
			return true ;
		}
		else if ( wParam == 2 )
		{
			CDlgImprove::OnCloseB();
			return true ;
		}
		break ;
	case WM_MY_MESSAGE:
		switch(wParam)
		{
		case ON_MSGDLG_HIDE:
			CDlgImprove::GetParent()->PostMessage( WM_MY_MESSAGE, ON_MSGDLG_HIDE);
			break;
		case ON_MSGDLG_POINT:
			CDlgImprove::GetParent()->PostMessage( WM_MY_MESSAGE, ON_MSGDLG_POINT, lParam ) ;			
			break;
		case ON_MSGDLG_IMAGE:
			CDlgImprove::GetParent()->PostMessage( WM_MY_MESSAGE, ON_MSGDLG_GOODS, DLG_IMPROVE ) ;
			break ;
		default:
			break;
		}
	}
	
	return CDialog::WindowProc(message, wParam, lParam);
}

HBRUSH CDlgImprove::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	pDC->SetBkMode ( TRANSPARENT ) ;
	return g_StockBrush;
}

BOOL CDlgImprove::OnInitDialog() 
{
	CDialog::OnInitDialog();

	CRect rect ;
	CDlgImprove::GetWindowRect ( rect ) ;

	// Init the image
	if ( ! m_ImproveImaGood.Init ( rect.left, rect.top, NULL, ITEM_IMAGE ) )
		return false ;
	m_ImproveImaGood.SetItemPos(DLG_IMPROVE);
	if ( ! m_ImproveImaGem.Init ( rect.left, rect.top, NULL, ITEM_IMAGE ) )
		return false ;
	m_ImproveImaGem.SetItemPos(DLG_IMPROVE);
	// Init the Button
	if ( ! m_ImproveBtnImp.Init ( rect.left, rect.top, "Button76" ) )
		return false ;
	if ( ! m_ImproveBtnClose.Init ( rect.left, rect.top, "Button77" ) )
		return false ;
	m_ImproveBtnCloseB.Init ( rect.left, rect.top, "Button540" ) ;
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgImprove::OnMove(int x, int y) 
{
	CDialog::OnMove(x, y);
	
	m_Pnt.x = x ;
	m_Pnt.y = y ;
	
}

void CDlgImprove::Show()
{
	if ( m_bShow )
	{

		// Show the owner	
		CAni* ShowAni = g_objGameDataSet.GetDataAni ( ( char * )g_strControlAni,
														  "Dialog29",
														  EXIGENCE_IMMEDIATE ) ;
		if ( ShowAni != NULL )
			ShowAni->Show ( 0, m_Pnt.x,m_Pnt.y ) ;
		else
			return ;

		// Show the image
		m_ImproveImaGem.Show ( m_Pnt.x, m_Pnt.y ) ;
		m_ImproveImaGood.Show ( m_Pnt.x, m_Pnt.y ) ;
		
		// Show the button
		m_ImproveBtnImp.Show ( m_Pnt.x, m_Pnt.y ) ;
		m_ImproveBtnClose.Show ( m_Pnt.x, m_Pnt.y ) ;
		m_ImproveBtnCloseB.Show ( m_Pnt.x, m_Pnt.y ) ;
	}
}

void CDlgImprove::OnImproveImaGem() 
{
	if ( g_bPickUp && !m_ImproveImaGem.GetImageLoadState () )
	{
		CItem* pItem = g_objHero.GetItem ( m_nIconRealID ) ;
		if ( pItem != NULL )
		{
			int ItemType = pItem->GetSubType()/1000*1000;
			BOOL bPickInOk = false;
			switch(m_nImproveType)
			{
			case 0:
				if (pItem->IsDragonBall())
					bPickInOk = true;
				break;
			case 1:
				if (pItem->IsSoulStone())
					bPickInOk = true;	
				break;
			case 2:
				if (pItem->IsShootingStar())
					bPickInOk = true;
				break;
			case 3:
				if (ItemType == ITEMTYPE_GHOSTGEM_INVITE)
					bPickInOk = true;
				break;
			default:
				break;
			}
			if (bPickInOk)
			{				
				m_GemID = pItem->GetID () ;
				m_ImproveImaGem.InsertImage (NULL , m_GemID ) ;
				CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_DROP,  DLG_ALL) ;
				CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, CMD_FLASHITEM ) ;
			}
			else
				m_GemID = 0;
		}
	}
}

void CDlgImprove::OnImproveImaGood() 
{
	if ( g_bPickUp && !m_ImproveImaGood.GetImageLoadState ())
	{
		CItem* pItem = g_objHero.GetItem ( m_nIconRealID ) ;
		// Test if the item is equipment
		if ( pItem->GetSort() == ITEMSORT_HELMET ||
			 pItem->GetSort() == ITEMSORT_NECKLACE ||
			 pItem->GetSort() == ITEMSORT_ARMOR ||
			 pItem->GetSort() == ITEMSORT_WEAPON_SINGLE_HAND ||
			 pItem->GetSort() == ITEMSORT_WEAPON_DOUBLE_HAND ||
			 pItem->GetSort() == ITEMSORT_SHIELD ||
			 pItem->GetSort() == ITEMSORT_RING ||
			 pItem->GetSort() == ITEMSORT_TREASURE ||
			 pItem->GetSort() == ITEMSORT_SHOES )
		{
			// Test if the item is no broken
			if ( pItem->GetAmount() != pItem->GetAmountLimit () )
			{
				g_objGameMsg.AddMsg ( g_objGameDataSet.GetStr ( 10373 ) ) ;
				m_GoodID = 0 ;
				return ;
			}
			else 
			{
				switch(m_nImproveType)
				{
				case 0:
					{
						OBJID idType = pItem->GetTypeID() % 10;
						if (idType >=4)
						{
							g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10680));//该物品已到最高品质,无法再升级品质!
							m_GoodID = 0;
							return;
						}	
						ItemTypeInfo pInfo;
						if (!CItem::s_ItemData.GetItemTypeInfo(pItem->GetTypeID()+1,pInfo)) 
						{
							g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10900));//该物品无法再升级品质!
							m_GoodID = 0;
							return;							
						}
					}
					break;
				case 1:
					if (pItem->GetAddition()>=9)
					{
						g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10681));//该物品已到最高魔魂等级,无法再升级魔魂等级!
						m_GoodID = 0;
						return;
					}
					ItemAdditionInfo pInfo;
					if (!CItem::s_ItemData.GetItemAdditionInfo(pItem->GetTypeID(),pItem->GetAddition()+1,pInfo)) 
					{
						g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10902));//该物品无法提升魔魂!
						m_GoodID = 0;
						return;							
					}
					break;
				case 2:
					{						
						int nLevel = (pItem->GetTypeID()/10)%100;
						if ((pItem->GetSort() == ITEMSORT_WEAPON_SINGLE_HAND 
							|| pItem->GetSort() == ITEMSORT_WEAPON_DOUBLE_HAND)
							&&nLevel>=22)	//武器
						{
							if (nLevel>=22)
							{
								g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10682));//该物品已到最高等级,无法再升级等级!
								m_GoodID = 0;
								return;
							}
						}
						else if (pItem->GetSort() != ITEMSORT_WEAPON_SINGLE_HAND 
							&& pItem->GetSort() != ITEMSORT_WEAPON_DOUBLE_HAND && nLevel >=9) //其它装备
						{
							g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10682));//该物品已到最高等级,无法再升级等级!
							m_GoodID = 0;
							return;
						}
						ItemTypeInfo pInfo;
						if (!CItem::s_ItemData.GetItemTypeInfo(pItem->GetTypeID()+10,pInfo)) 
						{
							g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(10901));//该物品无法再升级等级!
							m_GoodID = 0;
							return;							
						}
					}
					break;
				case 3:
					break;
				default:
					break;
				}
			}
			m_GoodID = pItem->GetID () ;
			m_ImproveImaGood.InsertImage (NULL,m_GoodID,0,true) ;
			CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_DROP,  DLG_ALL) ;
			CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, CMD_FLASHITEM ) ;
		}
		else
			m_GoodID = 0 ;
	}
}

void CDlgImprove::OnImproveBtnImp() 
{
	DXPlaySound("Sound/Dlg_Ok.wav");
	if (m_ImproveImaGood.GetImageLoadState() && m_ImproveImaGem.GetImageLoadState())
	{
		CItem* pItem = g_objHero.GetItem(m_GemID);
		if (pItem)
		{
			if (pItem->IsDragonBall())
				g_objHero.ImproveQuality( m_GoodID, m_GemID ) ;
			else if (pItem->IsSoulStone())
				g_objHero.ImproveSoulDegree(m_GoodID,m_GemID );
			else if (pItem->IsShootingStar())
				g_objHero.UpLevelItem(m_GoodID,m_GemID);
			else
				g_objHero.ImproveMagic(m_GoodID,m_GemID);
			CDlgImprove::EnableWindow(false) ;
			CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_IMPROVE_CLOSE ) ;
		}
	}
}

void CDlgImprove::OnImproveBtnClose() 
{
	DXPlaySound("Sound/Dlg_Ok.wav");
	m_ImproveImaGem.RemoveImage () ;
	m_ImproveImaGood.RemoveImage () ;
	CDlgImprove::EnableWindow(false) ;
	CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_IMPROVE_CLOSE ) ;
}

void CDlgImprove::SetPickUpState(int nIconRealID)
{
	m_nIconRealID = nIconRealID ;
}

DWORD CDlgImprove::GetMouseMoveId()
{
	if ( m_ImproveImaGem.m_bMouseMove )
		return m_GemID ;
	else
		return m_GoodID ;
}

void CDlgImprove::OnDoubleclickedImproveImaGem() 
{
	if ( m_ImproveImaGem.GetImageLoadState () )
	{
		m_ImproveImaGem.RemoveImage () ;
		m_GemID = 0;
		CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, CMD_FLASHITEM ) ;
	}
}

void CDlgImprove::OnDoubleclickedImproveImaGood() 
{
	if ( m_ImproveImaGood.GetImageLoadState () )
	{
		m_ImproveImaGood.RemoveImage () ;
		m_GoodID = 0;
		CDlgImprove::GetParent ()->PostMessage ( WM_MY_MESSAGE, CMD_FLASHITEM ) ;
	}
}

void CDlgImprove::OnImproveBtnCloseb() 
{
	DXPlaySound("Sound/window_close.wav");
	CDlgImprove::OnImproveBtnClose () ;	
}

void CDlgImprove::ResetImproveDlg()
{
	m_ImproveImaGood.RemoveImage();
	m_ImproveImaGem.RemoveImage();

	m_GoodID = 0;
	m_GemID = 0;
}

void CDlgImprove::OnCloseB()
{
	CDlgImprove::OnImproveBtnClose();
}

⌨️ 快捷键说明

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