#pragma once #include "Goal.h" class Animal; class Level; class BreedGoal : public Goal { private: Animal* animal; // Owner of this goal Level* level; std::weak_ptr partner; int loveTime; double speedModifier; public: BreedGoal(Animal* animal, double speedModifier); virtual bool canUse(); virtual bool canContinueToUse(); virtual void stop(); virtual void tick(); private: std::shared_ptr getFreePartner(); void breed(); public: // 4J Added override to update ai elements when loading entity from // schematics virtual void setLevel(Level* level) { this->level = level; } };