141 lines
3.1 KiB
C
141 lines
3.1 KiB
C
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
/***************************************************************/
|
|||
|
|
/* 英雄的类,玩家的宠物,实际存在的宠物
|
|||
|
|
/***************************************************************/
|
|||
|
|
|
|||
|
|
class CHero:
|
|||
|
|
public CAdvanceAnimal
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
typedef CAdvanceAnimal Inherited;
|
|||
|
|
|
|||
|
|
static int GETTYPE() {return enHero;}
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
const static int Hero_BATTLE_STATUE_STAY =1; //呆在原地
|
|||
|
|
const static int Hero_BATTLE_STATUE_FOLLOW =2; //跟随
|
|||
|
|
|
|||
|
|
CHero();
|
|||
|
|
//初始化
|
|||
|
|
bool Init(void * data, size_t size)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
return Inherited::Init(data,size);
|
|||
|
|
}
|
|||
|
|
//删除的一些内存消耗操作
|
|||
|
|
inline void Destroy()
|
|||
|
|
{
|
|||
|
|
Inherited::Destroy();
|
|||
|
|
}
|
|||
|
|
//处理LogicRun,实现对脚本的内存定时回收
|
|||
|
|
void LogicRun(TICKCOUNT nCurrentTime);
|
|||
|
|
|
|||
|
|
//处理实体消息
|
|||
|
|
void ProcessEntityMsg(const CEntityMsg &msg);
|
|||
|
|
|
|||
|
|
//获取属性集的大小
|
|||
|
|
inline INT_PTR GetPropertySize() const
|
|||
|
|
{
|
|||
|
|
return sizeof(CHeroProperty) - sizeof(CPropertySet);
|
|||
|
|
}
|
|||
|
|
//获取属性集的指针
|
|||
|
|
virtual CPropertySet * GetPropertyPtr() {return &m_property ;}
|
|||
|
|
virtual const CPropertySet * GetPropertyPtr() const {return &m_property ;}
|
|||
|
|
|
|||
|
|
virtual int GetPropertySetTotalSize() const{return sizeof(m_property);}
|
|||
|
|
|
|||
|
|
//获取怪物更新的mask
|
|||
|
|
inline CUpdateMask * GetBroadCastMask() {return s_pHeroMask;}
|
|||
|
|
|
|||
|
|
/******* 静态函数集 ********/
|
|||
|
|
static void InitHeroBroadcastmask();
|
|||
|
|
|
|||
|
|
//删除mask
|
|||
|
|
static void DestroyHeroBroadcastMask()
|
|||
|
|
{
|
|||
|
|
SafeDelete(CHero::s_pHeroMask);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//设置宠物的主人
|
|||
|
|
inline void SetMaster(CActor *pActor)
|
|||
|
|
{
|
|||
|
|
m_pMaster =pActor;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//设置宠物的ID
|
|||
|
|
//inline void SetHeroId(int nHeroId) {m_nId =nHeroId; }
|
|||
|
|
|
|||
|
|
|
|||
|
|
//获取宠物的主人
|
|||
|
|
inline CActor * GetMaster(){return m_pMaster;}
|
|||
|
|
|
|||
|
|
//获取宠物的id
|
|||
|
|
//inline INT_PTR GetHeroId(){ return m_nId;}
|
|||
|
|
|
|||
|
|
virtual void OnEntityDeath(); //死亡
|
|||
|
|
|
|||
|
|
//获取宠物的指针
|
|||
|
|
//获取宠物的指针
|
|||
|
|
const CHeroSystem::HERODATA * GetHeroPtr();
|
|||
|
|
|
|||
|
|
void InitAi();
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//宠物增加经验,杀一个怪增加一点经验,满了就升级
|
|||
|
|
void AddExp(int nValue);
|
|||
|
|
|
|||
|
|
//设置当前的
|
|||
|
|
void SetCurrentExp(unsigned int nValue);
|
|||
|
|
|
|||
|
|
//设置颜色
|
|||
|
|
void SetColor(unsigned int color);
|
|||
|
|
|
|||
|
|
//获取颜色
|
|||
|
|
unsigned int GetColor (){return m_nColor;}
|
|||
|
|
|
|||
|
|
//设置战斗的状态
|
|||
|
|
void SetBattleStatus (int nStatus);
|
|||
|
|
|
|||
|
|
//获取战斗状态
|
|||
|
|
inline int GetBattleStatus() {return m_nBattleStatus; }
|
|||
|
|
|
|||
|
|
//设置宝宝的等级
|
|||
|
|
void SetLevel(unsigned int nLevel)
|
|||
|
|
{
|
|||
|
|
Inherited::SetLevel(nLevel);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
virtual void OnLevelUp(int nUpdateVal);
|
|||
|
|
|
|||
|
|
inline bool SetSocialMask(INT_PTR nMaskID,bool flag)
|
|||
|
|
{
|
|||
|
|
unsigned int nMask = GetProperty<unsigned int >(PROP_ACTOR_SOCIALMASK);
|
|||
|
|
if(flag)
|
|||
|
|
{
|
|||
|
|
nMask |= (1<< nMaskID);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
nMask &= ~( 1<< nMaskID ); //取反
|
|||
|
|
}
|
|||
|
|
SetProperty<unsigned int >(PROP_ACTOR_SOCIALMASK,nMask );
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
protected:
|
|||
|
|
CHeroProperty m_property;
|
|||
|
|
static CUpdateMask *s_pHeroMask; //怪物的属性的mask
|
|||
|
|
|
|||
|
|
CActor * m_pMaster; //宠物的主人的指针
|
|||
|
|
//int m_nId; //宠物的ID
|
|||
|
|
int m_nExp; //当前的经验
|
|||
|
|
int m_nMaxExp; //最大的经验
|
|||
|
|
unsigned int m_nColor; //宠物的颜色
|
|||
|
|
int m_nBattleStatus; //战斗状态
|
|||
|
|
|
|||
|
|
};
|