diff options
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index be3331ead4c..df5136781de 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * This program is free software; you can redistribute it and/or modify it @@ -5597,12 +5597,11 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveYard(float x, float y, float // then check faction // if mapId != graveyard.mapId (ghost in instance) and search any graveyard associated // then check faction - GraveYardContainer::const_iterator graveLow = GraveYardStore.lower_bound(zoneId); - GraveYardContainer::const_iterator graveUp = GraveYardStore.upper_bound(zoneId); + GraveYardMapBounds range = GraveYardStore.equal_range(zoneId); MapEntry const* map = sMapStore.LookupEntry(MapId); - // not need to check validity of map object; MapId _MUST_ be valid here - if (graveLow == graveUp && !map->IsBattleArena()) + // not need to check validity of map object; MapId _MUST_ be valid here + if (range.first == range.second && !map->IsBattleArena()) { sLog->outError(LOG_FILTER_SQL, "Table `game_graveyard_zone` incomplete: Zone %u Team %u does not have a linked graveyard.", zoneId, team); return GetDefaultGraveYard(team); @@ -5623,9 +5622,9 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveYard(float x, float y, float MapEntry const* mapEntry = sMapStore.LookupEntry(MapId); - for (GraveYardContainer::const_iterator itr = graveLow; itr != graveUp; ++itr) + for (; range.first != range.second; ++range.first) { - GraveYardData const& data = itr->second; + GraveYardData const& data = range.first->second; WorldSafeLocsEntry const* entry = sWorldSafeLocsStore.LookupEntry(data.safeLocId); if (!entry) @@ -5703,15 +5702,13 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveYard(float x, float y, float GraveYardData const* ObjectMgr::FindGraveYardData(uint32 id, uint32 zoneId) { - GraveYardContainer::const_iterator graveLow = GraveYardStore.lower_bound(zoneId); - GraveYardContainer::const_iterator graveUp = GraveYardStore.upper_bound(zoneId); - - for (GraveYardContainer::const_iterator itr = graveLow; itr != graveUp; ++itr) + GraveYardMapBounds range = GraveYardStore.equal_range(zoneId); + for (; range.first != range.second; ++range.first) { - if (itr->second.safeLocId == id) - return &itr->second; + GraveYardData const& data = range.first->second; + if (data.safeLocId == id) + return &data; } - return NULL; } @@ -5744,9 +5741,8 @@ bool ObjectMgr::AddGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool per void ObjectMgr::RemoveGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool persist /*= false*/) { - GraveYardContainer::iterator graveLow = GraveYardStore.lower_bound(zoneId); - GraveYardContainer::iterator graveUp = GraveYardStore.upper_bound(zoneId); - if (graveLow == graveUp) + GraveYardMapBoundsNonConst range = GraveYardStore.equal_range(zoneId); + if (range.first == range.second) { //sLog->outError(LOG_FILTER_SQL, "Table `game_graveyard_zone` incomplete: Zone %u Team %u does not have a linked graveyard.", zoneId, team); return; @@ -5754,11 +5750,10 @@ void ObjectMgr::RemoveGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool bool found = false; - GraveYardContainer::iterator itr; - for (itr = graveLow; itr != graveUp; ++itr) + for (; range.first != range.second; ++range.first) { - GraveYardData & data = itr->second; + GraveYardData & data = range.first->second; // skip not matching safezone id if (data.safeLocId != id) @@ -5778,7 +5773,7 @@ void ObjectMgr::RemoveGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool return; // remove from links - GraveYardStore.erase(itr); + GraveYardStore.erase(range.first); // remove link from DB if (persist) |