diff options
| author | ForesterDev <11771800+ForesterDev@users.noreply.github.com> | 2020-02-08 23:37:34 +0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-08 20:37:34 +0100 |
| commit | 58313fc33092236b4eedbbfb25e10ab42bec6b0e (patch) | |
| tree | 4af2ab726c2b87c5ff9a7a0b96ce5cdbf70741b0 /src/server/game/Server | |
| parent | f87a4543ad886eb119a02f65ba4423fd4f208ec6 (diff) | |
Core/PacketIO: update cinematic packets to new system. Implement CMSG_OPENING_CINEMATIC and CMSG_COMPLETE_MOVIE (#24135)
* Server/PacketIO: Enable SMSG_TRIGGER_CINEMATIC & SMSG_TRIGGER_MOVIE.
* Update SMSG_TRIGGER_CINEMATIC & SMSG_TRIGGER_MOVIE to new Format.
Signed-off-by: AriDEV <aridev666@gmail.com>
# Conflicts:
# src/server/game/Entities/Player/Player.cpp
# src/server/game/Server/Packets/MiscPackets.cpp
# src/server/game/Server/Packets/MiscPackets.h
# src/server/game/Server/Protocol/Opcodes.cpp
* Core/Scripts: Add server-side script support for movie completion (#18308)
# Conflicts:
# src/server/game/Entities/Player/Player.h
# src/server/game/Handlers/MiscHandler.cpp
# src/server/game/Scripting/ScriptMgr.h
# src/server/game/Server/Packets/MiscPackets.h
# src/server/game/Server/Protocol/Opcodes.cpp
# src/server/game/Server/WorldSession.h
* Core/PacketIO: CMSG_COMPLETE_CINEMATIC, CMSG_NEXT_CINEMATIC_CAMERA and enabled some opcodes
# Conflicts:
# src/server/game/Server/Protocol/Opcodes.cpp
# src/server/game/Server/WorldSession.h
* Core/Protocol: Implemented CMSG_OPENING_CINEMATIC
# Conflicts:
# src/server/game/Handlers/GuildHandler.cpp
# src/server/game/Server/Protocol/Opcodes.cpp
# src/server/game/Server/WorldSession.h
* fix build
Co-authored-by: Krudor <erikstrandberg93@hotmail.com>
Co-authored-by: MitchesD <majklprofik@seznam.cz>
Co-authored-by: Kaelima <kaelima@live.se>
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/AllPackets.h | 1 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 52 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 13 |
5 files changed, 79 insertions, 4 deletions
diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h index d78edbbf670..afcf072b91d 100644 --- a/src/server/game/Server/Packets/AllPackets.h +++ b/src/server/game/Server/Packets/AllPackets.h @@ -19,6 +19,7 @@ #define AllPackets_h__ #include "NPCPackets.h" +#include "MiscPackets.h" #include "QueryPackets.h" #include "QuestPackets.h" #include "SpellPackets.h" diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index db7d62304a2..efd9bc1f44e 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -57,6 +57,19 @@ WorldPacket const* WorldPackets::Misc::LoginSetTimeSpeed::Write() return &_worldPacket; } +WorldPacket const* WorldPackets::Misc::TriggerMovie::Write() +{ + _worldPacket << uint32(MovieID); + + return &_worldPacket; +} +WorldPacket const* WorldPackets::Misc::TriggerCinematic::Write() +{ + _worldPacket << uint32(CinematicID); + + return &_worldPacket; +} + WorldPackets::Misc::Weather::Weather() : ServerPacket(SMSG_WEATHER, 4 + 4 + 1) { } WorldPackets::Misc::Weather::Weather(WeatherState weatherID, float intensity /*= 0.0f*/, bool abrupt /*= false*/) diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 4fdb9d05554..0ae667a8fa2 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -87,6 +87,26 @@ namespace WorldPackets int32 GameTimeHolidayOffset = 0; }; + class TriggerCinematic final : public ServerPacket + { + public: + TriggerCinematic() : ServerPacket(SMSG_TRIGGER_CINEMATIC, 4) { } + + WorldPacket const* Write() override; + + uint32 CinematicID = 0; + }; + + class TriggerMovie final : public ServerPacket + { + public: + TriggerMovie() : ServerPacket(SMSG_TRIGGER_MOVIE, 4) { } + + WorldPacket const* Write() override; + + uint32 MovieID = 0; + }; + class TC_GAME_API Weather final : public ServerPacket { public: @@ -136,6 +156,38 @@ namespace WorldPackets uint32 SoundKitID = 0; }; + class CompleteCinematic final : public ClientPacket + { + public: + CompleteCinematic(WorldPacket&& packet) : ClientPacket(CMSG_COMPLETE_CINEMATIC, std::move(packet)) { } + + void Read() override { } + }; + + class NextCinematicCamera final : public ClientPacket + { + public: + NextCinematicCamera(WorldPacket&& packet) : ClientPacket(CMSG_NEXT_CINEMATIC_CAMERA, std::move(packet)) { } + + void Read() override { } + }; + + class CompleteMovie final : public ClientPacket + { + public: + CompleteMovie(WorldPacket&& packet) : ClientPacket(CMSG_COMPLETE_MOVIE, std::move(packet)) { } + + void Read() override { } + }; + + class OpeningCinematic final : public ClientPacket + { + public: + OpeningCinematic(WorldPacket&& packet) : ClientPacket(CMSG_OPENING_CINEMATIC, std::move(packet)) { } + + void Read() override { } + }; + class OverrideLight final : public ServerPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 755e1720506..fa8b1ecfbde 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -377,7 +377,7 @@ void OpcodeTable::Initialize() /*0x0F6*/ DEFINE_HANDLER(CMSG_MOVE_HOVER_ACK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveHoverAck ); /*0x0F7*/ DEFINE_SERVER_OPCODE_HANDLER(MSG_MOVE_HOVER, STATUS_NEVER); /*0x0F8*/ DEFINE_HANDLER(CMSG_TRIGGER_CINEMATIC_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - /*0x0F9*/ DEFINE_HANDLER(CMSG_OPENING_CINEMATIC, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + /*0x0F9*/ DEFINE_HANDLER(CMSG_OPENING_CINEMATIC, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleOpeningCinematic ); /*0x0FA*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_CINEMATIC, STATUS_NEVER); /*0x0FB*/ DEFINE_HANDLER(CMSG_NEXT_CINEMATIC_CAMERA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera ); /*0x0FC*/ DEFINE_HANDLER(CMSG_COMPLETE_CINEMATIC, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCompleteCinematic ); @@ -1253,7 +1253,7 @@ void OpcodeTable::Initialize() /*0x462*/ DEFINE_HANDLER(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory ); /*0x463*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, STATUS_NEVER); /*0x464*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_NEVER); - /*0x465*/ DEFINE_HANDLER(CMSG_COMPLETE_MOVIE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + /*0x465*/ DEFINE_HANDLER(CMSG_COMPLETE_MOVIE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCompleteMovie ); /*0x466*/ DEFINE_HANDLER(CMSG_SET_GLYPH_SLOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); /*0x467*/ DEFINE_HANDLER(CMSG_SET_GLYPH, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); /*0x468*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_EARNED, STATUS_NEVER); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 2fec036002f..66b1a9b99b5 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -83,6 +83,13 @@ namespace WorldPackets class Hello; class TrainerBuySpell; } + namespace Misc + { + class CompleteCinematic; + class CompleteMovie; + class NextCinematicCamera; + class OpeningCinematic; + } namespace Query { class QueryCreature; @@ -484,6 +491,7 @@ class TC_GAME_API WorldSession void HandleAlterAppearance(WorldPacket& recvData); void HandleCharCustomize(WorldPacket& recvData); void HandleCharCustomizeCallback(std::shared_ptr<CharacterCustomizeInfo> customizeInfo, PreparedQueryResult result); + void HandleOpeningCinematic(WorldPackets::Misc::OpeningCinematic& packet); void SendCharCreate(ResponseCodes result); void SendCharDelete(ResponseCodes result); @@ -804,8 +812,9 @@ class TC_GAME_API WorldSession void HandleGetChannelMemberCount(WorldPacket& recvPacket); void HandleSetChannelWatch(WorldPacket& recvPacket); - void HandleCompleteCinematic(WorldPacket& recvPacket); - void HandleNextCinematicCamera(WorldPacket& recvPacket); + void HandleCompleteCinematic(WorldPackets::Misc::CompleteCinematic& packet); + void HandleNextCinematicCamera(WorldPackets::Misc::NextCinematicCamera& packet); + void HandleCompleteMovie(WorldPackets::Misc::CompleteMovie& packet); void HandlePageTextQueryOpcode(WorldPacket& recvPacket); |
