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

📄 heroenemy.cpp

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

// include head file(s) here
#include "hero.h"
#include "GameMsg.h"
#include "allmsg.h"
#include "GamePlayerset.h"
#include "GameDataSet.h"

// the operate interface of Enemy to hero

///////////////////////////////////////////////////////////////

BOOL CHero::AddEnemy(CEnemy* pEnemy)
{
	if(!pEnemy)
	{
		return false;
	}
	m_setEnemy.push_back(pEnemy);
	{
		::PostCmd(CMD_FLASHENEMYLIST);
		return true;
	}
}
///////////////////////////////////////////////////////////////

BOOL CHero::DelEnemy(OBJID id, BOOL bSendMsg )
{
	if(id == ID_NONE)
		return false;
	int nAmount = m_setEnemy.size();
	for(int i = 0; i < nAmount; i++)
	{
		CEnemy* pEnemy = m_setEnemy[i];
		if(pEnemy && pEnemy->GetID() == id)
		{
			if(bSendMsg)
			{
				CMsgFriend msgFriend;
				msgFriend.Create(_ENEMY_DEL, id, true, pEnemy->GetName());
				msgFriend.Send();
			}
			SAFE_DELETE(pEnemy);
			m_setEnemy.erase(m_setEnemy.begin()+i);
			::PostCmd(CMD_FLASHENEMYLIST);
			return true;
		}
	}
	return false;
}
///////////////////////////////////////////////////////////////
int  CHero::GetEnemyAmount()
{
		return m_setEnemy.size();
}

///////////////////////////////////////////////////////////////
CEnemy* CHero::GetEnemy(OBJID id)
{
	if(id == ID_NONE)
		return NULL;
	int nAmount = m_setEnemy.size();
	for(int i = 0; i < nAmount; i++)
	{
		CEnemy* pEnemy = m_setEnemy[i];
		if(pEnemy && pEnemy->GetID() == id)
		{
			return pEnemy;
		}
	}
	return NULL;
}
///////////////////////////////////////////////////////////////

CEnemy* CHero::GetEnemyByIndex(int nIndex)
{
	if(nIndex < 0)
		return NULL;

	int nAmount = m_setEnemy.size();
	if(nIndex >= nAmount)
		return NULL;

	return m_setEnemy[nIndex];
}
 
///////////////////////////////////////////////////////////////
void CHero::ClearEnemyList()
{
	int nAmount = m_setEnemy.size();
	for(int i = 0; i < nAmount; i++)
	{
		CEnemy* pEnemy = m_setEnemy[i];
		SAFE_DELETE(pEnemy);
	}
	m_setEnemy.clear();
}	

///////////////////////////////////////////////////////////////
CEnemy* CHero::GetEnemyByName(const char* pszName)
{
	if (!pszName)
		return NULL;

	int nAmount = this->GetEnemyAmount();
	for(int i = 0; i < nAmount; i++)
	{
		CEnemy* pEnemy = this->GetEnemyByIndex(i);
		if((pEnemy)&&(strcmp(pEnemy->GetName(), pszName)== 0 ))
			return pEnemy;
	}

	return NULL;
}
///////////////////////////////////////////////////////////////
void CHero::QueryEnemy	(OBJID id)
{
	if (m_bEnemyQueryBusy)
		return;

	// stary busy
	m_bEnemyQueryBusy = true;
	m_dwEnemyBeginQuery = ::TimeGet();
	m_idEnemyQuery = id;
	m_bEnemyQueryReturn = false;

	// send msg
	CMsgAction msg;
	if(msg.Create(this->GetID(), 0, 0, 0, actionQueryEnemyInfo, id))
		msg.Send();
}

///////////////////////////////////////////////////////////////
void CHero::ProcessEnemy()
{
	const DWORD dwTimeout = 8*1000;

	if(!m_bEnemyQueryBusy)
		return;

	if(m_bEnemyQueryReturn)
	{
		// is syndicatename ready?
		CEnemy* pEnemy = this->GetEnemy(m_idEnemyQuery);
		if(pEnemy)
		{
			if(strlen(pEnemy->GetSyndicateName()) != 0)
			{
				m_bEnemyQueryBusy = false;
				::PostCmd(CMD_QUERYENEMY_OK);
			}
		}

	}
	else if(::TimeGet() - m_dwEnemyBeginQuery > dwTimeout)
	{
		m_bEnemyQueryBusy = false;
		m_idEnemyQuery = ID_NONE;
		::PostCmd(CMD_QUERYENEMY_TIMEOUT);
	}
}

⌨️ 快捷键说明

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