#ifndef ENEMY_RIFLEMAN_H #define ENEMY_RIFLEMAN_H #include "wave_survival/enemy_body.h" #include "wave_survival/state.h" #include "wave_survival/state_machine.h" class AnimationPlayer; class NavigationAgent3D; class EnemyRifleman : public EnemyBody { GDCLASS(EnemyRifleman, EnemyBody); static void _bind_methods(); void ready(); protected: void _notification(int what); public: void shoot(); void set_damage_amount(int amount); int get_damage_amount() const; private: int damage_amount{ 1 }; }; /* ============================== STATES ============================== */ class RiflemanState : public EnemyState { GDCLASS(RiflemanState, State); static void _bind_methods() {} public: EnemyRifleman *get_target() const; }; class RiflemanPatrolState : public EnemyPatrolState { GDCLASS(RiflemanPatrolState, EnemyPatrolState); static void _bind_methods() {} public: String get_next_state() const override; }; class RiflemanChaseState : public EnemyChaseState { GDCLASS(RiflemanChaseState, EnemyChaseState); static void _bind_methods() {} public: String get_next_state() const override; }; class RiflemanFireState : public RiflemanState { GDCLASS(RiflemanFireState, RiflemanState); static void _bind_methods() {} public: void enter_state() override; void process(double delta) override; String get_next_state() const override; }; #endif // !ENEMY_RIFLEMAN_H