From 4ae3b64b077b444c8217f8da265cb5eedeaf699a Mon Sep 17 00:00:00 2001 From: Gargaj Date: Sun, 29 Nov 2015 19:13:31 +0100 Subject: implement breeding --- src/Mobs/PassiveMonster.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/Mobs/PassiveMonster.h') diff --git a/src/Mobs/PassiveMonster.h b/src/Mobs/PassiveMonster.h index a7e574a1d..ecce4ceb6 100644 --- a/src/Mobs/PassiveMonster.h +++ b/src/Mobs/PassiveMonster.h @@ -16,6 +16,7 @@ public: cPassiveMonster(const AString & a_ConfigName, eMonsterType a_MobType, const AString & a_SoundHurt, const AString & a_SoundDeath, double a_Width, double a_Height); virtual void Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override; + virtual void OnRightClicked(cPlayer & a_Player) override; /** When hit by someone, run away */ virtual bool DoTakeDamage(TakeDamageInfo & a_TDI) override; @@ -23,7 +24,22 @@ public: /** Returns the items that the animal of this class follows when a player holds it in hand. */ virtual void GetFollowedItems(cItems & a_Items) { } -} ; + /** Returns the items that make the animal breed - this is usually the same as the ones that make the animal follow, but not necessarily. */ + virtual void GetBreedingItems(cItems & a_Items) { GetFollowedItems(a_Items); } + + cPassiveMonster * GetPartner(void) const { return m_LovePartner; } + void EngageLoveMode(cPassiveMonster * a_Partner); + void ResetLoveMode(); + + bool IsInLove() const { return (m_LoveTimer > 0); } + bool IsInLoveCooldown() const { return (m_LoveCooldown > 0); } + +protected: + cPassiveMonster * m_LovePartner; + int m_LoveTimer; + int m_LoveCooldown; + int m_MatingTimer; +}; -- cgit v1.2.3