57 lines
1.3 KiB
C++
57 lines
1.3 KiB
C++
#ifndef ENEMY_RIFLEMAN_H
|
|
#define ENEMY_RIFLEMAN_H
|
|
|
|
#include "wave_survival/enemy_body.h"
|
|
#include "wave_survival/state.h"
|
|
class AnimationPlayer;
|
|
class NavigationAgent3D;
|
|
|
|
class EnemyRifleman : public EnemyBody {
|
|
GDCLASS(EnemyRifleman, EnemyBody);
|
|
static void _bind_methods();
|
|
void on_child_entered();
|
|
void enter_tree();
|
|
void ready();
|
|
|
|
protected:
|
|
void _notification(int what);
|
|
};
|
|
|
|
/* ============================== STATES ============================== */
|
|
|
|
class RiflemanState : public State {
|
|
GDCLASS(RiflemanState, State);
|
|
static void _bind_methods();
|
|
|
|
public:
|
|
virtual void set_target(Node *target) override;
|
|
EnemyRifleman *get_target() const;
|
|
NpcUnit *get_unit() const;
|
|
NavigationAgent3D *get_agent() const;
|
|
AnimationPlayer *get_anim() const;
|
|
|
|
private:
|
|
EnemyRifleman *target{ nullptr };
|
|
};
|
|
|
|
class RiflemanPatrolState : public RiflemanState {
|
|
GDCLASS(RiflemanPatrolState, RiflemanState);
|
|
static void _bind_methods();
|
|
|
|
public:
|
|
virtual void enter_state() override;
|
|
virtual void process(double delta) override;
|
|
};
|
|
|
|
class RiflemanSeekState : public RiflemanState {
|
|
GDCLASS(RiflemanSeekState, RiflemanState);
|
|
static void _bind_methods();
|
|
};
|
|
|
|
class RiflemanFireState : public RiflemanState {
|
|
GDCLASS(RiflemanFireState, RiflemanState);
|
|
static void _bind_methods();
|
|
};
|
|
|
|
#endif // !ENEMY_RIFLEMAN_H
|