1
0

Replace ItemCallbacks with lambdas (#3948)

This commit is contained in:
peterbell10
2017-09-01 12:04:50 +01:00
committed by Mattes D
parent 09dfe0d811
commit 496c337cdf
67 changed files with 876 additions and 1834 deletions

View File

@@ -193,8 +193,7 @@ bool cHopperEntity::MovePickupsIn(cChunk & a_Chunk, Int64 a_CurrentTick)
{
UNUSED(a_CurrentTick);
class cHopperPickupSearchCallback :
public cEntityCallback
class cHopperPickupSearchCallback
{
public:
cHopperPickupSearchCallback(const Vector3i & a_Pos, cItemGrid & a_Contents) :
@@ -204,22 +203,20 @@ bool cHopperEntity::MovePickupsIn(cChunk & a_Chunk, Int64 a_CurrentTick)
{
}
virtual bool Item(cEntity * a_Entity) override
bool operator () (cEntity & a_Entity)
{
ASSERT(a_Entity != nullptr);
if (!a_Entity->IsPickup())
if (!a_Entity.IsPickup())
{
return false;
}
Vector3f EntityPos = a_Entity->GetPosition();
Vector3f EntityPos = a_Entity.GetPosition();
Vector3f BlockPos(m_Pos.x + 0.5f, static_cast<float>(m_Pos.y) + 1, m_Pos.z + 0.5f); // One block above hopper, and search from center outwards
double Distance = (EntityPos - BlockPos).Length();
if (Distance < 0.5)
{
if (TrySuckPickupIn(static_cast<cPickup *>(a_Entity)))
if (TrySuckPickupIn(static_cast<cPickup &>(a_Entity)))
{
return false;
}
@@ -228,9 +225,9 @@ bool cHopperEntity::MovePickupsIn(cChunk & a_Chunk, Int64 a_CurrentTick)
return false;
}
bool TrySuckPickupIn(cPickup * a_Pickup)
bool TrySuckPickupIn(cPickup & a_Pickup)
{
cItem & Item = a_Pickup->GetItem();
cItem & Item = a_Pickup.GetItem();
for (int i = 0; i < ContentsWidth * ContentsHeight; i++)
{
@@ -238,7 +235,7 @@ bool cHopperEntity::MovePickupsIn(cChunk & a_Chunk, Int64 a_CurrentTick)
{
m_bFoundPickupsAbove = true;
m_Contents.SetSlot(i, Item);
a_Pickup->Destroy(); // Kill pickup
a_Pickup.Destroy(); // Kill pickup
return true;
}
@@ -252,7 +249,7 @@ bool cHopperEntity::MovePickupsIn(cChunk & a_Chunk, Int64 a_CurrentTick)
if (Item.IsEmpty())
{
a_Pickup->Destroy(); // Kill pickup if all items were added
a_Pickup.Destroy(); // Kill pickup if all items were added
}
return true;
}