📄 character.h
字号:
#ifndef _CHARACTER_H_
#define _CHARACTER_H_
#include "ieowner.h"
#include "world2d.h"
#include "characterbrainlib.h"
#include "anim.h"
enum CA_Ids
{
CA_LieDown,
CA_Yawn,
CA_Rest,
CA_GetUp,
CA_Stretch,
CA_Walk,
CA_Run,
CA_Fight,
CA_Die,
CA_NUM // keep last
};
enum Alignments
{
A_Dogs,
A_Cats
};
//
// character class, contains common AI executors
// for characters
//
class Character : public IEOwner, public WorldObj
{
public:
Character();
virtual void registerAnims () = 0;
virtual void makeBrain () = 0;
virtual const char * getAttack ( int & damage, float & prepareTime );
virtual const char * getDamageReact ( float & time );
void addRest ( float rest );
bool rested ();
void animStart ( int id );
bool animDone ();
void update ();
void updateAnim ();
void initEnergy ( float burnRate, float recoveRate );
void addEnergy ( float energy );
void burnEnergy ();
void restoreEnergy ();
float getMaxEnergy ();
float getEnergy ();
void setSpeeds ( float walkSpeed, float runSpeed );
float getWalkSpeed ();
float getRunSpeed ();
bool isEnemy ( Character * other );
int getAlignment () { return m_alignment; }
void setSightRange ( int range ) { m_sightRange = range; }
int getSightRange () { return m_sightRange; }
void setEnemy ( Character * other ) { m_enemy = other; }
Character * getEnemy () { return m_enemy; }
void alertChase ( Character * other );
void alertFight ( Character * other );
bool beingChased () { return m_beingChased; }
bool fighting () { return m_fighting; }
int getHealth () { return m_health; }
void setDone ( bool done ) { m_done = done; }
bool getDone () { return m_done; }
void setDamage ( int damage ) { m_health -= damage; }
protected:
float m_energy;
float m_energyBurnRate;
float m_energyRecoveryRate;
float m_maxEnergy;
float m_walkSpeed;
float m_runSpeed;
int m_alignment;
int m_sightRange;
int m_health;
bool m_done; // generic done
Character * m_enemy;
Anim * m_anims [ CA_NUM ];
int m_curAnim;
bool m_beingChased;
bool m_fighting;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -