aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Combat/ThreatManager.cpp
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-10-30 10:30:05 +0100
committerSpp <spp@jorge.gr>2012-10-30 10:30:05 +0100
commitc97fc99e1683edc4a5b177119ba7a775cf7a19a1 (patch)
tree16007f950c058d3c6963e2924981d7bbe5a3c898 /src/server/game/Combat/ThreatManager.cpp
parent59a828b49ed1e07bd5d705e3d3aa1a6d110be8fc (diff)
parentcd8e9dfb5213f6e299065cc1f87535a26c2f2936 (diff)
Merge branch 'master' into 4.3.4
Note: What a bad automatic merge!!! needed to fix a lot of stuff... grrr Conflicts: src/server/game/AI/EventAI/CreatureEventAI.cpp src/server/game/AI/EventAI/CreatureEventAIMgr.cpp src/server/game/Achievements/AchievementMgr.cpp src/server/game/Entities/Creature/GossipDef.cpp src/server/game/Entities/Pet/Pet.cpp src/server/game/Entities/Player/Player.cpp src/server/game/Entities/Player/Player.h src/server/game/Globals/ObjectMgr.cpp src/server/game/Guilds/Guild.cpp src/server/game/Guilds/Guild.h src/server/game/Guilds/GuildMgr.h src/server/game/Handlers/AuctionHouseHandler.cpp src/server/game/Handlers/BattleGroundHandler.cpp src/server/game/Handlers/ChannelHandler.cpp src/server/game/Handlers/CharacterHandler.cpp src/server/game/Handlers/ChatHandler.cpp src/server/game/Handlers/GroupHandler.cpp src/server/game/Handlers/LFGHandler.cpp src/server/game/Handlers/MiscHandler.cpp src/server/game/Handlers/QuestHandler.cpp src/server/game/Handlers/TradeHandler.cpp src/server/game/Quests/QuestDef.h src/server/game/Server/Protocol/Opcodes.cpp src/server/game/Server/WorldSession.cpp src/server/game/Server/WorldSession.h src/server/game/Spells/Spell.cpp src/server/scripts/Commands/cs_debug.cpp src/server/scripts/Commands/cs_titles.cpp src/server/scripts/Kalimdor/boss_azuregos.cpp src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp
Diffstat (limited to 'src/server/game/Combat/ThreatManager.cpp')
-rwxr-xr-xsrc/server/game/Combat/ThreatManager.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp
index 7a4c6b6bdce..383c8c14186 100755
--- a/src/server/game/Combat/ThreatManager.cpp
+++ b/src/server/game/Combat/ThreatManager.cpp
@@ -253,25 +253,29 @@ Unit* HostileReference::getSourceUnit()
void ThreatContainer::clearReferences()
{
- for (std::list<HostileReference*>::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i)
+ for (ThreatContainer::StorageType::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i)
{
(*i)->unlink();
delete (*i);
}
+
iThreatList.clear();
}
//============================================================
// Return the HostileReference of NULL, if not found
-HostileReference* ThreatContainer::getReferenceByTarget(Unit* victim)
+HostileReference* ThreatContainer::getReferenceByTarget(Unit* victim) const
{
if (!victim)
return NULL;
- uint64 guid = victim->GetGUID();
- for (std::list<HostileReference*>::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i)
- if ((*i) && (*i)->getUnitGuid() == guid)
- return (*i);
+ uint64 const guid = victim->GetGUID();
+ for (ThreatContainer::StorageType::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i)
+ {
+ HostileReference *ref = (*i);
+ if (ref && ref->getUnitGuid() == guid)
+ return ref;
+ }
return NULL;
}
@@ -310,16 +314,16 @@ void ThreatContainer::update()
// return the next best victim
// could be the current victim
-HostileReference* ThreatContainer::selectNextVictim(Creature* attacker, HostileReference* currentVictim)
+HostileReference* ThreatContainer::selectNextVictim(Creature* attacker, HostileReference* currentVictim) const
{
HostileReference* currentRef = NULL;
bool found = false;
bool noPriorityTargetFound = false;
- std::list<HostileReference*>::const_iterator lastRef = iThreatList.end();
+ ThreatContainer::StorageType::const_iterator lastRef = iThreatList.end();
--lastRef;
- for (std::list<HostileReference*>::const_iterator iter = iThreatList.begin(); iter != iThreatList.end() && !found;)
+ for (ThreatContainer::StorageType::const_iterator iter = iThreatList.begin(); iter != iThreatList.end() && !found;)
{
currentRef = (*iter);
@@ -577,17 +581,15 @@ bool ThreatManager::isNeedUpdateToClient(uint32 time)
return false;
}
-// Reset all aggro without modifying the threadlist.
+// Reset all aggro without modifying the threatlist.
void ThreatManager::resetAllAggro()
{
- std::list<HostileReference*> &threatList = getThreatList();
+ ThreatContainer::StorageType &threatList = iThreatContainer.iThreatList;
if (threatList.empty())
return;
- for (std::list<HostileReference*>::iterator itr = threatList.begin(); itr != threatList.end(); ++itr)
- {
+ for (ThreatContainer::StorageType::iterator itr = threatList.begin(); itr != threatList.end(); ++itr)
(*itr)->setThreat(0);
- }
setDirty(true);
}