#pragma once #include "../PathfinderMob.h" class AgableMob : public PathfinderMob { private: static const int DATA_AGE_ID = 12; public: static const int BABY_START_AGE = -20 * 60 * 20; private: float registeredBBWidth; float registeredBBHeight; public: AgableMob(Level* level); virtual bool mobInteract(std::shared_ptr player); protected: virtual void defineSynchedData(); public: virtual std::shared_ptr getBreedOffspring( std::shared_ptr target) = 0; virtual int getAge(); virtual void ageUp(int seconds); virtual void setAge(int age); virtual void addAdditonalSaveData(CompoundTag* tag); virtual void readAdditionalSaveData(CompoundTag* tag); virtual void aiStep(); virtual bool isBaby(); virtual void updateSize(bool isBaby); protected: virtual void setSize(float w, float h); void internalSetSize(float scale); };