tunnel-strategy/src/action.hpp
2024-03-30 22:59:57 +01:00

44 lines
1.3 KiB
C++

#ifndef GOAP_ACTION_HPP
#define GOAP_ACTION_HPP
#include "state.hpp"
#include <godot_cpp/classes/object.hpp>
#include <godot_cpp/classes/ref_counted.hpp>
#include <godot_cpp/classes/resource.hpp>
#include <godot_cpp/templates/hash_map.hpp>
#include <godot_cpp/templates/pair.hpp>
#include <godot_cpp/variant/variant.hpp>
namespace godot { class CharacterActor; }
namespace godot::goap {
typedef HashMap<StringName, Variant> WorldState;
typedef KeyValue<StringName, Variant> WorldProperty;
class Action : public Resource {
GDCLASS(Action, Resource);
static void _bind_methods();
public:
void set_context_prerequisites(Dictionary dict);
Dictionary get_context_prerequisites() const;
void set_prerequisites(Dictionary dict);
Dictionary get_prerequisites() const;
void set_effects(Dictionary dict);
Dictionary get_effects() const;
void set_apply_state(Ref<StateArgs> args);
Ref<StateArgs> get_apply_state() const;
bool get_is_completed(CharacterActor *context);
static Dictionary property_map_to_dict(WorldState const &props);
static void dict_to_property_map(Dictionary const &dict, WorldState &out);
public:
WorldState context_prerequisites{};
WorldState prerequisites{};
WorldState effects{};
Ref<StateArgs> apply_state{};
};
}
#endif //!GOAP_ACTION_HPP