diff options
author | Subv <subv2112@gmail.com> | 2014-07-13 16:52:38 -0500 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2014-07-13 16:52:38 -0500 |
commit | dfdc19f3bc57757965d1d3b760a27622e411eb05 (patch) | |
tree | 08025cfd4bbdef881149291e926eaf1d4676f441 /src/server/game/Battlegrounds/Battleground.cpp | |
parent | f14399d7887b221eb61378863c9c314adbcdebc1 (diff) |
Merge branch `master` into `boost`
Conflicts:
BattlegroundMgr.h
Diffstat (limited to 'src/server/game/Battlegrounds/Battleground.cpp')
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 4e077979b3e..a0d35d4c742 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -152,18 +152,6 @@ Battleground::Battleground() m_StartMaxDist = 0.0f; ScriptId = 0; - m_TeamStartLocX[TEAM_ALLIANCE] = 0; - m_TeamStartLocX[TEAM_HORDE] = 0; - - m_TeamStartLocY[TEAM_ALLIANCE] = 0; - m_TeamStartLocY[TEAM_HORDE] = 0; - - m_TeamStartLocZ[TEAM_ALLIANCE] = 0; - m_TeamStartLocZ[TEAM_HORDE] = 0; - - m_TeamStartLocO[TEAM_ALLIANCE] = 0; - m_TeamStartLocO[TEAM_HORDE] = 0; - m_ArenaTeamIds[TEAM_ALLIANCE] = 0; m_ArenaTeamIds[TEAM_HORDE] = 0; @@ -300,16 +288,15 @@ inline void Battleground::_CheckSafePositions(uint32 diff) { m_ValidStartPositionTimer = 0; - float x, y, z, o; for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(itr->first)) { Position pos = player->GetPosition(); - GetTeamStartLoc(player->GetBGTeam(), x, y, z, o); - if (pos.GetExactDistSq(x, y, z) > maxDist) + Position const* startPos = GetTeamStartPosition(Battleground::GetTeamIndexByTeamId(player->GetBGTeam())); + if (pos.GetExactDistSq(startPos) > maxDist) { TC_LOG_DEBUG("bg.battleground", "BATTLEGROUND: Sending %s back to start location (map: %u) (possible exploit)", player->GetName().c_str(), GetMapId()); - player->TeleportTo(GetMapId(), x, y, z, o); + player->TeleportTo(GetMapId(), startPos->GetPositionX(), startPos->GetPositionY(), startPos->GetPositionZ(), startPos->GetOrientation()); } } } @@ -550,7 +537,7 @@ inline void Battleground::_ProcessJoin(uint32 diff) } // Announce BG starting if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE)) - sWorld->SendWorldText(LANG_BG_STARTED_ANNOUNCE_WORLD, GetName(), GetMinLevel(), GetMaxLevel()); + sWorld->SendWorldText(LANG_BG_STARTED_ANNOUNCE_WORLD, GetName().c_str(), GetMinLevel(), GetMaxLevel()); } } } @@ -614,13 +601,16 @@ inline Player* Battleground::_GetPlayerForTeam(uint32 teamId, BattlegroundPlayer return player; } -void Battleground::SetTeamStartLoc(uint32 TeamID, float X, float Y, float Z, float O) +void Battleground::SetTeamStartPosition(TeamId teamId, Position const& pos) +{ + ASSERT(teamId < TEAM_NEUTRAL); + StartPosition[teamId] = pos; +} + +Position const* Battleground::GetTeamStartPosition(TeamId teamId) const { - TeamId idx = GetTeamIndexByTeamId(TeamID); - m_TeamStartLocX[idx] = X; - m_TeamStartLocY[idx] = Y; - m_TeamStartLocZ[idx] = Z; - m_TeamStartLocO[idx] = O; + ASSERT(teamId < TEAM_NEUTRAL); + return &StartPosition[teamId]; } void Battleground::SendPacketToAll(WorldPacket* packet) |