diff --git a/src/planner.cpp b/src/planner.cpp index 4fe0f8c..e09ab87 100644 --- a/src/planner.cpp +++ b/src/planner.cpp @@ -1,5 +1,6 @@ #include "planner.hpp" #include "action.hpp" +#include "character_actor.hpp" #include "global_world_state.hpp" #include "utils/godot_macros.h" #include @@ -18,6 +19,7 @@ typedef HashSet NodeSet; void Goal::_bind_methods() { #define CLASSNAME Goal GDPROPERTY(goal_state, Variant::DICTIONARY); + GDPROPERTY(prerequisites, Variant::DICTIONARY); } void Goal::set_goal_state(Dictionary dict) { @@ -28,6 +30,14 @@ Dictionary Goal::get_goal_state() const { return Action::property_map_to_dict(this->goal_state); } +void Goal::set_prerequisites(Dictionary dict) { + Action::dict_to_property_map(dict, this->prerequisites); +} + +Dictionary Goal::get_prerequisites() const { + return Action::property_map_to_dict(this->prerequisites); +} + #undef CLASSNAME // !Goal PlannerNode PlannerNode::goal_node(WorldState const &goal) { diff --git a/src/planner.hpp b/src/planner.hpp index b197812..ea3f4f7 100644 --- a/src/planner.hpp +++ b/src/planner.hpp @@ -20,8 +20,11 @@ class Goal : public Resource { void set_goal_state(Dictionary dict); Dictionary get_goal_state() const; + void set_prerequisites(Dictionary dict); + Dictionary get_prerequisites() const; public: WorldState goal_state{}; + WorldState prerequisites{}; }; struct PlannerNode {