rolefight.cpp

来自「网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志」· C++ 代码 · 共 68 行

CPP
68
字号
// RoleFight.cpp: implementation of the CRoleFight class.
//
//////////////////////////////////////////////////////////////////////

#include "common.h"
#include "define.h"
#include "RoleFight.h"
#include "Agent.h"
#include "AllMsg.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CRoleFight::CRoleFight()
{

}

CRoleFight::~CRoleFight()
{

}

bool CRoleFight::Create(CAgent *pOwner)
{
	m_pOwner	= pOwner;
	m_tAttackDelay.SetInterval(ATTACK_DELAY_MS);

	return true;
}

void CRoleFight::OnTimer()
{
	if(m_pTarget && QueryTime()->IsTimeOut())
	{
		if(m_pOwner->GetDistance(m_pTarget->GetPosX(), m_pTarget->GetPosY()) <= m_pOwner->GetAttackRange(m_pTarget->GetSizeAdd()))
		{
			if(m_tAttackDelay.ToNextTime())
			{
				CMsgInteract	msg;
				IF_OK(msg.Create(INTERACT_ATTACK, m_pOwner->GetID(), m_pTarget->GetID(), m_pOwner->GetPosX(), m_pOwner->GetPosY()))
					m_pOwner->SendMsg(&msg);
			}
		}
		else
		{
			m_pTarget.Clear();
		}
	}
}

bool CRoleFight::Attack(IRole *pRole)
{
	CHECKF(pRole);
	CHECKF(m_pOwner->GetDistance(pRole->GetPosX(), pRole->GetPosY()) <= m_pOwner->GetAttackRange(pRole->GetSizeAdd()));

	m_pTarget	= pRole;

	// msg
	CMsgInteract	msg;
	IF_OK(msg.Create(INTERACT_ATTACK, m_pOwner->GetID(), m_pTarget->GetID(), m_pOwner->GetPosX(), m_pOwner->GetPosY()))
		m_pOwner->SendMsg(&msg);

	m_tAttackDelay.Update();
	return true;
}

⌨️ 快捷键说明

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