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

📄 dlgenemy.cpp

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

#include "stdafx.h"
#include "myshell.h"
#include "DlgEnemy.h"

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

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

/////////////////////////////////////////////////////////////////////////////
// CDlgEnemy dialog


CDlgEnemy::CDlgEnemy(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgEnemy::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgEnemy)
	m_Pnt = CPoint( 0, 0);
	m_bShow = false ;
	m_dwLastShowTime = 0;
	m_fFrameStep = 0.0f ;
	m_nFrameMode = 0 ;
	m_nPntX = 0 ;
	m_nCurrentQueryIndex = -1 ;
	m_iShowMode = 0;
	m_nTsStatus = 0;
	//}}AFX_DATA_INIT
}


void CDlgEnemy::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgEnemy)
	DDX_Control(pDX, IDC_BTN_TEACHER, m_TeacherBtn);
	DDX_Control(pDX, IDC_BTN_DELSTUDENT, m_DelStuBtn);
	DDX_Control(pDX, IDC_ENEMY_BTN_TEACHER, m_TeacherListChk);
	DDX_Control(pDX, IDC_ENEMY_BTN_ENEMY, m_EnemyListChk);
	DDX_Control(pDX, IDC_ENEMY_BTN_FRIEND, m_FriendListChk);
	DDX_Control(pDX, IDC_ENEMY_BTN_ADD, m_AddBtn);
	DDX_Control(pDX, IDC_ENEMY_LST_DATA, m_EnemyLstData);
	DDX_Control(pDX, IDC_ENEMY_BTN_CLOSE, m_EnemyBtnClose);
	DDX_Control(pDX, IDC_BTN_HELP, m_BtnHelp);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgEnemy, CDialog)
	//{{AFX_MSG_MAP(CDlgEnemy)
	ON_WM_CTLCOLOR()
	ON_WM_MOVE()
	ON_BN_CLICKED(IDC_ENEMY_BTN_CLOSE, OnEnemyBtnClose)
	ON_BN_CLICKED(IDC_BTN_HELP, OnBtnHelp)
	ON_BN_CLICKED(IDC_ENEMY_BTN_FRIEND, OnEnemyBtnFriend)
	ON_BN_CLICKED(IDC_ENEMY_BTN_ADD, OnEnemyBtnAdd)
	ON_BN_CLICKED(IDC_ENEMY_BTN_ENEMY, OnEnemyBtnEnemy)
	ON_BN_CLICKED(IDC_ENEMY_BTN_TEACHER, OnEnemyBtnTeacher)
	ON_BN_CLICKED(IDC_BTN_TEACHER, OnBtnTeacher)
	ON_BN_CLICKED(IDC_BTN_DELSTUDENT, OnBtnDelstudent)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgEnemy message handlers

