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

📄 dlgmonster.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// DlgMonster.cpp : implementation file
//

#include "stdafx.h"
#include "myshell.h"
#include "DlgMonster.h"

#include "Hero.h"
#include "GameMsg.h"
#include "3dgameMap.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgMonster dialog


CDlgMonster::CDlgMonster(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgMonster::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgMonster)
	m_Pnt = CPoint(0,0);
	m_bShow = false;
	m_dwLastShowTime = 0;
	m_fFrameStep = 0.0f;
	m_nFrameMode = 0;
	m_nPntX = 0;
	m_iCurMonster = 0 ;
	m_CurMonsterID = 0;
	//}}AFX_DATA_INIT
}


void CDlgMonster::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgMonster)
	DDX_Control(pDX, IDC_BTN_RENAMEOK, m_BtnRenameOk);
	DDX_Control(pDX, IDC_BTN_RENAMECANCEL, m_BtnRenameCancel);
	DDX_Control(pDX, IDC_EDIT_NAME, m_EditName);
	DDX_Control(pDX, IDC_BTN_CALLOUT, m_ChkCallOut);
	DDX_Control(pDX, IDC_EDIT_NAME4, m_EditMonster4);
	DDX_Control(pDX, IDC_EDIT_NAME3, m_EditMonster3);
	DDX_Control(pDX, IDC_EDIT_NAME2, m_EditMonster2);
	DDX_Control(pDX, IDC_EDIT_NAME1, m_EditMonster1);
	DDX_Control(pDX, IDC_BTN_RIDEON, m_BtnRename);
	DDX_Control(pDX, IDC_BTN_MAGIC, m_MagicBtn);
	DDX_Control(pDX, IDC_MONSTER_POTENTIAL, m_StaPotential);
	DDX_Control(pDX, IDC_MONSTER_GROW, m_StaGrow);
	DDX_Control(pDX, IDC_BTN_CALL, m_CallChk);
	DDX_Control(pDX, IDC_MONSTER_SMART, m_StaSmart);
	DDX_Control(pDX, IDC_MONSTER_MASTER, m_StaMaster);
	DDX_Control(pDX, IDC_MONSTER_MAGICDEF, m_StaMagicDef);
	DDX_Control(pDX, IDC_MONSTER_MAGIC, m_StaMagic);
	DDX_Control(pDX, IDC_MONSTER_LEVEL, m_StaLevel);
	DDX_Control(pDX, IDC_MONSTER_HP, m_StaHp);
	DDX_Control(pDX, IDC_MONSTER_FIGHTDEF, m_StaFightDef);
	DDX_Control(pDX, IDC_MONSTER_FIGHT, m_StaFight);
	DDX_Control(pDX, IDC_MONSTER_EXP, m_StaExp);
	DDX_Control(pDX, IDC_IMG_MONSTER, m_ImgMonster);
	DDX_Control(pDX, IDC_GRI_EGGS, m_EggsGri);
	DDX_Control(pDX, IDC_BTN_CLOSE, m_CloseBtn);
	DDX_Control(pDX, IDC_BTN_DROP, m_DropBtn);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgMonster, CDialog)
	//{{AFX_MSG_MAP(CDlgMonster)
	ON_BN_CLICKED(IDC_BTN_CALL, OnBtnCall)
	ON_WM_CTLCOLOR()
	ON_WM_MOVE()
	ON_BN_CLICKED(IDC_BTN_CLOSE, OnBtnClose)
	ON_BN_CLICKED(IDC_BTN_DROP, OnBtnDrop)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_RBUTTONDOWN()
	ON_BN_CLICKED(IDC_BTN_MAGIC, OnBtnMagic)
	ON_BN_CLICKED(IDC_BTN_RIDEON, OnBtnRename)
	ON_BN_CLICKED(IDC_BTN_CALLOUT, OnBtnCallout)
	ON_BN_CLICKED(IDC_BTN_RENAMECANCEL, OnBtnRenamecancel)
	ON_BN_CLICKED(IDC_BTN_RENAMEOK, OnBtnRenameok)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgMonster message handlers


