📄 enemy.h
字号:
#ifndef _ENEMY_H
#define _ENEMY_H
#include "MapObject.h"
#include "Surface.h"
class Enemy :
public MapObject
{
public:
enum Behavior
{
BEHAVIOR_DISABLED,
BEHAVIOR_PATROL,
BEHAVIOR_COMBAT,
BEHAVIOR_FLEE,
};
enum BodyState
{
BODY_IDLE = 0,
BODY_RUN,
BODY_ATTACK,
BODY_BACKUP,
BODY_HIT,
BODY_DEATH,
BODY_DEAD,
BODY_COUNT
};
enum Animation
{
ANIM_IDLE = 0,
ANIM_RUN,
ANIM_ATTACK,
ANIM_BACKUP,
ANIM_HIT,
ANIM_DEATH,
ANIM_COUNT
};
enum EnemyType
{
ENEMY_NONE = 0,
ENEMY_GHOUL,
ENEMY_OGRE,
ENEMY_HELLBEAST,
ENEMY_COUNT
};
Enemy();
~Enemy();
void stand();
void run();
void run( Dir dir );
void hit();
void die();
void attack();
void backUp();
void wait();
void setType( EnemyType type );
void setBehavior( Behavior beh );
void setState( BodyState state, bool endTime = false );
void update( Fix dt );
void draw( Surface& dst );
void damage( Fix hp, MapObject* enemy );
void disturb( MapObject* enemy );
void read( io::InputStream* in );
void write( io::OutputStream* out );
void addItem( const char* ) {};
void removeItem( const char* ) {};
bool isInState( const char* statename );
FixVec2 blockRenderPositionReference() const;
FixVec2 blockRenderPositionExtreme() const;
Surface& bodyAnim( int* refX, int* refY );
const Surface& bodyAnim( int* refX, int* refY ) const;
BodyState state() const {return (BodyState)m_state;}
FixVec2 center() const;
bool isDead() const {return m_state == BODY_DEAD;}
bool isInterruptable();
static const char* toString( EnemyType type );
static EnemyType toEnemyType( const char* sz );
static void initStatic();
static void deinitStatic();
private:
friend class Map;
int Enemy_storeStart; //Stored data start
Fix m_time;
Fix m_dirChangeTime;
Fix m_attackDamage;
Fix m_attackSkill;
Fix m_aggression;
Fix m_cowardness;
int m_collisionCount;
int m_state;
int m_type;
int m_behavior;
Fix m_attackRange;
Fix m_attackAngle;
Fix m_attackTime;
Fix m_backUpTime;
Fix m_waitTime;
Fix m_sinceRunningTime;
int m_attackCounter;
int m_attackHitCounter;
int m_hitPointMarker;
int m_animationSwitchBoard[BODY_COUNT];
bool m_combatGreen;
int Enemy_storeEnd; //Stored data end
void behaviorPatrol( Fix dt );
void behaviorCombat( Fix dt );
void behaviorFlee( Fix dt );
void updateAttack( Fix dt );
void updateBackUp( Fix dt );
void updateRun( Fix dt );
void updateHit( Fix dt );
void updateDeath( Fix dt );
void updateWait( Fix dt );
void tryAttack();
FixVec2 renderPositionLow( int side ) const;
void resetStatisticsCombat( bool combatGreen = true );
void resetStatisticsFlee();
bool animEnded() const;
};
#endif // _ENEMY_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -