#ifndef GOAP_ACTION_HPP #define GOAP_ACTION_HPP #include #include #include #include #include #include namespace godot::goap { typedef HashMap WorldState; typedef KeyValue 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; 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{}; }; } #endif //!GOAP_ACTION_HPP