void CDlgMonster::OnBtnCall() 
{
	// TODO: Add your control notification handler code here
	DXPlaySound ( "Sound/Dlg_ok.wav" ) ;							
	if (g_objHero.GetItemAmount(PACKAGE_PET)<=0)
	{
		m_CallChk.SetCheckValue(0);
		return;
	}
	CItem *pMonster = g_objHero.GetItemByIndex(m_iCurMonster,PACKAGE_PET);
	if (pMonster)
	{
		CDlgMonster::ShowHead (pMonster->GetID ());
	}
}

void  CDlgMonster::ShowHead (OBJID idMonster)
{
	int nAmount = m_IdCurCallMonster.size ();
	BOOL bShow = TRUE;
	for(int i= nAmount-1;i>=0;i--)
	{
		if (m_IdCurCallMonster[i] == idMonster)
		{
			m_IdCurCallMonster.erase (m_IdCurCallMonster.begin ()+i);
			bShow = FALSE;
		}
	}
	if (bShow)
		m_IdCurCallMonster.push_back (idMonster);
	CDlgMonster::GetParent()->PostMessage (WM_MY_MESSAGE,ON_MONSTERHEAD_SET, idMonster);
}

LRESULT CDlgMonster::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	switch ( message )
	{
	case WM_ENABLE:
		{
			m_bShow = wParam ;
			if ( wParam == false )
			{
				DXPlaySound ( "Sound/window_close.wav" ) ;
				if(m_EditName.IsWindowEnabled())
				{
					m_EditName.EnableWindow(false);
					m_BtnRenameOk.EnableWindow(false);
					m_BtnRenameCancel.EnableWindow(false);
				}
				
				if(m_DlgMonsterSkill.m_bShow)
					m_DlgMonsterSkill.EnableWindow (false);
			}
			else
			{
				DXPlaySound ( "Sound/Open.wav" ) ;							
				if(m_EditName.IsWindowEnabled())
				{
					m_EditName.EnableWindow(false);
					m_BtnRenameOk.EnableWindow(false);
					m_BtnRenameCancel.EnableWindow(false);
				}
				CDlgMonster::SetEggGrid();
				CDlgMonster::SetMonsterList();
								
				m_dwLastShowTime = TimeGet() ;
				m_nFrameMode = 1 ;
				m_nPntX = _SCR_WIDTH ;
			}
		}
		break ;
	case WM_COMMAND:
		{
			if ( wParam == 1 )
				return true ;
			else if ( wParam == 2 ) 
			{
				CDlgMonster::OnBtnClose () ;
				return true ;
			}
		}
		break ;

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

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

BOOL CDlgMonster::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CRect rect;
	CDlgMonster::GetWindowRect(rect);
	m_fFrameStep = ( float ) (rect.Width()+100) / DLG_FRAME_AMOUNT ;
	
	//init button
	m_CloseBtn.Init(rect.left,rect.top,"Button540");
	
	m_CallChk.Init(rect.left,rect.top,"Button907",2);
	m_ChkCallOut.Init(rect.left,rect.top,"Button901");
	m_MagicBtn.Init(rect.left,rect.top,"Button902");
	m_DropBtn.Init(rect.left,rect.top,"Button903");
	m_BtnRename.Init(rect.left,rect.top,"Button904");
	
//	m_BtnEvolve.Init(rect.left, rect.top,"Button905");
	//init skillgri and eggsskill
	m_ImgMonster.Init(rect.left,rect.top,NULL,PETFACE_IMAGE);
	
	m_EggsGri.Init(rect.left,rect.top,1,6,DLG_MONSTEREGG);
	m_EggsGri.ReSetGridSpace(4,1);
	//init static
	m_EditMonster1.Init(rect.left,rect.top);
	m_EditMonster1.SetLimitText (_MAX_NAMESIZE -1);
	m_EditMonster2.Init(rect.left,rect.top);
	m_EditMonster2.SetLimitText (_MAX_NAMESIZE -1);
	m_EditMonster3.Init(rect.left,rect.top); 
	m_EditMonster3.SetLimitText (_MAX_NAMESIZE -1);
	m_EditMonster4.Init(rect.left,rect.top);
	m_EditMonster4.SetLimitText (_MAX_NAMESIZE -1);
	
	m_StaHp.Init(rect.left,rect.top);
	m_StaPotential.Init(rect.left,rect.top);
	m_StaGrow.Init(rect.left,rect.top);
	m_StaExp.Init(rect.left,rect.top);
	m_StaMaster.Init(rect.left,rect.top);
	m_StaSmart.Init(rect.left,rect.top);
	m_StaLevel.Init(rect.left,rect.top);
	m_StaMagic.Init(rect.left,rect.top);
	m_StaMagicDef.Init(rect.left,rect.top);
	m_StaFight.Init(rect.left,rect.top);
	m_StaFightDef.Init(rect.left,rect.top);
		
//	m_BtnAtkStatus1.Init (rect.left,rect.top,"Button574");
	m_EditName.Init(rect.left, rect.top);
	m_EditName.SetLimitText (_MAX_NAMESIZE -1);
	m_BtnRenameOk.Init(rect.left, rect.top, "Button150");
	m_BtnRenameCancel.Init(rect.left, rect.top, "Button151");
	
	m_DlgMonsterSkill.Create(IDD_DIALOG_MONSTERSKILL,this->GetParent());
	CRect Mrect;
	m_DlgMonsterSkill.GetWindowRect(Mrect);
	m_DlgMonsterSkill.MoveWindow(_SCR_WIDTH - rect.Width() - Mrect.Width () -100,
		450 - rect.Height () ,
		Mrect.Width (),Mrect.Height (),false);
	m_DlgMonsterSkill.ShowWindow (SW_NORMAL);
	m_DlgMonsterSkill.EnableWindow (false);

	CRect prgRect;	
	m_EditMonster1.m_EditRect.GetWindowRect(prgRect);
	m_PrgMonstName[0] = CRect ( prgRect.left - rect.left -2,
		prgRect.top - rect.top - 6,
		prgRect.right - rect.left +3,
		prgRect.bottom - rect.top - 4) ;

	m_EditMonster2.m_EditRect.GetWindowRect(prgRect);
	m_PrgMonstName[1] = CRect ( prgRect.left - rect.left -2,
		prgRect.top - rect.top - 6,
		prgRect.right - rect.left +3,
		prgRect.bottom - rect.top -4) ;
	
	m_EditMonster3.m_EditRect.GetWindowRect(prgRect);
	m_PrgMonstName[2] = CRect ( prgRect.left - rect.left -2,
		prgRect.top - rect.top - 6,
		prgRect.right - rect.left +3,
		prgRect.bottom - rect.top -4) ;

	m_EditMonster4.m_EditRect.GetWindowRect(prgRect);
	m_PrgMonstName[3] = CRect ( prgRect.left - rect.left -2,
		prgRect.top - rect.top - 6,
		prgRect.right - rect.left +3,
		prgRect.bottom - rect.top -4) ;
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgMonster::OnMove(int x, int y) 
{
	CDialog::OnMove(x, y);
	m_Pnt.x=x;
	m_Pnt.y=y;
	// TODO: Add your message handler code here
	
}

void CDlgMonster::Show()
{
	if(m_bShow)
	{
		if ( m_nFrameMode != 0 )
		{
			if ( TimeGet() - m_dwLastShowTime <= 300 )
			{	
				m_Pnt.x =m_nPntX - ( TimeGet() - m_dwLastShowTime ) / 15 * m_fFrameStep;
			}
			else
			{
				CRect rect;
				CDlgMonster::GetWindowRect(rect);
				m_Pnt.x = _SCR_WIDTH-rect.Width() -100;
				m_nFrameMode = 0 ;
			}
		}

		CAni* ShowAni = g_objGameDataSet.GetDataAni ( ( char * )g_strControlAni,
														  "Dialog9",
														  EXIGENCE_IMMEDIATE ) ;
		if ( ShowAni != NULL )
		{
			ShowAni->Show( 0, m_Pnt.x, m_Pnt.y ) ;
			if (m_EditName.IsWindowEnabled()) 
				ShowAni->Show(1 , m_Pnt.x + 136 , m_Pnt.y + 45);
		}
		else
			return ;
			
		if(m_EditName.IsWindowEnabled())
		{
			m_EditName.Show(m_Pnt.x, m_Pnt.y);
			m_BtnRenameOk.Show(m_Pnt.x, m_Pnt.y );
			m_BtnRenameCancel.Show(m_Pnt.x, m_Pnt.y);
		}
		else
		{
			if (g_objHero.GetItemAmount(PACKAGE_PET)>0)
			{
				CMyBitmap::ShowBlock(m_Pnt.x + m_PrgMonstName[m_iCurMonster].left,
					m_Pnt.y + m_PrgMonstName[m_iCurMonster].top,
					m_Pnt.x + m_PrgMonstName[m_iCurMonster].right,
					m_Pnt.y + m_PrgMonstName[m_iCurMonster].bottom,
					0XFF0000FF);
			}
			//Show static
			m_EditMonster4.Show (m_Pnt.x,m_Pnt.y);
			m_EditMonster3.Show(m_Pnt.x,m_Pnt.y);		
			m_EditMonster1.Show(m_Pnt.x,m_Pnt.y);
			m_EditMonster2.Show(m_Pnt.x,m_Pnt.y);			
		}
		//Show Button
		m_CloseBtn.Show(m_Pnt.x,m_Pnt.y);
		
		if(m_MagicBtn.IsWindowEnabled ())
			m_MagicBtn.Show(m_Pnt.x,m_Pnt.y);
		if(m_CallChk.IsWindowEnabled ())
			m_CallChk.Show(m_Pnt.x,m_Pnt.y);
		if (m_BtnRename.IsWindowEnabled ()) 
			m_BtnRename.Show(m_Pnt.x, m_Pnt.y);
		if (m_DropBtn.IsWindowEnabled ())	
			m_DropBtn.Show(m_Pnt.x,m_Pnt.y);

		if (m_ChkCallOut.IsWindowEnabled())
			m_ChkCallOut.Show(m_Pnt.x,m_Pnt.y);
		//Show image
		m_ImgMonster.Show(m_Pnt.x,m_Pnt.y);
		
		// show selected monster
		m_StaHp.Show(m_Pnt.x,m_Pnt.y);
		m_StaPotential.Show(m_Pnt.x, m_Pnt.y);
		m_StaExp.Show(m_Pnt.x,m_Pnt.y);		
		m_StaLevel.Show(m_Pnt.x,m_Pnt.y);		
		m_StaMaster.Show(m_Pnt.x,m_Pnt.y);		
		m_StaSmart.Show(m_Pnt.x,m_Pnt.y);
		m_StaMagic.Show(m_Pnt.x,m_Pnt.y);		
		m_StaMagicDef.Show(m_Pnt.x,m_Pnt.y);		
		m_StaFight.Show(m_Pnt.x,m_Pnt.y);		
		m_StaFightDef.Show(m_Pnt.x,m_Pnt.y);	
		m_StaGrow.Show(m_Pnt.x, m_Pnt.y);

		if (m_DlgMonsterSkill.m_bShow)
			m_DlgMonsterSkill.Show ();
		
		//Show Gri
		m_EggsGri.Show(m_Pnt.x,m_Pnt.y);
	}
}
 

void CDlgMonster::OnBtnClose() 
{
	// TODO: Add your control notification handler code here
	DXPlaySound( "Sound/window_close.wav" );
	CDlgMonster::EnableWindow(false);
}

void CDlgMonster::SetCurMonster(int mode)
{
	CItem *pMonster = g_objHero.GetItemByIndex(mode,PACKAGE_PET);
	if (pMonster == NULL)
	{
		m_iCurMonster = 0;
		return;
	}

	m_CallChk.EnableWindow();
	m_DropBtn.EnableWindow();
	m_ChkCallOut.EnableWindow();
	
	if (g_objHero.GetPetByItemID (pMonster->GetID()) != NULL) 
	{
		MoveButtons(true);
		m_ChkCallOut.ChangeImage("Button908");
	}
	else
	{
		m_ChkCallOut.ChangeImage("Button901");
		MoveButtons (false);
	}
	char pText[64];

	m_CurMonsterID = pMonster->GetID();

	m_ImgMonster.RemoveImage();
	m_BtnRename.EnableWindow();
	char strName[32] ="";
	
	//等级
	itoa(pMonster->GetAmountLimit(),pText,10);
	m_StaLevel.SetWindowText(pText);
		
	//忠诚
	itoa(pMonster->GetAmount(),pText,10);
	m_StaMaster.SetWindowText(pText);
		

⌨️ 快捷键说明

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