diff options
| author | Kinzcool <kinzzcool@hotmail.com> | 2014-06-18 23:25:57 -0400 |
|---|---|---|
| committer | Kinzcool <kinzzcool@hotmail.com> | 2014-06-18 23:25:57 -0400 |
| commit | 34572492dd1394dbeaf19bb697a7af8cbf0b6ef7 (patch) | |
| tree | 97bf1565a0d871629d43a3016fb7f56e038e1cb0 /src/server/game/Maps/Map.cpp | |
| parent | 05d17b700d8a679bca2a16dd5d63c94fe3ab99b9 (diff) | |
| parent | f71abd173ebad2da329c04f5ea3b1d8704007303 (diff) | |
Merge branch '4.3.4_phases' of https://github.com/TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
| -rw-r--r-- | src/server/game/Maps/Map.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 0203c7e0821..a1ee67fe6e4 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2520,7 +2520,7 @@ void Map::SendInitTransports(Player* player) // Hack to send out transports UpdateData transData(player->GetMapId()); for (TransportsContainer::const_iterator i = _transports.begin(); i != _transports.end(); ++i) - if (*i != player->GetTransport()) + if (*i != player->GetTransport() && player->IsInPhase(*i)) (*i)->BuildCreateUpdateBlockForPlayer(&transData, player); WorldPacket packet; @@ -2541,6 +2541,26 @@ void Map::SendRemoveTransports(Player* player) player->GetSession()->SendPacket(&packet); } +void Map::SendUpdateTransportVisibility(Player* player, std::set<uint32> const& previousPhases) +{ + // Hack to send out transports + UpdateData transData(player->GetMapId()); + for (TransportsContainer::const_iterator i = _transports.begin(); i != _transports.end(); ++i) + { + if (*i == player->GetTransport()) + continue; + + if (player->IsInPhase(*i) && !Trinity::Containers::Intersects(previousPhases.begin(), previousPhases.end(), (*i)->GetPhases().begin(), (*i)->GetPhases().end())) + (*i)->BuildCreateUpdateBlockForPlayer(&transData, player); + else if (!player->IsInPhase(*i)) + (*i)->BuildOutOfRangeUpdateBlock(&transData); + } + + WorldPacket packet; + transData.BuildPacket(&packet); + player->GetSession()->SendPacket(&packet); +} + inline void Map::setNGrid(NGridType *grid, uint32 x, uint32 y) { if (x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS) |
