#ifndef BLOBS_CREATURE_LOCATERESOURCEGOAL_HPP_
#define BLOBS_CREATURE_LOCATERESOURCEGOAL_HPP_
+#include "Composition.hpp"
+#include "../math/glm.hpp"
+
+
namespace blobs {
namespace creature {
: public Goal {
public:
- explicit LocateResourceGoal(int resource);
+ LocateResourceGoal(Creature &);
~LocateResourceGoal() noexcept override;
public:
- void Enable(Creature &) override;
+ void SetMinimum(double m) noexcept { minimum = m; }
+ void Accept(int resource, double attractiveness);
+
+ std::string Describe() const override;
+ void Enable() override;
void Tick(double dt) override;
- void Action(Creature &) override;
+ void Action() override;
+
+private:
+ void LocateResource();
+ void SearchVicinity();
+ void Remember();
+ void RandomWalk();
+ bool NearTarget() const noexcept;
private:
- int res;
+ Composition accept;
+ bool found;
+ glm::dvec3 target_pos;
+ bool searching;
+ double reevaluate;
+ double minimum;
};