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

📄 dlgequip.cpp

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

#include "stdafx.h"
#include "myshell.h"
#include "DlgEquip.h"

#include "Hero.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgEquip dialog


CDlgEquip::CDlgEquip(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgEquip::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgEquip)
	m_bShow = false ;
	m_Pnt = CPoint ( 0, 0 ) ;
	m_fFrameStep = 0.0f ;
	m_nFrameMode = 0 ;
	m_nPntX = _SCR_WIDTH ;
	m_nPickUpItemID = 0 ;
	m_PickUpMousePnt = CPoint ( 0, 0 );
	m_nPickUpItemPosition = 0 ;
	//}}AFX_DATA_INIT
}


void CDlgEquip::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgEquip)
	DDX_Control(pDX, IDC_IMG_MOUNT, m_ImgMount);
	DDX_Control(pDX, IDC_IMG_WEAPON, m_ImgWeapon);
	DDX_Control(pDX, IDC_IMG_MANTLE, m_ImgMantle);
	DDX_Control(pDX, IDC_ROLE_XP, m_StaRoleXp);
	DDX_Control(pDX, IDC_ROLE_MP, m_StaRoleMp);
	DDX_Control(pDX, IDC_ROLE_MAGICDEF, m_StaRoleMagicDef);
	DDX_Control(pDX, IDC_ROLE_MAGIC, m_StaRoleMagic);
	DDX_Control(pDX, IDC_ROLE_HP, m_StaRoleHp);
	DDX_Control(pDX, IDC_ROLE_FIGHTDEF, m_StaRoleFightDef);
	DDX_Control(pDX, IDC_ROLE_FIGHT, m_StaRoleFight);
	DDX_Control(pDX, IDC_ROLE_AVOID, m_StaRoleAvoid);
	DDX_Control(pDX, IDC_IMG_SHOE, m_ImgShoe);
	DDX_Control(pDX, IDC_IMG_NECK, m_ImgNeck);
	DDX_Control(pDX, IDC_IMG_HEAD, m_ImgHead);
	DDX_Control(pDX, IDC_IMG_GEAR, m_ImgGear);
	DDX_Control(pDX, IDC_IMG_BODY, m_ImgBody);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgEquip, CDialog)
	//{{AFX_MSG_MAP(CDlgEquip)
	ON_WM_CTLCOLOR()
	ON_WM_MOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgEquip message handlers

LRESULT CDlgEquip::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	if ( message == WM_ENABLE )
	{
		m_bShow = wParam ;
		if ( wParam == false )
		{
//			DXPlaySound ( "Sound/Close.wav" ) ;
		}
		else
		{
			m_dwLastShowTime = TimeGet() ;
			m_nFrameMode = 1 ;
			CRect rect ;
			CDlgEquip::GetWindowRect( rect ) ;
			m_nPntX = _SCR_WIDTH ;
			CDlgEquip::FlashEquip() ;
			CDlgEquip::SetRoleInfo();
		}
	}
	else if ( message == WM_COMMAND )
	{
		if ( wParam == 1 || wParam == 2 )
			return true ;
	}
	else if ( message == WM_MY_MESSAGE )
	{
		switch ( wParam )
		{
		case WM_LBUTTONDOWN:
			{
				if ( m_nPickUpItemID != -1 )
				{
					if ( g_objHero.TryItem( m_nPickUpItemID, lParam ) )
					{
						CDlgEquip::HeroEquipItem( lParam ) ;
					}
					else
					{
						return true;
					}
				}
				else
				{
					CDlgEquip::GetParent()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_ICON_DROP, DLG_ALL ) ;						
					CDlgEquip::FlashEquip() ;
				}
			}
			break ;
		case WM_RBUTTONDBLCLK:
			{
				if ( m_nPickUpItemID != -1 )
				{
					if ( g_objHero.TryItem( m_nPickUpItemID, lParam ) )
					{
						g_objHero.UnequipItem( lParam ) ;
						CDlgEquip::HeroEquipItem( lParam ) ;
					}
					else
					{
						return true ;
					}
				}
			}
			break ;
		case WM_RBUTTONDOWN:
			{
/*				CItem* pItem = g_objHero.GetEquipment(lParam);
				if (pItem!=NULL)
					g_objHero.RepairItem (pItem->GetID()) ;*/
				g_objHero.UnequipItem( lParam ) ;
				CDlgEquip::GetParent()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_ICON_DROP, DLG_ALL ) ;
			}
			break ;
		case WM_LBUTTONDBLCLK:
			{
				m_nPickUpItemPosition = lParam ;
				::GetCursorPos( &m_PickUpMousePnt ) ;
				CDlgEquip::GetParent()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_ICON_PICKUP, DLG_EQUIP ) ;
				m_nPickUpItemID = -1 ;
			}
			break ;
		case ON_MSGDLG_POINT:
			CDlgEquip::GetParent()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_MSGDLG_POINT, lParam ) ;			
			break;
		case ON_MSGDLG_IMAGE:
			{
				m_nMouseMovePosition = lParam ;
				CDlgEquip::GetParent()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_MSGDLG_GOODS, DLG_EQUIP ) ;
			}
			break ;
		case ON_MSGDLG_HIDE:
			CDlgEquip::GetParent()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_MSGDLG_HIDE);
			break;
		default:
			break ;
		}
	}

	return CDialog::WindowProc(message, wParam, lParam);
}

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

