wave-survival/modules/wave_survival/enemies/enemy_rifleman.cpp

44 lines
1 KiB
C++

#include "enemy_rifleman.h"
#include "core/os/memory.h"
#include "wave_survival/npc_unit.h"
#include "wave_survival/player_detector.h"
#include "wave_survival/state_machine.h"
void EnemyRifleman::_bind_methods() {
}
void EnemyRifleman::ready() {
get_fsm()->add_state(memnew(RiflemanPatrolState));
get_fsm()->add_state(memnew(RiflemanChaseState));
get_fsm()->add_state(memnew(RiflemanFireState));
}
void EnemyRifleman::_notification(int what) {
if (Engine::get_singleton()->is_editor_hint()) {
return;
}
switch (what) {
default:
return;
case NOTIFICATION_READY:
ready();
return;
}
}
EnemyRifleman *RiflemanState::get_target() const {
return cast_to<EnemyRifleman>(get_body());
}
String RiflemanPatrolState::get_next_state() const {
if (get_body()->get_unit()->is_aware_of_player()) {
return RiflemanChaseState::get_class_static();
}
return get_class();
}
String RiflemanChaseState::get_next_state() const {
if (get_body()->get_detector()->line_of_sight_exists()) {
}
return get_class();
}