struct FCFight
{
LPCHARACTER pkLeaver;
DWORD stateType;
FCombatFight(LPCHARACTER ch, DWORD state) : pkLeaver(ch), stateType(state) {}
void operator() (LPENTITY ent)
{
if (ent->IsType(ENTITY_CHARACTER))
{
LPCHARACTER ch = static_cast<LPCHARACTER>(ent);
if (ch && ch->IsPC())
{
switch (stateType)
{
case C_FIGHT_ADD:
{
TargetInfo * pInfo = CTargetManager::instance().GetTargetInfo(ch->GetPlayerID(), COMBAT_FIGHT_INDEX, pkLeaver->GetVID());
if (!pInfo)
CTargetManager::Instance().CreateTarget(ch->GetPlayerID(), C_ZONE_INDEX_TARGET, pkLeaver->GetName(), C_FIGHT_INDEX,pkLeaver->GetVID(), NULL, ch->GetMapIndex(), "1");
}
break;
case C_FIGHT_REMOVE:
CTargetManager::instance().DeleteTarget(ch->GetPlayerID(), C_FIGHT_INDEX, pkLeaver->GetName());
break;
}
}
}
}
};