LRESULT CDlgEnemy::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	switch ( message )
	{
	case WM_ENABLE:
		m_bShow = wParam ;
		if ( wParam )
		{
			m_dwLastShowTime = TimeGet() ;
			m_nFrameMode = 1 ;
			m_nPntX = _SCR_WIDTH;
			DXPlaySound ( "Sound/Open.wav" ) ;
			m_EnemyListChk.SetCheckValue(0);
			m_TeacherListChk.SetCheckValue(0);
			m_FriendListChk.SetCheckValue(1);
			m_iShowMode = 0;
			m_AddBtn.EnableWindow();
			m_DlgEnmState.m_iShowMode = m_iShowMode;						
		}
		else
		{
			DXPlaySound ( "Sound/window_close.wav" ) ;
			if ( m_DlgEnmState.m_bShow )
				m_DlgEnmState.EnableWindow(false) ;
			if (m_DlgSchoolList.m_bShow)
				m_DlgSchoolList.EnableWindow(false) ;
		}
		break ;
	case WM_COMMAND:
		if ( wParam == 1 )
		{
			return true ;
		}
		else if ( wParam == 2 )
		{
			CDlgEnemy::OnEnemyBtnClose () ;			
			return true ;
		}
		break ;
	case LB_SETSEL:
		{
			if ( wParam == 0 )
			// Begin the listbox sel change
			{
				if(m_iShowMode == 0)
				{
					char strEnemyName[16] ;
					m_nCurrentQueryIndex = lParam ;
					m_EnemyLstData.GetText ( lParam, strEnemyName ) ;
					CFriend* pFriend = g_objHero.GetFriendByName ( strEnemyName ) ;
					if ( pFriend )
					{
						if(m_DlgSchoolList.m_bShow)
							m_DlgSchoolList.EnableWindow(false);
						g_objHero.QueryFriend ( pFriend->GetID() ) ;	
					}
				}
				else if (m_iShowMode == 1)
				{
					char strEnemyName[16] ;
					m_nCurrentQueryIndex = lParam ;
					m_EnemyLstData.GetText ( lParam, strEnemyName ) ;
					CEnemy* pEnemy = g_objHero.GetEnemyByName ( strEnemyName ) ;
					if ( pEnemy )
					{
						if(m_DlgSchoolList.m_bShow)
							m_DlgSchoolList.EnableWindow(false);						
						g_objHero.QueryEnemy ( pEnemy->GetID() ) ;	
					}
				}
				else if (m_iShowMode == 2)
				{
					char strStuName[16] ;
					m_nCurrentQueryIndex = lParam ;
					m_EnemyLstData.GetText(lParam,strStuName);
					CSchoolMember* pSchoolMember = g_objHero.GetSchoolMemberByName(strStuName);
					if (pSchoolMember)
					{
						if(m_DlgSchoolList.m_bShow)
							m_DlgSchoolList.EnableWindow(false);
						m_DlgEnmState.m_iShowMode = 2;
						m_DlgEnmState.EnableWindow(TRUE);
						m_DlgEnmState.SetStuInfo(strStuName);
						if (pSchoolMember->GetRelation()==RELATION_TEACHER)
							m_nTsStatus = 2; //sel teacher
						else
							m_nTsStatus = 3; //sel student
						CDlgEnemy::SetTeacherBtn();
					}
				}
			}
			// End the listbox sel change
			else if ( wParam == -1 )
			{
				if ( lParam != -1 )
				{
					if ( m_DlgEnmState.m_bShow )
						m_DlgEnmState.EnableWindow(false) ;
					if (m_DlgSchoolList.m_bShow)
					{
						m_DlgSchoolList.EnableWindow(false);
						m_nTsStatus = 4; //sel student
						CDlgEnemy::SetTeacherBtn();
					}
					if (m_iShowMode == 2) 
					{
						char strStuName[16] ;
						m_nCurrentQueryIndex = lParam ;
						m_EnemyLstData.GetText(lParam,strStuName);
						CSchoolMember* pSchoolMember = g_objHero.GetSchoolMemberByName(strStuName);
						if (pSchoolMember)
						{
							if (pSchoolMember->GetRelation()==RELATION_TEACHER)
								m_nTsStatus = 2; //sel teacher
							CDlgEnemy::SetTeacherBtn();
						}
					}
				}
			}
			else if (wParam == 1)
			{
				if (lParam != -1)
				{
					if (m_iShowMode == 0)
					{
						m_nCurrentQueryIndex = lParam ;
						CDlgEnemy::GetParent()->PostMessage(WM_MY_MESSAGE, ON_FRIEND_CHAT, lParam);			
					}
				}
			}
			else if (wParam == 2)
			{
				if (lParam != -1) 
				{
					if (m_iShowMode == 0)
					{
						m_nCurrentQueryIndex = lParam;
						char strName[16];
						m_EnemyLstData.GetText(m_nCurrentQueryIndex,strName);
						if (m_DlgSchoolList.m_bShow)
							m_DlgSchoolList.EnableWindow(false);
						if (m_DlgEnmState.m_bShow)
							m_DlgEnmState.EnableWindow(false);
						if (g_objGameMsg.GetLeaveWordAmountByName(strName) >0)
						{
							m_EnemyLstData.SetItemFlash(m_nCurrentQueryIndex,FALSE);
							CDlgEnemy::GetParent()->PostMessage(WM_MY_MESSAGE,ON_MSGSEND_VIEW,lParam);						
						}
						else
							CDlgEnemy::GetParent()->PostMessage(WM_MY_MESSAGE,ON_FRIEND_LEAVE,lParam);
					}
				}
			}
		}
		break ;
	}
	return CDialog::WindowProc(message, wParam, lParam);
}

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

