#include "action.hpp"

namespace goap {
Action::~Action() {}

bool Action::is_possible(ActorWorldState *context) const {
    return this->procedural_is_possible(context);
}

bool Action::is_completed(ActorWorldState *context) const {
    if(!only_proc_is_completed) {
        for(WorldProperty const &prop : this->effects) {
            if(!context->check_property_match(prop))
                return false;
        }
    }
    return this->procedural_is_completed(context);
}

WorldState const &Action::get_required() const {
    return this->required;
}

WorldState const &Action::get_effects() const {
    return this->effects;
}

ActionID Action::get_id() const {
    return this->id;
}

bool Action::procedural_is_possible(ActorWorldState *context) const {
    return true;
}

bool Action::procedural_is_completed(ActorWorldState *context) const {
    return true;
}
}
