76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#pragma once
|
||
|
||
/************************************************************************/
|
||
/*
|
||
/* 实体特效子系统
|
||
/*
|
||
/************************************************************************/
|
||
|
||
//实体的特效
|
||
struct CEntityEffect
|
||
{
|
||
TICKCOUNT nExpiredTick; //过期时间
|
||
WORD wEffectID; //特效的类型
|
||
BYTE bEffectType; //特效的类型
|
||
BYTE bReServer;
|
||
};
|
||
|
||
class CEffectSystem:
|
||
public CEntitySubSystem<enEffectSystemID,CEffectSystem,CAnimal>
|
||
{
|
||
|
||
public:
|
||
/*
|
||
* Comments: 添加一个特效
|
||
* Param INT_PTR nType: 特效的类型
|
||
* Param INT_PTR nId:特效的id
|
||
* Param INT_PTR nDurTime:特效的持续时间,如果小于0,表示无限时间
|
||
* @Return void:
|
||
*/
|
||
void AddEffect(INT_PTR nType,INT_PTR nId,INT_PTR nDurTime);
|
||
|
||
|
||
/*
|
||
* Comments:删除特效
|
||
* Param INT_PTR nType:特效的类型
|
||
* Param INT_PTR nId:特效的ID
|
||
* @Return bool:成功删除返回true,否则返回false
|
||
*/
|
||
INT_PTR DelEffect(INT_PTR nType,INT_PTR nId);
|
||
|
||
|
||
/*
|
||
* Comments: 删除所有的特效
|
||
* Param bool nNeedBroadCast: 是否需要广播
|
||
* @Return INT_PTR:返回删除的个数
|
||
*/
|
||
INT_PTR DelAllEffect(bool nNeedBroadCast);
|
||
|
||
|
||
//定时检测
|
||
VOID OnTimeCheck(TICKCOUNT nTick);
|
||
|
||
//追加特效的数据
|
||
void AppendEffectData(CDataPacket &pack);
|
||
|
||
void Destroy()
|
||
{
|
||
DelAllEffect(false);
|
||
}
|
||
|
||
/*
|
||
* Comments:是否存在一个特效
|
||
* Param int nEffectType:特效的类型
|
||
* Param int nEffectId:特效的id
|
||
* @Return bool:存在返回true,否则返回false
|
||
*/
|
||
bool IsExist(int nEffectType ,int nEffectId);
|
||
|
||
private:
|
||
//删除玩家特效的回调
|
||
void OnDeleteEffect(const CEntityEffect * pEffect);
|
||
|
||
private:
|
||
CList<CEntityEffect *> m_effects; //实体的特效
|
||
};
|