aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/characters/2015_03_29_00_characters.sql (renamed from sql/updates/characters/2015_03_15_00_characters.sql)0
-rw-r--r--sql/updates/world/2015_03_29_01_world.sql (renamed from sql/updates/world/2015_03_15_00_world.sql)0
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp33
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp27
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h15
5 files changed, 49 insertions, 26 deletions
diff --git a/sql/updates/characters/2015_03_15_00_characters.sql b/sql/updates/characters/2015_03_29_00_characters.sql
index b9bb746c2f7..b9bb746c2f7 100644
--- a/sql/updates/characters/2015_03_15_00_characters.sql
+++ b/sql/updates/characters/2015_03_29_00_characters.sql
diff --git a/sql/updates/world/2015_03_15_00_world.sql b/sql/updates/world/2015_03_29_01_world.sql
index 3eee1cae11a..3eee1cae11a 100644
--- a/sql/updates/world/2015_03_15_00_world.sql
+++ b/sql/updates/world/2015_03_29_01_world.sql
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 7d0236fe9eb..e8e6febbe34 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1399,32 +1399,13 @@ void WorldSession::HandleUITimeRequest(WorldPackets::Misc::UITimeRequest& /*requ
void WorldSession::SendSetPhaseShift(std::set<uint32> const& phaseIds, std::set<uint32> const& terrainswaps, std::set<uint32> const& worldMapAreaSwaps)
{
- WorldPacket data(SMSG_PHASE_SHIFT_CHANGE, 1 + 8 + 4 + 4 + 4 + 4 + 2 * phaseIds.size() + 4 + terrainswaps.size() * 2);
-
- data << _player->GetGUID(); // Client
- data << uint32(phaseIds.size() ? 0 : 8); // PhaseShiftFlags
-
- data << uint32(phaseIds.size()); // PhaseShiftCount
- data << _player->GetGUID(); // PersonalGUID
- for (std::set<uint32>::const_iterator itr = phaseIds.begin(); itr != phaseIds.end(); ++itr)
- {
- data << uint16(1); // PhaseFlags
- data << uint16(*itr); // Id
- }
-
- data << uint32(terrainswaps.size()) * 2; // Active terrain swaps
- for (std::set<uint32>::const_iterator itr = terrainswaps.begin(); itr != terrainswaps.end(); ++itr)
- data << uint16(*itr);
-
- data << uint32(0); // Inactive terrain swaps
- //for (uint8 i = 0; i < inactiveSwapsCount; ++i)
- // data << uint16(0);
-
- data << uint32(worldMapAreaSwaps.size()) * 2;
- for (auto mapSwap : worldMapAreaSwaps)
- data << uint16(mapSwap); // WorldMapArea.dbc id (controls map display)
-
- SendPacket(&data);
+ WorldPackets::Misc::PhaseShift phaseShift;
+ phaseShift.ClientGUID = _player->GetGUID();
+ phaseShift.PersonalGUID = _player->GetGUID();
+ phaseShift.PhaseShifts = phaseIds;
+ phaseShift.VisibleMapIDs = terrainswaps;
+ phaseShift.UiWorldMapAreaIDSwaps = worldMapAreaSwaps;
+ SendPacket(phaseShift.Write());
}
// Battlefield and Battleground
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index 1905ab3e3ce..009f1d901d5 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -379,3 +379,30 @@ WorldPacket const* WorldPackets::Misc::RandomRoll::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Misc::PhaseShift::Write()
+{
+ _worldPacket << ClientGUID; // CLientGUID
+ _worldPacket << uint32(PhaseShifts.size() ? 0 : 8); // PhaseShiftFlags
+ _worldPacket << uint32(PhaseShifts.size()); // PhaseShiftCount
+ _worldPacket << PersonalGUID; // PersonalGUID
+ for (uint32 phase : PhaseShifts)
+ {
+ _worldPacket << uint16(1); // PhaseFlags
+ _worldPacket << uint16(phase); // PhaseID
+ }
+
+ _worldPacket << uint32(VisibleMapIDs.size() * 2); // Active terrain swaps size
+ for (uint32 map : VisibleMapIDs)
+ _worldPacket << uint16(map); // Active terrain swap map id
+
+ _worldPacket << uint32(PreloadMapIDs.size() * 2); // Inactive terrain swaps size
+ for (uint32 map : PreloadMapIDs)
+ _worldPacket << uint16(map); // Inactive terrain swap map id
+
+ _worldPacket << uint32(UiWorldMapAreaIDSwaps.size() * 2); // UI map swaps size
+ for (uint32 map : UiWorldMapAreaIDSwaps)
+ _worldPacket << uint16(map); // UI map id, WorldMapArea.dbc, controls map display
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 15dd164f994..b41e1cb8b50 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -538,6 +538,21 @@ namespace WorldPackets
WorldPacket const* Write() override { return &_worldPacket; }
};
+
+ class PhaseShift final : public ServerPacket
+ {
+ public:
+ PhaseShift() : ServerPacket(SMSG_PHASE_SHIFT_CHANGE, 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid ClientGUID;
+ ObjectGuid PersonalGUID;
+ std::set<uint32> PhaseShifts;
+ std::set<uint32> PreloadMapIDs;
+ std::set<uint32> UiWorldMapAreaIDSwaps;
+ std::set<uint32> VisibleMapIDs;
+ };
}
}