diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/OutdoorPvP.cpp | 48 | ||||
-rw-r--r-- | src/game/OutdoorPvP.h | 9 | ||||
-rw-r--r-- | src/game/OutdoorPvPEP.cpp | 18 | ||||
-rw-r--r-- | src/game/OutdoorPvPHP.cpp | 10 | ||||
-rw-r--r-- | src/game/OutdoorPvPNA.cpp | 4 | ||||
-rw-r--r-- | src/game/OutdoorPvPTF.cpp | 14 | ||||
-rw-r--r-- | src/game/OutdoorPvPZM.cpp | 10 | ||||
-rw-r--r-- | src/game/Wintergrasp.cpp | 8 |
8 files changed, 58 insertions, 63 deletions
diff --git a/src/game/OutdoorPvP.cpp b/src/game/OutdoorPvP.cpp index 546769b7a11..14da1381624 100644 --- a/src/game/OutdoorPvP.cpp +++ b/src/game/OutdoorPvP.cpp @@ -117,7 +117,7 @@ bool OPvPCapturePoint::AddCreature(uint32 type, uint32 entry, uint32 team, uint3 return false; } -bool OPvPCapturePoint::AddCapturePoint(uint32 entry, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3) +bool OPvPCapturePoint::SetCapturePointData(uint32 entry, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3) { sLog.outDebug("Creating capture point %u", entry); @@ -222,7 +222,7 @@ void OPvPCapturePoint::DeleteSpawns() void OutdoorPvP::DeleteSpawns() { for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - (*itr)->DeleteSpawns(); + itr->second->DeleteSpawns(); } OutdoorPvP::OutdoorPvP() @@ -243,7 +243,7 @@ void OutdoorPvP::HandlePlayerLeaveZone(Player * plr, uint32 zone) { // inform the objectives of the leaving for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - (*itr)->HandlePlayerLeave(plr); + itr->second->HandlePlayerLeave(plr); // remove the world state information from the player (we can't keep everyone up to date, so leave out those who are not in the concerning zones) if(!plr->GetSession()->PlayerLogout()) SendRemoveWorldStates(plr); @@ -256,9 +256,9 @@ bool OutdoorPvP::Update(uint32 diff) bool objective_changed = false; for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) { - if((*itr)->Update(diff)) + if(itr->second->Update(diff)) { - (*itr)->ChangeState(); + itr->second->ChangeState(); objective_changed = true; } } @@ -452,7 +452,7 @@ void OutdoorPvP::HandleKill(Player *killer, Unit * killed) bool OutdoorPvP::IsInsideObjective(Player *plr) const { for(OPvPCapturePointMap::const_iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - if((*itr)->IsInsideObjective(plr)) + if(itr->second->IsInsideObjective(plr)) return true; return false; @@ -466,10 +466,9 @@ bool OPvPCapturePoint::IsInsideObjective(Player *plr) const bool OutdoorPvP::HandleCustomSpell(Player *plr, uint32 spellId, GameObject * go) { for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - { - if((*itr)->HandleCustomSpell(plr,spellId,go)) + if(itr->second->HandleCustomSpell(plr,spellId,go)) return true; - } + return false; } @@ -483,40 +482,36 @@ bool OPvPCapturePoint::HandleCustomSpell(Player *plr, uint32 spellId, GameObject bool OutdoorPvP::HandleOpenGo(Player *plr, uint64 guid) { for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - { - if((*itr)->HandleOpenGo(plr,guid) >= 0) + if(itr->second->HandleOpenGo(plr,guid) >= 0) return true; - } + return false; } bool OutdoorPvP::HandleGossipOption(Player * plr, uint64 guid, uint32 id) { for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - { - if((*itr)->HandleGossipOption(plr, guid, id)) + if(itr->second->HandleGossipOption(plr, guid, id)) return true; - } + return false; } bool OutdoorPvP::CanTalkTo(Player * plr, Creature * c, GossipOption &gso) { for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - { - if((*itr)->CanTalkTo(plr, c, gso)) + if(itr->second->CanTalkTo(plr, c, gso)) return true; - } + return false; } bool OutdoorPvP::HandleDropFlag(Player * plr, uint32 id) { for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - { - if((*itr)->HandleDropFlag(plr, id)) + if(itr->second->HandleDropFlag(plr, id)) return true; - } + return false; } @@ -589,12 +584,7 @@ void OutdoorPvP::OnGameObjectCreate(GameObject *go, bool add) if(go->GetGoType() != GAMEOBJECT_TYPE_CAPTURE_POINT) return; - for(OutdoorPvP::OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - { - if((*itr)->m_CapturePointGUID == go->GetDBTableGUIDLow()) - { - (*itr)->m_capturePoint = add ? go : NULL; - break; - } - } + OutdoorPvP::OPvPCapturePointMap::iterator itr = m_capturePoints.find(go->GetDBTableGUIDLow()); + if(itr != m_capturePoints.end()) + itr->second->m_capturePoint = add ? go : NULL; } diff --git a/src/game/OutdoorPvP.h b/src/game/OutdoorPvP.h index 4d7eeea171c..cc2c6822eb5 100644 --- a/src/game/OutdoorPvP.h +++ b/src/game/OutdoorPvP.h @@ -113,7 +113,7 @@ public: void AddGO(uint32 type, uint32 guid, uint32 entry = 0); void AddCre(uint32 type, uint32 guid, uint32 entry = 0); - bool AddCapturePoint(uint32 entry, uint32 map, float x, float y, float z, float o = 0, float rotation0 = 0, float rotation1 = 0, float rotation2 = 0, float rotation3 = 0); + bool SetCapturePointData(uint32 entry, uint32 map, float x, float y, float z, float o = 0, float rotation0 = 0, float rotation1 = 0, float rotation2 = 0, float rotation3 = 0); protected: @@ -165,7 +165,7 @@ public: // deletes all gos/creatures spawned by the pvp void DeleteSpawns(); - typedef std::vector<OPvPCapturePoint*> OPvPCapturePointMap; + typedef std::map<uint32/*lowguid*/, OPvPCapturePoint*> OPvPCapturePointMap; virtual void FillInitialWorldStates(WorldPacket & data) {} // called when a player triggers an areatrigger @@ -221,6 +221,11 @@ protected: virtual void HandlePlayerEnterZone(Player * plr, uint32 zone); virtual void HandlePlayerLeaveZone(Player * plr, uint32 zone); + void AddCapturePoint(OPvPCapturePoint* cp) + { + m_capturePoints[cp->m_CapturePointGUID] = cp; + } + void RegisterZone(uint32 zoneid); bool HasPlayer(Player *plr) const; void TeamCastSpell(TeamId team, int32 spellId); diff --git a/src/game/OutdoorPvPEP.cpp b/src/game/OutdoorPvPEP.cpp index 1ba2f7fcfa0..d131256bcd8 100644 --- a/src/game/OutdoorPvPEP.cpp +++ b/src/game/OutdoorPvPEP.cpp @@ -31,7 +31,7 @@ OPvPCapturePointEP_EWT::OPvPCapturePointEP_EWT(OutdoorPvP *pvp) : OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_UnitsSummonedSide(0) { - AddCapturePoint(EPCapturePoints[EP_EWT].entry,EPCapturePoints[EP_EWT].map,EPCapturePoints[EP_EWT].x,EPCapturePoints[EP_EWT].y,EPCapturePoints[EP_EWT].z,EPCapturePoints[EP_EWT].o,EPCapturePoints[EP_EWT].rot0,EPCapturePoints[EP_EWT].rot1,EPCapturePoints[EP_EWT].rot2,EPCapturePoints[EP_EWT].rot3); + SetCapturePointData(EPCapturePoints[EP_EWT].entry,EPCapturePoints[EP_EWT].map,EPCapturePoints[EP_EWT].x,EPCapturePoints[EP_EWT].y,EPCapturePoints[EP_EWT].z,EPCapturePoints[EP_EWT].o,EPCapturePoints[EP_EWT].rot0,EPCapturePoints[EP_EWT].rot1,EPCapturePoints[EP_EWT].rot2,EPCapturePoints[EP_EWT].rot3); AddObject(EP_EWT_FLAGS,EPTowerFlags[EP_EWT].entry,EPTowerFlags[EP_EWT].map,EPTowerFlags[EP_EWT].x,EPTowerFlags[EP_EWT].y,EPTowerFlags[EP_EWT].z,EPTowerFlags[EP_EWT].o,EPTowerFlags[EP_EWT].rot0,EPTowerFlags[EP_EWT].rot1,EPTowerFlags[EP_EWT].rot2,EPTowerFlags[EP_EWT].rot3); } @@ -185,7 +185,7 @@ void OPvPCapturePointEP_EWT::SummonSupportUnitAtNorthpassTower(uint32 team) OPvPCapturePointEP_NPT::OPvPCapturePointEP_NPT(OutdoorPvP *pvp) : OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_SummonedGOSide(0) { - AddCapturePoint(EPCapturePoints[EP_NPT].entry,EPCapturePoints[EP_NPT].map,EPCapturePoints[EP_NPT].x,EPCapturePoints[EP_NPT].y,EPCapturePoints[EP_NPT].z,EPCapturePoints[EP_NPT].o,EPCapturePoints[EP_NPT].rot0,EPCapturePoints[EP_NPT].rot1,EPCapturePoints[EP_NPT].rot2,EPCapturePoints[EP_NPT].rot3); + SetCapturePointData(EPCapturePoints[EP_NPT].entry,EPCapturePoints[EP_NPT].map,EPCapturePoints[EP_NPT].x,EPCapturePoints[EP_NPT].y,EPCapturePoints[EP_NPT].z,EPCapturePoints[EP_NPT].o,EPCapturePoints[EP_NPT].rot0,EPCapturePoints[EP_NPT].rot1,EPCapturePoints[EP_NPT].rot2,EPCapturePoints[EP_NPT].rot3); AddObject(EP_NPT_FLAGS,EPTowerFlags[EP_NPT].entry,EPTowerFlags[EP_NPT].map,EPTowerFlags[EP_NPT].x,EPTowerFlags[EP_NPT].y,EPTowerFlags[EP_NPT].z,EPTowerFlags[EP_NPT].o,EPTowerFlags[EP_NPT].rot0,EPTowerFlags[EP_NPT].rot1,EPTowerFlags[EP_NPT].rot2,EPTowerFlags[EP_NPT].rot3); } @@ -334,7 +334,7 @@ void OPvPCapturePointEP_NPT::SummonGO(uint32 team) OPvPCapturePointEP_CGT::OPvPCapturePointEP_CGT(OutdoorPvP *pvp) : OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_GraveyardSide(0) { - AddCapturePoint(EPCapturePoints[EP_CGT].entry,EPCapturePoints[EP_CGT].map,EPCapturePoints[EP_CGT].x,EPCapturePoints[EP_CGT].y,EPCapturePoints[EP_CGT].z,EPCapturePoints[EP_CGT].o,EPCapturePoints[EP_CGT].rot0,EPCapturePoints[EP_CGT].rot1,EPCapturePoints[EP_CGT].rot2,EPCapturePoints[EP_CGT].rot3); + SetCapturePointData(EPCapturePoints[EP_CGT].entry,EPCapturePoints[EP_CGT].map,EPCapturePoints[EP_CGT].x,EPCapturePoints[EP_CGT].y,EPCapturePoints[EP_CGT].z,EPCapturePoints[EP_CGT].o,EPCapturePoints[EP_CGT].rot0,EPCapturePoints[EP_CGT].rot1,EPCapturePoints[EP_CGT].rot2,EPCapturePoints[EP_CGT].rot3); AddObject(EP_CGT_FLAGS,EPTowerFlags[EP_CGT].entry,EPTowerFlags[EP_CGT].map,EPTowerFlags[EP_CGT].x,EPTowerFlags[EP_CGT].y,EPTowerFlags[EP_CGT].z,EPTowerFlags[EP_CGT].o,EPTowerFlags[EP_CGT].rot0,EPTowerFlags[EP_CGT].rot1,EPTowerFlags[EP_CGT].rot2,EPTowerFlags[EP_CGT].rot3); } @@ -478,7 +478,7 @@ void OPvPCapturePointEP_CGT::LinkGraveYard(uint32 team) OPvPCapturePointEP_PWT::OPvPCapturePointEP_PWT(OutdoorPvP *pvp) : OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_FlightMasterSpawned(0) { - AddCapturePoint(EPCapturePoints[EP_PWT].entry,EPCapturePoints[EP_PWT].map,EPCapturePoints[EP_PWT].x,EPCapturePoints[EP_PWT].y,EPCapturePoints[EP_PWT].z,EPCapturePoints[EP_PWT].o,EPCapturePoints[EP_PWT].rot0,EPCapturePoints[EP_PWT].rot1,EPCapturePoints[EP_PWT].rot2,EPCapturePoints[EP_PWT].rot3); + SetCapturePointData(EPCapturePoints[EP_PWT].entry,EPCapturePoints[EP_PWT].map,EPCapturePoints[EP_PWT].x,EPCapturePoints[EP_PWT].y,EPCapturePoints[EP_PWT].z,EPCapturePoints[EP_PWT].o,EPCapturePoints[EP_PWT].rot0,EPCapturePoints[EP_PWT].rot1,EPCapturePoints[EP_PWT].rot2,EPCapturePoints[EP_PWT].rot3); AddObject(EP_PWT_FLAGS,EPTowerFlags[EP_PWT].entry,EPTowerFlags[EP_PWT].map,EPTowerFlags[EP_PWT].x,EPTowerFlags[EP_PWT].y,EPTowerFlags[EP_PWT].z,EPTowerFlags[EP_PWT].o,EPTowerFlags[EP_PWT].rot0,EPTowerFlags[EP_PWT].rot1,EPTowerFlags[EP_PWT].rot2,EPTowerFlags[EP_PWT].rot3); } @@ -711,10 +711,10 @@ bool OutdoorPvPEP::SetupOutdoorPvP() for(int i = 0; i < EPBuffZonesNum; ++i) RegisterZone(EPBuffZones[i]); - m_capturePoints.push_back(new OPvPCapturePointEP_EWT(this)); - m_capturePoints.push_back(new OPvPCapturePointEP_PWT(this)); - m_capturePoints.push_back(new OPvPCapturePointEP_CGT(this)); - m_capturePoints.push_back(new OPvPCapturePointEP_NPT(this)); + AddCapturePoint(new OPvPCapturePointEP_EWT(this)); + AddCapturePoint(new OPvPCapturePointEP_PWT(this)); + AddCapturePoint(new OPvPCapturePointEP_CGT(this)); + AddCapturePoint(new OPvPCapturePointEP_NPT(this)); return true; } @@ -804,7 +804,7 @@ void OutdoorPvPEP::FillInitialWorldStates(WorldPacket & data) data << EP_UI_TOWER_SLIDER_N << uint32(100); for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) { - (*itr)->FillInitialWorldStates(data); + itr->second->FillInitialWorldStates(data); } } diff --git a/src/game/OutdoorPvPHP.cpp b/src/game/OutdoorPvPHP.cpp index 4adb9541053..ef7c9a20594 100644 --- a/src/game/OutdoorPvPHP.cpp +++ b/src/game/OutdoorPvPHP.cpp @@ -36,7 +36,7 @@ const uint32 HP_LANG_CAPTURE_H[HP_TOWER_NUM] = {LANG_OPVP_HP_CAPTURE_BROKENHILL_ OPvPCapturePointHP::OPvPCapturePointHP(OutdoorPvP *pvp,OutdoorPvPHPTowerType type) : OPvPCapturePoint(pvp), m_TowerType(type) { - AddCapturePoint(HPCapturePoints[type].entry, + SetCapturePointData(HPCapturePoints[type].entry, HPCapturePoints[type].map, HPCapturePoints[type].x, HPCapturePoints[type].y, @@ -72,11 +72,11 @@ bool OutdoorPvPHP::SetupOutdoorPvP() for(int i = 0; i < OutdoorPvPHPBuffZonesNum; ++i) RegisterZone(OutdoorPvPHPBuffZones[i]); - m_capturePoints.push_back(new OPvPCapturePointHP(this,HP_TOWER_BROKEN_HILL)); + AddCapturePoint(new OPvPCapturePointHP(this,HP_TOWER_BROKEN_HILL)); - m_capturePoints.push_back(new OPvPCapturePointHP(this,HP_TOWER_OVERLOOK)); + AddCapturePoint(new OPvPCapturePointHP(this,HP_TOWER_OVERLOOK)); - m_capturePoints.push_back(new OPvPCapturePointHP(this,HP_TOWER_STADIUM)); + AddCapturePoint(new OPvPCapturePointHP(this,HP_TOWER_STADIUM)); return true; } @@ -159,7 +159,7 @@ void OutdoorPvPHP::FillInitialWorldStates(WorldPacket &data) data << uint32(HP_UI_TOWER_SLIDER_N) << uint32(100); for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) { - (*itr)->FillInitialWorldStates(data); + itr->second->FillInitialWorldStates(data); } } diff --git a/src/game/OutdoorPvPNA.cpp b/src/game/OutdoorPvPNA.cpp index e4d78e4d717..74517794a1c 100644 --- a/src/game/OutdoorPvPNA.cpp +++ b/src/game/OutdoorPvPNA.cpp @@ -207,7 +207,7 @@ OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFactio m_HalaaState(HALAA_N), m_WyvernStateSouth(0), m_WyvernStateNorth(0), m_WyvernStateWest(0), m_WyvernStateEast(0), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME) { - AddCapturePoint(182210,530,-1572.57,7945.3,-22.475,2.05949,0,0,0.857167,0.515038); + SetCapturePointData(182210,530,-1572.57,7945.3,-22.475,2.05949,0,0,0.857167,0.515038); } bool OutdoorPvPNA::SetupOutdoorPvP() @@ -220,7 +220,7 @@ bool OutdoorPvPNA::SetupOutdoorPvP() m_obj = new OPvPCapturePointNA(this); if(!m_obj) return false; - m_capturePoints.push_back(m_obj); + AddCapturePoint(m_obj); return true; } diff --git a/src/game/OutdoorPvPTF.cpp b/src/game/OutdoorPvPTF.cpp index 2b16d11ef73..5e61196421e 100644 --- a/src/game/OutdoorPvPTF.cpp +++ b/src/game/OutdoorPvPTF.cpp @@ -32,7 +32,7 @@ OutdoorPvPTF::OutdoorPvPTF() OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP *pvp, OutdoorPvPTF_TowerType type) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N) { - AddCapturePoint(TFCapturePoints[type].entry,TFCapturePoints[type].map,TFCapturePoints[type].x,TFCapturePoints[type].y,TFCapturePoints[type].z,TFCapturePoints[type].o,TFCapturePoints[type].rot0,TFCapturePoints[type].rot1,TFCapturePoints[type].rot2,TFCapturePoints[type].rot3); + SetCapturePointData(TFCapturePoints[type].entry,TFCapturePoints[type].map,TFCapturePoints[type].x,TFCapturePoints[type].y,TFCapturePoints[type].z,TFCapturePoints[type].o,TFCapturePoints[type].rot0,TFCapturePoints[type].rot1,TFCapturePoints[type].rot2,TFCapturePoints[type].rot3); } void OPvPCapturePointTF::FillInitialWorldStates(WorldPacket &data) @@ -62,7 +62,7 @@ void OutdoorPvPTF::FillInitialWorldStates(WorldPacket &data) for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) { - (*itr)->FillInitialWorldStates(data); + itr->second->FillInitialWorldStates(data); } } @@ -223,11 +223,11 @@ bool OutdoorPvPTF::SetupOutdoorPvP() for(int i = 0; i < OutdoorPvPTFBuffZonesNum; ++i) RegisterZone(OutdoorPvPTFBuffZones[i]); - m_capturePoints.push_back(new OPvPCapturePointTF(this,TF_TOWER_NW)); - m_capturePoints.push_back(new OPvPCapturePointTF(this,TF_TOWER_N)); - m_capturePoints.push_back(new OPvPCapturePointTF(this,TF_TOWER_NE)); - m_capturePoints.push_back(new OPvPCapturePointTF(this,TF_TOWER_SE)); - m_capturePoints.push_back(new OPvPCapturePointTF(this,TF_TOWER_S)); + AddCapturePoint(new OPvPCapturePointTF(this,TF_TOWER_NW)); + AddCapturePoint(new OPvPCapturePointTF(this,TF_TOWER_N)); + AddCapturePoint(new OPvPCapturePointTF(this,TF_TOWER_NE)); + AddCapturePoint(new OPvPCapturePointTF(this,TF_TOWER_SE)); + AddCapturePoint(new OPvPCapturePointTF(this,TF_TOWER_S)); return true; } diff --git a/src/game/OutdoorPvPZM.cpp b/src/game/OutdoorPvPZM.cpp index b2b717e06c4..550dbcccdc8 100644 --- a/src/game/OutdoorPvPZM.cpp +++ b/src/game/OutdoorPvPZM.cpp @@ -29,7 +29,7 @@ OPvPCapturePointZM_Beacon::OPvPCapturePointZM_Beacon(OutdoorPvP *pvp, ZM_BeaconType type) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(ZM_TOWERSTATE_N) { - AddCapturePoint(ZMCapturePoints[type].entry,ZMCapturePoints[type].map,ZMCapturePoints[type].x,ZMCapturePoints[type].y,ZMCapturePoints[type].z,ZMCapturePoints[type].o,ZMCapturePoints[type].rot0,ZMCapturePoints[type].rot1,ZMCapturePoints[type].rot2,ZMCapturePoints[type].rot3); + SetCapturePointData(ZMCapturePoints[type].entry,ZMCapturePoints[type].map,ZMCapturePoints[type].x,ZMCapturePoints[type].y,ZMCapturePoints[type].z,ZMCapturePoints[type].o,ZMCapturePoints[type].rot0,ZMCapturePoints[type].rot1,ZMCapturePoints[type].rot2,ZMCapturePoints[type].rot3); } void OPvPCapturePointZM_Beacon::FillInitialWorldStates(WorldPacket &data) @@ -182,10 +182,10 @@ bool OutdoorPvPZM::SetupOutdoorPvP() for(int i = 0; i < OutdoorPvPZMBuffZonesNum; ++i) RegisterZone(OutdoorPvPZMBuffZones[i]); - m_capturePoints.push_back(new OPvPCapturePointZM_Beacon(this,ZM_BEACON_WEST)); - m_capturePoints.push_back(new OPvPCapturePointZM_Beacon(this,ZM_BEACON_EAST)); + AddCapturePoint(new OPvPCapturePointZM_Beacon(this,ZM_BEACON_WEST)); + AddCapturePoint(new OPvPCapturePointZM_Beacon(this,ZM_BEACON_EAST)); m_GraveYard = new OPvPCapturePointZM_GraveYard(this); - m_capturePoints.push_back(m_GraveYard); // though the update function isn't used, the handleusego is! + AddCapturePoint(m_GraveYard); // though the update function isn't used, the handleusego is! return true; } @@ -393,7 +393,7 @@ void OutdoorPvPZM::FillInitialWorldStates(WorldPacket &data) data << ZM_WORLDSTATE_UNK_1 << uint32(1); for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) { - (*itr)->FillInitialWorldStates(data); + itr->second->FillInitialWorldStates(data); } } diff --git a/src/game/Wintergrasp.cpp b/src/game/Wintergrasp.cpp index a780e7a91d4..518cc917833 100644 --- a/src/game/Wintergrasp.cpp +++ b/src/game/Wintergrasp.cpp @@ -253,7 +253,7 @@ bool OPvPWintergrasp::SetupOutdoorPvP() } SiegeWorkshop *workshop = new SiegeWorkshop(this, m_buildingStates[guid]); - if(!workshop->AddCapturePoint(capturePointEntry, goData->mapid, goData->posX, goData->posY, goData->posZ)) + if(!workshop->SetCapturePointData(capturePointEntry, goData->mapid, goData->posX, goData->posY, goData->posZ)) { delete workshop; sLog.outError("Cannot add capture point!"); @@ -269,7 +269,7 @@ bool OPvPWintergrasp::SetupOutdoorPvP() workshop->m_engGuid = engGuid; //workshop->AddCre(0, engGuid, creData->id); //sLog.outDebug("Demolisher Engineerer lowguid %u is linked to workshop lowguid %u.", engGuid, guid); - m_capturePoints.push_back(workshop); + AddCapturePoint(workshop); workshop->SetStateByBuildingState(); } }while(result->NextRow()); @@ -375,7 +375,7 @@ void OPvPWintergrasp::OnCreatureCreate(Creature *creature, bool add) else if(entry == CRE_ENG_A || entry == CRE_ENG_H) // demolisher engineers { for(OutdoorPvP::OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - if(SiegeWorkshop *workshop = dynamic_cast<SiegeWorkshop*>(*itr)) + if(SiegeWorkshop *workshop = dynamic_cast<SiegeWorkshop*>(itr->second)) if(workshop->m_engGuid == creature->GetDBTableGUIDLow()) { workshop->m_engineer = add ? creature : NULL; @@ -427,7 +427,7 @@ void OPvPWintergrasp::UpdateAllWorldObject() // update capture points for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - if(SiegeWorkshop *workshop = dynamic_cast<SiegeWorkshop*>(*itr)) + if(SiegeWorkshop *workshop = dynamic_cast<SiegeWorkshop*>(itr->second)) workshop->SetStateByBuildingState(); SendInitWorldStatesTo(); |