net7/branches/linux-port/PlayerEffects.cpp
2014-05-11 16:54:16 -04:00

71 lines
No EOL
1.3 KiB
C++

#include "PlayerEffects.h"
#include "PlayerClass.h"
Effects::Effects()
{
m_Player = 0;
}
Effects::~Effects()
{
m_EffectList.clear();
}
void Effects::Init(Player * Owner)
{
m_Player = Owner;
}
int Effects::AddEffect(ObjectEffect *obj_effect)
{
int EffectID = GetNet7TickCount();
obj_effect->EffectID = EffectID;
memcpy(&m_EffectList[EffectID].obj_effect, obj_effect, sizeof(ObjectEffect)); // Copy effect in
// Send to all player in your range
if(m_Player->GetStartStatus())
{
m_Player->SendObjectEffectRL(obj_effect);
}
return EffectID;
}
bool Effects::RemoveEffect(int EffectID)
{
if (m_EffectList.count(EffectID) != 0)
{
m_EffectList.erase(m_EffectList.find(EffectID));
// Send Remove Effect to Range List
m_Player->RemoveEffectRL(EffectID);
return true;
}
else
{
LogMessage("Warning: Removing an Effect ID that does not exsist!\n");
return false;
}
}
bool Effects::SendRemoveEffects(Player *p)
{
for(mapEffect::const_iterator Effect = m_EffectList.begin(); Effect != m_EffectList.end(); ++Effect)
{
p->SendRemoveEffect(Effect->first);
}
return true;
}
bool Effects::SendEffects(Player *p)
{
for(mapEffect::const_iterator Effect = m_EffectList.begin(); Effect != m_EffectList.end(); ++Effect)
{
p->SendObjectEffect((ObjectEffect *) &Effect->second.obj_effect);
}
return true;
}