BOOL CDlgEquip::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CRect rect ;
	CDlgEquip::GetWindowRect ( rect ) ;
	m_fFrameStep = ( float )(rect.Width()+100) / DLG_FRAME_AMOUNT ;

	//showmode base equip
	m_StaRoleHp.Init(rect.left,rect.top);
	m_StaRoleMp.Init(rect.left,rect.top);
	m_StaRoleXp.Init(rect.left,rect.top);
	m_StaRoleFight.Init(rect.left,rect.top);
	m_StaRoleFightDef.Init(rect.left,rect.top);
	m_StaRoleMagic.Init(rect.left,rect.top);
	m_StaRoleMagicDef.Init(rect.left,rect.top);
	m_StaRoleAvoid.Init(rect.left,rect.top);


	// Init the image
	m_ImgMantle.Init( rect.left,rect.top,NULL,ITEM_IMAGE);
	m_ImgMantle.SetItemPos(ITEMPOSITION_MANTLE);
	m_ImgShoe.Init ( rect.left, rect.top, NULL, ITEM_IMAGE );	
	m_ImgShoe.SetItemPos( ITEMPOSITION_SHOES ) ;
	m_ImgWeapon.Init ( rect.left, rect.top, NULL, ITEM_IMAGE );	
	m_ImgWeapon.SetItemPos( ITEMPOSITION_WEAPONR ) ;
	m_ImgNeck.Init ( rect.left, rect.top, NULL, ITEM_IMAGE );	
	m_ImgNeck.SetItemPos( ITEMPOSITION_NECKLACE ) ;
	m_ImgHead.Init ( rect.left, rect.top, NULL, ITEM_IMAGE );	
	m_ImgHead.SetItemPos( ITEMPOSITION_HELMET ) ;
	m_ImgGear.Init ( rect.left, rect.top, NULL, ITEM_IMAGE );	
	m_ImgGear.SetItemPos( ITEMPOSITION_TREASURE ) ;
	m_ImgBody.Init ( rect.left, rect.top, NULL, ITEM_IMAGE );	
	m_ImgBody.SetItemPos( ITEMPOSITION_ARMOR ) ;
	m_ImgMount.Init(rect.left,rect.top,NULL,ITEM_IMAGE);
	m_ImgMount.SetItemPos(ITEMPOSITION_MOUNT);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

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

