Core/AI: Do not expose internal storage of SummonList

This commit is contained in:
Spp
2013-03-21 11:06:05 +01:00
parent 64cffa1271
commit d091097433
11 changed files with 127 additions and 72 deletions

View File

@@ -24,26 +24,28 @@ struct TSpellSummary
void SummonList::DoZoneInCombat(uint32 entry)
{
for (iterator i = begin(); i != end();)
for (StorageType::iterator i = storage_.begin(); i != storage_.end();)
{
Creature* summon = Unit::GetCreature(*me, *i);
++i;
if (summon && summon->IsAIEnabled
&& (!entry || summon->GetEntry() == entry))
&& (!entry || summon->GetEntry() == entry))
{
summon->AI()->DoZoneInCombat();
}
}
}
void SummonList::DespawnEntry(uint32 entry)
{
for (iterator i = begin(); i != end();)
for (StorageType::iterator i = storage_.begin(); i != storage_.end();)
{
Creature* summon = Unit::GetCreature(*me, *i);
if (!summon)
erase(i++);
i = storage_.erase(i);
else if (summon->GetEntry() == entry)
{
erase(i++);
i = storage_.erase(i);
summon->DespawnOrUnsummon();
}
else
@@ -53,33 +55,29 @@ void SummonList::DespawnEntry(uint32 entry)
void SummonList::DespawnAll()
{
while (!empty())
while (!storage_.empty())
{
Creature* summon = Unit::GetCreature(*me, *begin());
if (!summon)
erase(begin());
else
{
erase(begin());
Creature* summon = Unit::GetCreature(*me, storage_.front());
storage_.pop_front();
if (summon)
summon->DespawnOrUnsummon();
}
}
}
void SummonList::RemoveNotExisting()
{
for (iterator i = begin(); i != end();)
for (StorageType::iterator i = storage_.begin(); i != storage_.end();)
{
if (Unit::GetCreature(*me, *i))
++i;
else
erase(i++);
i = storage_.erase(i);
}
}
bool SummonList::HasEntry(uint32 entry) const
{
for (const_iterator i = begin(); i != end(); ++i)
for (StorageType::const_iterator i = storage_.begin(); i != storage_.end(); ++i)
{
Creature* summon = Unit::GetCreature(*me, *i);
if (summon && summon->GetEntry() == entry)