35 lines
754 B
C++
35 lines
754 B
C++
#ifndef GOAP_STATE_HPP
|
|
#define GOAP_STATE_HPP
|
|
|
|
#include "goap/actor_world_state.hpp"
|
|
#include <godot_cpp/classes/node.hpp>
|
|
#include <godot_cpp/classes/node3d.hpp>
|
|
|
|
namespace gd = godot;
|
|
|
|
namespace goap {
|
|
class Action;
|
|
|
|
class State : public gd::Node {
|
|
friend class Action;
|
|
GDCLASS(State, gd::Node);
|
|
static void _bind_methods();
|
|
public:
|
|
virtual void _enter_tree() override;
|
|
virtual void _process(double delta_time) override;
|
|
protected:
|
|
Action const *get_action() const;
|
|
bool is_action_done() const;
|
|
virtual void _end_state();
|
|
void state_finished();
|
|
void state_failed();
|
|
private:
|
|
void end_state();
|
|
private:
|
|
ActorWorldState *world_state{nullptr};
|
|
Action const *action{nullptr};
|
|
};
|
|
}
|
|
|
|
#endif // !GOAP_STATE_HPP
|