1
0

Using DoWithPlayer instead of FindAndDoWithPlayer for callbacks.

You are able to dye the collar.
This commit is contained in:
STRWarrior 2013-11-10 20:12:30 +01:00
parent 4f11cd2f8a
commit e62858ec3d
3 changed files with 20 additions and 7 deletions

View File

@ -16,7 +16,8 @@ cWolf::cWolf(void) :
m_bIsTame(false), m_bIsTame(false),
m_bIsSitting(false), m_bIsSitting(false),
m_bIsBegging(false), m_bIsBegging(false),
m_bOwner("") m_bOwner(""),
m_bCollar(14)
{ {
} }
@ -66,7 +67,15 @@ void cWolf::OnRightClicked(cPlayer & a_Player)
{ {
if (a_Player.GetName() == m_bOwner) // Is the player the owner of the dog? if (a_Player.GetName() == m_bOwner) // Is the player the owner of the dog?
{ {
if (IsSitting()) if (a_Player.GetEquippedItem().m_ItemType == E_ITEM_DYE)
{
m_bCollar = 15 - a_Player.GetEquippedItem().m_ItemDamage;
if (!a_Player.IsGameModeCreative())
{
a_Player.GetInventory().RemoveOneEquippedItem();
}
}
else if (IsSitting())
{ {
SetIsSitting(false); SetIsSitting(false);
} }
@ -144,7 +153,7 @@ void cWolf::Tick(float a_Dt, cChunk & a_Chunk)
Vector3f OwnerCoords; Vector3f OwnerCoords;
} ; } ;
cCallback Callback; cCallback Callback;
m_World->FindAndDoWithPlayer(m_bOwner, Callback); m_World->DoWithPlayer(m_bOwner, Callback);
Vector3f OwnerCoords = Callback.OwnerCoords; Vector3f OwnerCoords = Callback.OwnerCoords;
if (IsTame()) if (IsTame())

View File

@ -28,6 +28,7 @@ public:
bool IsBegging(void) const { return m_bIsBegging; } bool IsBegging(void) const { return m_bIsBegging; }
bool IsAngry(void) const { return m_bIsAngry; } bool IsAngry(void) const { return m_bIsAngry; }
AString GetOwner(void) const { return m_bOwner; } AString GetOwner(void) const { return m_bOwner; }
int GetCollarColor(void) const { return m_bCollar; }
// Set functions // Set functions
void SetIsSitting(bool a_IsSitting) { m_bIsSitting = a_IsSitting; } void SetIsSitting(bool a_IsSitting) { m_bIsSitting = a_IsSitting; }
@ -38,11 +39,12 @@ public:
private: private:
bool m_bIsSitting; bool m_bIsSitting;
bool m_bIsTame; bool m_bIsTame;
bool m_bIsBegging; bool m_bIsBegging;
bool m_bIsAngry; bool m_bIsAngry;
AString m_bOwner; AString m_bOwner;
int m_bCollar;
} ; } ;

View File

@ -1752,6 +1752,8 @@ void cProtocol172::cPacketizer::WriteMobMetadata(const cMonster & a_Mob)
WriteFloat((float)(a_Mob.GetHealth())); WriteFloat((float)(a_Mob.GetHealth()));
WriteByte(0x13); WriteByte(0x13);
WriteByte(Wolf.IsBegging() ? 1 : 0); WriteByte(Wolf.IsBegging() ? 1 : 0);
WriteByte(0x14);
WriteByte(Wolf.GetCollarColor());
break; break;
} }