1
0

Changed everything to callbacks

This commit is contained in:
Tiger Wang
2014-07-05 22:59:22 +01:00
parent f4e11d194e
commit 460d6bd0cb
4 changed files with 53 additions and 82 deletions

View File

@@ -142,7 +142,7 @@ public:
{
if (
(a_Entity == m_Projectile) || // Do not check collisions with self
(a_Entity == m_Projectile->GetCreator()) // Do not check whoever shot the projectile
(a_Entity->GetUniqueID() == m_Projectile->GetCreatorUniqueID()) // Do not check whoever shot the projectile
)
{
// TODO: Don't check creator only for the first 5 ticks
@@ -299,76 +299,6 @@ void cProjectileEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_
cEntity * cProjectileEntity::GetCreator()
{
if (m_CreatorData.m_Name.empty() && (m_CreatorData.m_UniqueID >= 1))
{
class cProjectileCreatorCallback : public cEntityCallback
{
public:
cProjectileCreatorCallback(void) :
m_Entity(NULL)
{
}
virtual bool Item(cEntity * a_Entity) override
{
m_Entity = a_Entity;
return true;
}
cEntity * GetEntity(void)
{
return m_Entity;
}
private:
cEntity * m_Entity;
};
cProjectileCreatorCallback PCC;
GetWorld()->DoWithEntityByID(m_CreatorData.m_UniqueID, PCC);
return PCC.GetEntity();
}
else if (!m_CreatorData.m_Name.empty())
{
class cProjectileCreatorCallbackForPlayers : public cPlayerListCallback
{
public:
cProjectileCreatorCallbackForPlayers(void) :
m_Entity(NULL)
{
}
virtual bool Item(cPlayer * a_Entity) override
{
m_Entity = a_Entity;
return true;
}
cPlayer * GetEntity(void)
{
return m_Entity;
}
private:
cPlayer * m_Entity;
};
cProjectileCreatorCallbackForPlayers PCCFP;
GetWorld()->FindAndDoWithPlayer(m_CreatorData.m_Name, PCCFP);
return PCCFP.GetEntity();
}
return NULL;
}
AString cProjectileEntity::GetMCAClassName(void) const
{
switch (m_ProjectileKind)