#include "node.h"
+#include <algorithm>
using namespace std;
Node::Node(Action action){
_action = action;
+ _preconditions = _action.preconditions();
}
Action Node::action(){
}
-void Node::execute(){
+void Node::execute(literals effects){
+ for (literals::iterator effect = effects.begin(); effect != effects.end(); ++effect){
+ _preconditions.erase(find(_preconditions.begin(),_preconditions.end(), *effect));
+ }
+ if (_preconditions.size() != 0)
+ return;
_action.execute();
for(vector<Node*>::iterator child = _children.begin(); child != _children.end(); ++child){
- (*child)->execute();
+ (*child)->execute(_action.effects());
}
}