aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorForesterDev <11771800+ForesterDev@users.noreply.github.com>2020-02-08 23:37:34 +0400
committerGitHub <noreply@github.com>2020-02-08 20:37:34 +0100
commit58313fc33092236b4eedbbfb25e10ab42bec6b0e (patch)
tree4af2ab726c2b87c5ff9a7a0b96ce5cdbf70741b0 /src/server/game/Server
parentf87a4543ad886eb119a02f65ba4423fd4f208ec6 (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.h1
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp13
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h52
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h13
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);