98 lines
2.8 KiB
C
98 lines
2.8 KiB
C
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
/***************************************************************/
|
|||
|
|
/* 法师的火,法师施放火墙术的时候,在地上释放出一5个火团
|
|||
|
|
/* 火团有持续时间,另外一个人在这个点释放了火以后,这团火就归属为另外一个人了
|
|||
|
|
/***************************************************************/
|
|||
|
|
|
|||
|
|
class CFire:
|
|||
|
|
public CEntity
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
typedef CEntity Inherited;
|
|||
|
|
|
|||
|
|
static int GETTYPE() {return enFire;}
|
|||
|
|
|
|||
|
|
//初始化
|
|||
|
|
bool Init(void * data, size_t size);
|
|||
|
|
|
|||
|
|
//删除的一些内存消耗操作
|
|||
|
|
void Destroy(); //销毁一个实体
|
|||
|
|
|
|||
|
|
//执行逻辑循环
|
|||
|
|
virtual VOID LogicRun(TICKCOUNT nCurrentTime);
|
|||
|
|
|
|||
|
|
inline INT_PTR GetPropertySize() const {return sizeof(CFireProperty) -sizeof(CPropertySet);}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//获取属性集
|
|||
|
|
virtual CPropertySet * GetPropertyPtr() {return &m_property ;}
|
|||
|
|
|
|||
|
|
virtual const CPropertySet* GetPropertyPtr() const {return &m_property ;}
|
|||
|
|
|
|||
|
|
virtual int GetPropertySetTotalSize() const{ return sizeof(m_property); }
|
|||
|
|
|
|||
|
|
//设置过期的时间,从当前往后面多少毫秒
|
|||
|
|
void SetExpireTime(unsigned int nMiSecond);
|
|||
|
|
|
|||
|
|
//设置下火的主人的handle
|
|||
|
|
void SetMasterHandle(EntityHandle hd)
|
|||
|
|
{
|
|||
|
|
m_ownerHandle =hd;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 设置攻击的参数
|
|||
|
|
* Param float fRate: 百分比
|
|||
|
|
* Param int nAddValue: 附加的数值
|
|||
|
|
* @Return void:
|
|||
|
|
*/
|
|||
|
|
inline void SetAttackParam( int nRate, int nAddValue)
|
|||
|
|
{
|
|||
|
|
m_nAttackRate = nRate;
|
|||
|
|
m_nAttackValueAdd =nAddValue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 创建一团火
|
|||
|
|
* Param CScene * pScene:场景的指针
|
|||
|
|
* Param int nPosX: 位置x
|
|||
|
|
* Param int nPosY: 位置y
|
|||
|
|
* Param CCreature * pMaster:主人的指针
|
|||
|
|
* Param int nModelId: 模型的id
|
|||
|
|
* Param unsigned int nTime: 火的存活时间,单位ms
|
|||
|
|
* Param int nAttackRate: 攻击的附加的比例
|
|||
|
|
* Param int nAttackValue: 攻击的输出
|
|||
|
|
* @Return CFire *: 返回指针
|
|||
|
|
*/
|
|||
|
|
static CFire * CreateFire( CScene *pScene, int nPosX,int nPosY,CCreature *pMaster,int nModelId,unsigned int nTime,int nAttackRate,int nAttackValue);
|
|||
|
|
|
|||
|
|
//获得主人的指针
|
|||
|
|
inline CAnimal *GetMasterPtr();
|
|||
|
|
|
|||
|
|
//当实体碰撞了火
|
|||
|
|
void OnCollideFire(CAnimal *pAnimal);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
void OnTimeDamage(CAnimal *pOwner); //定时伤害
|
|||
|
|
|
|||
|
|
//计算火墙的输出
|
|||
|
|
void OnFireDamage(CAnimal * pMaster ,CAnimal *pAnimal);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
CFireProperty m_property; //属性集合
|
|||
|
|
|
|||
|
|
TICKCOUNT m_expireTime; //过期的时间,低于这个过期时间,这个箱子就要删除
|
|||
|
|
CTimer<3000> m_attackTimer; //每3秒烧一次
|
|||
|
|
|
|||
|
|
//TICKCOUNT m_attackTime; //上次的攻击时间
|
|||
|
|
EntityHandle m_ownerHandle; //所属人的handle
|
|||
|
|
|
|||
|
|
//法师的输出的 m_fAttackRate * 魔法攻击 + 附加数值
|
|||
|
|
int m_nAttackRate; //攻击的输出的百分比,万分之1
|
|||
|
|
int m_nAttackValueAdd; //攻击的附加数值
|
|||
|
|
};
|