void CDlgEquip::Show(int x,int y)
{
	if ( m_bShow )
	{
		// show 3drole
		CMyPos RolePos;
		RolePos.x = x + 160;
		RolePos.y = 290;
		g_objHero.m_objDummy.ShowDummy(RolePos,130,-15);
		// Show the curmode 
		m_ImgShoe.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_ImgWeapon.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_ImgNeck.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_ImgHead.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_ImgGear.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_ImgBody.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_ImgMantle.Show(m_Pnt.x+x, m_Pnt.y +y) ;
		m_ImgMount.Show(m_Pnt.x+x,m_Pnt.y+y);
		m_StaRoleHp.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_StaRoleMp.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_StaRoleXp.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_StaRoleAvoid.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_StaRoleFight.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_StaRoleFightDef.Show ( m_Pnt.x+x, m_Pnt.y+y ) ;
		m_StaRoleMagic.Show ( m_Pnt.x+x, m_Pnt.y +y) ;
		m_StaRoleMagicDef.Show ( m_Pnt.x+x, m_Pnt.y+y ) ;

	}
}

void CDlgEquip::HeroEquipItem(int nPos)
{
	switch(nPos)
	{
	case ITEMPOSITION_HELMET:
		DXPlaySound("Sound/Role_Armet.wav");
		break;
	case ITEMPOSITION_NECKLACE:
		DXPlaySound("Sound/Role_Necklace.wav");
		break;
	case ITEMPOSITION_SHOES:
		DXPlaySound("Sound/Role_Shoes.wav");
		break;
	case ITEMPOSITION_WEAPONR:
		DXPlaySound("Sound/Role_Weapon.wav");
		break;
	case ITEMPOSITION_ARMOR:
		DXPlaySound("Sound/Role_Armor.wav");
		break;
	case ITEMPOSITION_TREASURE:
		DXPlaySound("Sound/Role_Bangle.wav");
		break;
	case ITEMPOSITION_MOUNT:
		DXPlaySound("Sound/Role_Armet.wav");
		break;
	case ITEMPOSITION_MANTLE:
		DXPlaySound("Sound/Role_Bangle.wav");
		break;
	default:
		DXPlaySound("Sound/Role_Bangle.wav");
		break;
	}
	g_objHero.EquipItem( nPos, m_nPickUpItemID ) ;
	g_bPickUp = false ;
	m_nPickUpItemID = 0 ;
	
	CDlgEquip::GetParent ()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_ICON_DROP,  DLG_ALL) ;
}

void CDlgEquip::FlashEquip()
{
	CItem *pEquip = NULL ;

	m_ImgShoe.RemoveImage() ;
	pEquip = g_objHero.GetEquipment( ITEMPOSITION_SHOES ) ;
	if ( pEquip != NULL )
	{
		m_ImgShoe.InsertImage( NULL, pEquip->GetID(),pEquip->GetTypeID () );	
	}

	m_ImgWeapon.RemoveImage() ;
	pEquip = g_objHero.GetEquipment( ITEMPOSITION_WEAPONR ) ;
	if ( pEquip != NULL )
	{
		m_ImgWeapon.InsertImage( NULL, pEquip->GetID(),pEquip->GetTypeID () );	
	}


	m_ImgNeck.RemoveImage() ;
	pEquip = g_objHero.GetEquipment( ITEMPOSITION_NECKLACE ) ;
	if ( pEquip != NULL )
	{
		m_ImgNeck.InsertImage( NULL, pEquip->GetID(),pEquip->GetTypeID () );	
	}


	m_ImgHead.RemoveImage() ;
	pEquip = g_objHero.GetEquipment( ITEMPOSITION_HELMET ) ;
	if ( pEquip != NULL )
	{
		m_ImgHead.InsertImage( NULL, pEquip->GetID(),pEquip->GetTypeID () );	
	}
	
	m_ImgGear.RemoveImage() ;
	pEquip = g_objHero.GetEquipment( ITEMPOSITION_TREASURE ) ;
	if ( pEquip != NULL )
	{
		m_ImgGear.InsertImage( NULL, pEquip->GetID(),pEquip->GetTypeID () );	
	}

	m_ImgBody.RemoveImage() ;
	pEquip = g_objHero.GetEquipment( ITEMPOSITION_ARMOR ) ;
	if ( pEquip != NULL )
	{
		m_ImgBody.InsertImage( NULL, pEquip->GetID(),pEquip->GetTypeID () );	
	}

	m_ImgMount.RemoveImage();
	pEquip = g_objHero.GetEquipment( ITEMPOSITION_MOUNT );
	if (pEquip != NULL )
	{
		m_ImgMount.InsertImage(NULL,pEquip->GetID(),pEquip->GetTypeID ());
	}

	m_ImgMantle.RemoveImage();
	pEquip = g_objHero.GetEquipment(ITEMPOSITION_MANTLE);
	if (pEquip != NULL )
	{
		m_ImgMantle.InsertImage(NULL,pEquip->GetID(),pEquip->GetTypeID ());
	}
}