BOOL CDlgEnemy::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CRect rect;
	CDlgEnemy::GetWindowRect(rect);
	m_fFrameStep = ( float ) (rect.Width()+100) / DLG_FRAME_AMOUNT ;

	// Init the button
	m_EnemyBtnClose.Init ( rect.left, rect.top, "Button540" ) ;
	m_BtnHelp.Init ( rect.left, rect.top, "Button4" ) ;

	m_DelStuBtn.Init(rect.left,rect.top,"Button179");
	m_DelStuBtn.EnableWindow(false);
	m_TeacherBtn.Init(rect.left,rect.top,"Button176");
	m_TeacherBtn.EnableWindow(false);

	m_AddBtn.Init ( rect.left, rect.top,"Button170");

	m_FriendListChk.Init(rect.left,rect.top,"Button174",2);
	m_EnemyListChk.Init(rect.left,rect.top,"Button173",2);
	m_TeacherListChk.Init(rect.left,rect.top,"Button175",2);
	m_FriendListChk.SetCheckValue(1);
	// Init the list
	if ( ! m_EnemyLstData.Init ( rect.left, rect.top, NULL, 2 ) )
		return false ;
	m_EnemyLstData.SetFontColor ( 0xffff00 ) ;
	m_EnemyLstData.SetParentCob ( this ) ;
	
	// Init the Enemy state dialog
	m_DlgEnmState.Create ( IDD_DIALOG_ENMSTATE, CDlgEnemy::GetParent () ) ;
	CRect Temprect ;
	m_DlgEnmState.GetWindowRect ( Temprect ) ;
	m_DlgEnmState.MoveWindow ( _SCR_WIDTH - rect.Width () -  Temprect.Width() -105,
							   450 -rect.Height(),
							   Temprect.Width (),
							   Temprect.Height () ) ;
	m_DlgEnmState.ShowWindow ( SW_SHOW);
	m_DlgEnmState.EnableWindow(false);
	
	m_DlgSchoolList.Create(IDD_DIALOG_SCHOOLLIST,CDlgEnemy::GetParent());
	m_DlgSchoolList.GetWindowRect(Temprect);
	m_DlgSchoolList.MoveWindow( _SCR_WIDTH - rect.Width() - Temprect.Width() - 105,
							  450 - rect.Height(),
							  Temprect.Width(),
							  Temprect.Height());
	m_DlgSchoolList.ShowWindow(SW_SHOW);
	m_DlgSchoolList.EnableWindow(false);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

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

