⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 character.h

📁 C人工智能游戏开发的一些实例源代码 C Game development in artificial intelligence source code of some examples
💻 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 + -