void CDlgEquip::SetPickUpItemID(int nID)
{
	m_nPickUpItemID = nID ;
}

CPoint CDlgEquip::GetPickUpMousePnt()
{
	return m_PickUpMousePnt ;
}

int CDlgEquip::GetPickUpPosition()
{
	return m_nPickUpItemPosition ;
}

int CDlgEquip::GetMouseMovePosition()
{
	return m_nMouseMovePosition ;
}

void CDlgEquip::SetRoleInfo()
{
	char strtext[64];
	
	itoa(g_objHero.GetMaxLife(),strtext,10);
	m_StaRoleHp.SetWindowText(strtext);

	itoa(g_objHero.GetMaxMana(),strtext,10);
	m_StaRoleMp.SetWindowText(strtext);

	itoa(g_objHero.GetMaxPhysicalForce(),strtext,10);
	m_StaRoleXp.SetWindowText(strtext);

	itoa(g_objHero.GetDex(),strtext,10);
	m_StaRoleAvoid.SetWindowText(strtext);

	itoa(g_objHero.GetMaxAtk(),strtext,10);
	m_StaRoleFight.SetWindowText(strtext);

	itoa(g_objHero.GetDef(),strtext,10);
	m_StaRoleFightDef.SetWindowText(strtext);

	itoa(g_objHero.GetMagicDef(),strtext,10);
	m_StaRoleMagicDef.SetWindowText(strtext);

	itoa(g_objHero.GetMaxMagicAtk(),strtext,10);
	m_StaRoleMagic.SetWindowText(strtext);
}

void CDlgEquip::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if ( m_nPickUpItemID != -1 )
	{
		bool bEquip = false;
		CItem* pItem = g_objHero.GetItem(m_nPickUpItemID);
		if (pItem && g_objHero.TryItem(pItem)
			&& (pItem->GetSort() == ITEMSORT_HELMET
			|| pItem->GetSort() == ITEMSORT_TREASURE 
			|| pItem->GetSort() == ITEMSORT_WEAPON_SINGLE_HAND|| pItem->GetSort() == ITEMSORT_WEAPON_DOUBLE_HAND
			|| pItem->GetSort() == ITEMSORT_RING 
			|| pItem->GetSort() == ITEMSORT_ARMOR
			|| pItem->GetSort() == ITEMSORT_NECKLACE 
			|| pItem->GetSort() == ITEMSORT_MOUNT))
		{
			g_objHero.UseItem(pItem->GetID());
			CDlgEquip::GetParent()->GetParent()->PostMessage( WM_MY_MESSAGE, ON_ICON_DROP, DLG_ALL ) ;						
			CDlgEquip::FlashEquip() ;
		}
	}
	CDialog::OnLButtonDown(nFlags, point);
}

void CDlgEquip::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	LPARAM lParam ;
	lParam = MAKELONG( point.x + m_Pnt.x, point.y + m_Pnt.y ) ;
	CDlgEquip::GetParent()->PostMessage(WM_MOUSEMOVE,nFlags,lParam);
	CDialog::OnMouseMove(nFlags, point);
}

⌨️ 快捷键说明

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