#pragma once #include "PassiveAggressiveMonster.h" #include "../Entities/Entity.h" class cWolf : public cPassiveAggressiveMonster { typedef cPassiveAggressiveMonster super; public: cWolf(void); CLASS_PROTODEF(cWolf) virtual bool DoTakeDamage(TakeDamageInfo & a_TDI) override; virtual void OnRightClicked(cPlayer & a_Player) override; virtual void Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override; virtual void TickFollowPlayer(); virtual bool Attack(std::chrono::milliseconds a_Dt) override; // Get functions bool IsSitting (void) const override { return m_IsSitting; } bool IsTame (void) const override { return m_IsTame; } bool IsBegging (void) const { return m_IsBegging; } bool IsAngry (void) const { return m_IsAngry; } AString GetOwnerName (void) const { return m_OwnerName; } AString GetOwnerUUID (void) const { return m_OwnerUUID; } int GetCollarColor(void) const { return m_CollarColor; } // Set functions void SetIsSitting (bool a_IsSitting) { m_IsSitting = a_IsSitting; } void SetIsTame (bool a_IsTame) { m_IsTame = a_IsTame; } void SetIsBegging (bool a_IsBegging) { m_IsBegging = a_IsBegging; } void SetIsAngry (bool a_IsAngry) { m_IsAngry = a_IsAngry; } void SetCollarColor(int a_CollarColor) { m_CollarColor = a_CollarColor; } void SetOwner (const AString & a_NewOwnerName, const AString & a_NewOwnerUUID) { m_OwnerName = a_NewOwnerName; m_OwnerUUID = a_NewOwnerUUID; } /** Notfies the wolf that the player a_Player is being attacked by a_Attacker. The wolf will then defend the player by attacking a_Attacker if all these conditions are met: - a_Player is the wolf's owner. - The wolf is not already attacking a mob. - The wolf is not sitting. This is called by cPlayer::NotifyFriendlyWolves whenever a player takes or deals damage and a wolf is nearby. */ void NearbyPlayerIsFighting(cPlayer * a_Player, cEntity * a_Opponent); virtual void InStateIdle(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override; protected: bool m_IsSitting; bool m_IsTame; bool m_IsBegging; bool m_IsAngry; AString m_OwnerName; AString m_OwnerUUID; int m_CollarColor; } ;