diff --git a/modules/wave_survival/enemies/enemy_rifleman.cpp b/modules/wave_survival/enemies/enemy_rifleman.cpp index 1cf5d542..f1aa54e4 100644 --- a/modules/wave_survival/enemies/enemy_rifleman.cpp +++ b/modules/wave_survival/enemies/enemy_rifleman.cpp @@ -1,5 +1,6 @@ #include "enemy_rifleman.h" #include "core/os/memory.h" +#include "scene/animation/animation_player.h" #include "wave_survival/npc_unit.h" #include "wave_survival/player_detector.h" #include "wave_survival/state_machine.h" @@ -39,6 +40,19 @@ String RiflemanPatrolState::get_next_state() const { String RiflemanChaseState::get_next_state() const { if (get_body()->get_detector()->line_of_sight_exists()) { + return RiflemanFireState::get_class_static(); + } + return get_class(); +} + +void RiflemanFireState::enter_state() { + get_anim()->play("fire"); + get_target()->set_movement_direction(Vector2()); +} + +String RiflemanFireState::get_next_state() const { + if (get_anim()->get_current_animation().is_empty()) { + return RiflemanFireState::get_class_static(); } return get_class(); } diff --git a/modules/wave_survival/enemies/enemy_rifleman.h b/modules/wave_survival/enemies/enemy_rifleman.h index 03075d61..d305eabc 100644 --- a/modules/wave_survival/enemies/enemy_rifleman.h +++ b/modules/wave_survival/enemies/enemy_rifleman.h @@ -45,6 +45,10 @@ public: class RiflemanFireState : public RiflemanState { GDCLASS(RiflemanFireState, RiflemanState); static void _bind_methods() {} + +public: + void enter_state() override; + String get_next_state() const override; }; #endif // !ENEMY_RIFLEMAN_H