1
0

Revert "Replace ItemCallbacks with lambdas (#3948)"

This reverts commit 496c337cdf.
This commit is contained in:
LogicParrot
2017-09-02 10:45:06 +03:00
committed by Alexander Harkness
parent 700bbdabf5
commit 49c443896d
67 changed files with 1832 additions and 874 deletions

View File

@@ -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);
}
}
}