Revert "Replace ItemCallbacks with lambdas (#3948)"
This reverts commit 496c337cdf.
This commit is contained in:
committed by
Alexander Harkness
parent
700bbdabf5
commit
49c443896d
@@ -80,13 +80,19 @@ void cWolf::NotifyAlliesOfFight(cPawn * a_Opponent)
|
||||
return;
|
||||
}
|
||||
m_NotificationCooldown = 15;
|
||||
|
||||
m_World->DoWithPlayerByUUID(m_OwnerUUID, [=](cPlayer & a_Player)
|
||||
class cCallback : public cPlayerListCallback
|
||||
{
|
||||
virtual bool Item(cPlayer * a_Player) override
|
||||
{
|
||||
a_Player.NotifyNearbyWolves(a_Opponent, false);
|
||||
a_Player->NotifyNearbyWolves(m_Opponent, false);
|
||||
return false;
|
||||
}
|
||||
);
|
||||
public:
|
||||
cPawn * m_Opponent;
|
||||
} Callback;
|
||||
|
||||
Callback.m_Opponent = a_Opponent;
|
||||
m_World->DoWithPlayerByUUID(m_OwnerUUID, Callback);
|
||||
}
|
||||
|
||||
bool cWolf::Attack(std::chrono::milliseconds a_Dt)
|
||||
@@ -341,25 +347,30 @@ void cWolf::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk)
|
||||
|
||||
void cWolf::TickFollowPlayer()
|
||||
{
|
||||
Vector3d OwnerPos;
|
||||
bool OwnerFlying;
|
||||
auto Callback = [&](cPlayer & a_Player)
|
||||
class cCallback :
|
||||
public cPlayerListCallback
|
||||
{
|
||||
OwnerPos = a_Player.GetPosition();
|
||||
OwnerFlying = a_Player.IsFlying();
|
||||
return true;
|
||||
};
|
||||
virtual bool Item(cPlayer * a_Player) override
|
||||
{
|
||||
OwnerPos = a_Player->GetPosition();
|
||||
OwnerFlying = a_Player->IsFlying();
|
||||
return true;
|
||||
}
|
||||
public:
|
||||
Vector3d OwnerPos;
|
||||
bool OwnerFlying;
|
||||
} Callback;
|
||||
|
||||
if (m_World->DoWithPlayerByUUID(m_OwnerUUID, Callback))
|
||||
{
|
||||
// The player is present in the world, follow him:
|
||||
double Distance = (OwnerPos - GetPosition()).Length();
|
||||
double Distance = (Callback.OwnerPos - GetPosition()).Length();
|
||||
if (Distance > 20)
|
||||
{
|
||||
if (!OwnerFlying)
|
||||
if (!Callback.OwnerFlying)
|
||||
{
|
||||
OwnerPos.y = FindFirstNonAirBlockPosition(OwnerPos.x, OwnerPos.z);
|
||||
TeleportToCoords(OwnerPos.x, OwnerPos.y, OwnerPos.z);
|
||||
Callback.OwnerPos.y = FindFirstNonAirBlockPosition(Callback.OwnerPos.x, Callback.OwnerPos.z);
|
||||
TeleportToCoords(Callback.OwnerPos.x, Callback.OwnerPos.y, Callback.OwnerPos.z);
|
||||
SetTarget(nullptr);
|
||||
}
|
||||
}
|
||||
@@ -374,9 +385,9 @@ void cWolf::TickFollowPlayer()
|
||||
{
|
||||
if (GetTarget() == nullptr)
|
||||
{
|
||||
if (!OwnerFlying)
|
||||
if (!Callback.OwnerFlying)
|
||||
{
|
||||
MoveToPosition(OwnerPos);
|
||||
MoveToPosition(Callback.OwnerPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user