aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/Map.cpp
diff options
context:
space:
mode:
authorKinzcool <kinzzcool@hotmail.com>2014-06-18 23:25:57 -0400
committerKinzcool <kinzzcool@hotmail.com>2014-06-18 23:25:57 -0400
commit34572492dd1394dbeaf19bb697a7af8cbf0b6ef7 (patch)
tree97bf1565a0d871629d43a3016fb7f56e038e1cb0 /src/server/game/Maps/Map.cpp
parent05d17b700d8a679bca2a16dd5d63c94fe3ab99b9 (diff)
parentf71abd173ebad2da329c04f5ea3b1d8704007303 (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.cpp22
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)