void CDlgEnemy::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;
				CDlgEnemy::GetWindowRect(rect);
				m_Pnt.x = _SCR_WIDTH-rect.Width() -100;
				m_nFrameMode = 0 ;
			}
		}
		// Show the owner	
		CAni* ShowAni = g_objGameDataSet.GetDataAni ( ( char * )g_strControlAni,
													  "Dialog46",
													  EXIGENCE_IMMEDIATE ) ;
		if ( ShowAni != NULL )
		{
			ShowAni->Show ( m_iShowMode,
							m_Pnt.x,
							m_Pnt.y ) ;
		}
		else
			return ;

		// Show the list
		m_EnemyLstData.Show ( m_Pnt.x, m_Pnt.y ) ;

		// Show the button
		m_EnemyBtnClose.Show ( m_Pnt.x, m_Pnt.y ) ;
		m_BtnHelp.Show ( m_Pnt.x, m_Pnt.y ) ;
		if(m_iShowMode==0)
			m_AddBtn.Show ( m_Pnt.x, m_Pnt.y );
		else if (m_iShowMode == 2)
		{
			if (m_TeacherBtn.IsWindowEnabled())
			{
				m_TeacherBtn.Show(m_Pnt.x, m_Pnt.y);
			}
		}
		if (m_DelStuBtn.IsWindowEnabled())
		{
			m_DelStuBtn.Show(m_Pnt.x,m_Pnt.y);
		}
		m_FriendListChk.Show (m_Pnt.x, m_Pnt.y);
		m_EnemyListChk.Show (m_Pnt.x, m_Pnt.y);
		m_TeacherListChk.Show (m_Pnt.x, m_Pnt.y);
		// Show the Enemy state dialog
		if ( m_DlgEnmState.m_bShow )
			m_DlgEnmState.Show() ;
		if ( m_DlgSchoolList.m_bShow)
			m_DlgSchoolList.Show();
	}
}

void CDlgEnemy::OnEnemyBtnClose() 
{
	DXPlaySound("Sound/window_close.wav");
	CDlgEnemy::EnableWindow(false) ;
}

void CDlgEnemy::OnBtnHelp() 
{
	CDlgEnemy::GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_HELPDLG_SHOW, DLG_FRIEND ) ;		
}

void CDlgEnemy::SetEnemyList()
{
	m_DelStuBtn.ChangeImage("Button171");
	m_DelStuBtn.EnableWindow(true);
	
	CRect rect;
	CDlgEnemy::GetWindowRect(rect);
	CRect rectB;
	m_DelStuBtn.GetWindowRect(rectB);
	m_DelStuBtn.MoveWindow(70,295,rectB.Width(),rectB.Height(),false);
	m_DelStuBtn.ReInit(rect.left, rect.top );
	
	m_EnemyLstData.ResetContent ( ) ;
	int nAmount = g_objHero.GetEnemyAmount () ;

	// Test the online Enemy num
	int nOnline = 0 ;
	for (int i = 0; i < nAmount; i++)
	{
		CEnemy* pEnemy = g_objHero.GetEnemyByIndex ( i ) ;
		if ( pEnemy && pEnemy->IsOnline () )
			nOnline++ ;
	}
	int nOffLine = nOnline ;
	
	for ( i = 0; i < nAmount; i++)
	{	
		CEnemy* pEnemy	= g_objHero.GetEnemyByIndex(i);
		if (pEnemy)
		{
			char strListData[64] ;
			strcpy ( strListData, pEnemy->GetName () ) ;
			if ( pEnemy->IsOnline () ) 
			{
				m_EnemyLstData.InsertString ( 0, strListData ) ;
				m_EnemyLstData.SetListRealIndex ( nOnline - 1, 1 ) ;
				nOnline-- ;
			}
			else
			{
				m_EnemyLstData.AddString(strListData);
				m_EnemyLstData.SetListRealIndex ( nOffLine, -1 ) ;
				nOffLine++ ;
			}
		}
	}	
}


void CDlgEnemy::SetEnemyState()
{
	char strEnemyName[16] ;
	m_EnemyLstData.GetText ( m_nCurrentQueryIndex, strEnemyName ) ;
	if ( strEnemyName != NULL )
	{
		if(m_DlgSchoolList.m_bShow)
			m_DlgSchoolList.EnableWindow(false);
		if ( !m_DlgEnmState.m_bShow )
			m_DlgEnmState.EnableWindow( ) ;
		m_DlgEnmState.SetEnemyState ( strEnemyName ,m_iShowMode) ;
	}
}

⌨️ 快捷键说明

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