#ifndef GOAP_ACTOR_WORLD_STATE_HPP
#define GOAP_ACTOR_WORLD_STATE_HPP

#include <godot_cpp/classes/node.hpp>
#include <godot_cpp/templates/hash_map.hpp>
#include <godot_cpp/templates/pair.hpp>
#include <godot_cpp/variant/string_name.hpp>

namespace gd = godot;

namespace goap {
typedef gd::HashMap<gd::StringName, gd::Variant> WorldState;
typedef gd::KeyValue<gd::StringName, gd::Variant> WorldProperty;

class ActorWorldState : public gd::Node {
    GDCLASS(ActorWorldState, gd::Node);
    static void _bind_methods();
public:
    bool check_property_match(WorldProperty const &property);
    virtual gd::Variant get_world_property(gd::String world_prop_name);
};
}

#endif // !GOAP_ACTOR_WORLD_STATE_HPP
