metro-rts/src/rts_actions.hpp
2024-08-15 21:45:00 +02:00

60 lines
1.6 KiB
C++

#ifndef RTS_ACTIONS_HPP
#define RTS_ACTIONS_HPP
#include "goap/action.hpp"
#include "goap/actor_world_state.hpp"
class MoveToTarget : public goap::Action {
GOAP_ACTION(MoveToTarget);
public:
MoveToTarget();
virtual goap::State *get_apply_state(goap::ActorWorldState *context) const override;
};
class FireAtTarget : public goap::Action {
GOAP_ACTION(FireAtTarget);
public:
FireAtTarget();
virtual goap::State *get_apply_state(goap::ActorWorldState *) const override;
};
class FindTarget : public goap::Action {
GOAP_ACTION(FindTarget);
public:
FindTarget();
virtual goap::State *get_apply_state(goap::ActorWorldState *context) const override;
};
class GetInMeleeRange : public goap::Action {
GOAP_ACTION(GetInMeleeRange);
public:
GetInMeleeRange();
virtual goap::State *get_apply_state(goap::ActorWorldState *context) const override;
};
class MeleeAttack : public goap::Action {
GOAP_ACTION(MeleeAttack);
public:
MeleeAttack();
virtual goap::State *get_apply_state(goap::ActorWorldState *) const override;
};
class TankSelfHeal : public goap::Action {
GOAP_ACTION(TankSelfHeal);
public:
TankSelfHeal();
virtual goap::State *get_apply_state(goap::ActorWorldState *) const override;
};
class TakeCover : public goap::Action {
GOAP_ACTION(TakeCover);
public:
TakeCover();
virtual bool procedural_is_possible(goap::ActorWorldState *context) const override;
virtual goap::State *get_apply_state(goap::ActorWorldState *context) const override;
private:
static bool is_marker_cover_from(class NavMarker *marker, gd::Vector3 const &target);
};
#endif // !RTS_ACTIONS_HPP