aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-04-06 14:12:28 +0200
committerShauren <shauren.trinity@gmail.com>2015-04-06 14:12:28 +0200
commit568a217c2dcf0e2bb1338e62e24b96db01d974f0 (patch)
tree998342664209bdc9fef32e9676a1e1fb09336805 /src/server/game/Server
parent6d743652fc3349582212eb70a1168fefe4504b4f (diff)
Core/PacketIO: Updated and enabled vehicle opcodes
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/VehiclePackets.cpp28
-rw-r--r--src/server/game/Server/Packets/VehiclePackets.h82
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp16
-rw-r--r--src/server/game/Server/WorldSession.h21
4 files changed, 131 insertions, 16 deletions
diff --git a/src/server/game/Server/Packets/VehiclePackets.cpp b/src/server/game/Server/Packets/VehiclePackets.cpp
index 1118b440697..93164eefaf7 100644
--- a/src/server/game/Server/Packets/VehiclePackets.cpp
+++ b/src/server/game/Server/Packets/VehiclePackets.cpp
@@ -39,3 +39,31 @@ WorldPacket const* WorldPackets::Vehicle::SetVehicleRecID::Write()
return &_worldPacket;
}
+
+void WorldPackets::Vehicle::MoveDismissVehicle::Read()
+{
+ _worldPacket >> Status;
+}
+
+void WorldPackets::Vehicle::MoveChangeVehicleSeats::Read()
+{
+ _worldPacket >> Status;
+ _worldPacket >> DstVehicle;
+ _worldPacket >> DstSeatIndex;
+}
+
+void WorldPackets::Vehicle::RequestVehicleSwitchSeat::Read()
+{
+ _worldPacket >> Vehicle;
+ _worldPacket >> SeatIndex;
+}
+
+void WorldPackets::Vehicle::RideVehicleInteract::Read()
+{
+ _worldPacket >> Vehicle;
+}
+
+void WorldPackets::Vehicle::EjectPassenger::Read()
+{
+ _worldPacket >> Passenger;
+}
diff --git a/src/server/game/Server/Packets/VehiclePackets.h b/src/server/game/Server/Packets/VehiclePackets.h
index 72206331720..5b3bafde717 100644
--- a/src/server/game/Server/Packets/VehiclePackets.h
+++ b/src/server/game/Server/Packets/VehiclePackets.h
@@ -25,11 +25,10 @@ namespace WorldPackets
{
namespace Vehicle
{
-
class MoveSetVehicleRecID final : public ServerPacket
{
public:
- MoveSetVehicleRecID() : ServerPacket(SMSG_MOVE_SET_VEHICLE_REC_ID) { }
+ MoveSetVehicleRecID() : ServerPacket(SMSG_MOVE_SET_VEHICLE_REC_ID, 16 + 4 + 4) { }
WorldPacket const* Write() override;
@@ -52,7 +51,7 @@ namespace WorldPackets
class SetVehicleRecID final : public ServerPacket
{
public:
- SetVehicleRecID() : ServerPacket(SMSG_SET_VEHICLE_REC_ID) { }
+ SetVehicleRecID() : ServerPacket(SMSG_SET_VEHICLE_REC_ID, 16 + 4) { }
WorldPacket const* Write() override;
@@ -67,6 +66,83 @@ namespace WorldPackets
WorldPacket const* Write() override { return &_worldPacket; }
};
+
+ class MoveDismissVehicle final : public ClientPacket
+ {
+ public:
+ MoveDismissVehicle(WorldPacket&& packet) : ClientPacket(CMSG_MOVE_DISMISS_VEHICLE, std::move(packet)) { }
+
+ void Read() override;
+
+ MovementInfo Status;
+ };
+
+ class RequestVehiclePrevSeat final : public ClientPacket
+ {
+ public:
+ RequestVehiclePrevSeat(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_VEHICLE_PREV_SEAT, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class RequestVehicleNextSeat final : public ClientPacket
+ {
+ public:
+ RequestVehicleNextSeat(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_VEHICLE_NEXT_SEAT, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class MoveChangeVehicleSeats final : public ClientPacket
+ {
+ public:
+ MoveChangeVehicleSeats(WorldPacket&& packet) : ClientPacket(CMSG_MOVE_CHANGE_VEHICLE_SEATS, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid DstVehicle;
+ MovementInfo Status;
+ uint8 DstSeatIndex = 255;
+ };
+
+ class RequestVehicleSwitchSeat final : public ClientPacket
+ {
+ public:
+ RequestVehicleSwitchSeat(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Vehicle;
+ uint8 SeatIndex = 255;
+ };
+
+ class RideVehicleInteract final : public ClientPacket
+ {
+ public:
+ RideVehicleInteract(WorldPacket&& packet) : ClientPacket(CMSG_RIDE_VEHICLE_INTERACT, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Vehicle;
+ };
+
+ class EjectPassenger final : public ClientPacket
+ {
+ public:
+ EjectPassenger(WorldPacket&& packet) : ClientPacket(CMSG_EJECT_PASSENGER, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Passenger;
+ };
+
+ class RequestVehicleExit final : public ClientPacket
+ {
+ public:
+ RequestVehicleExit(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_VEHICLE_EXIT, std::move(packet)) { }
+
+ void Read() override { }
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 01a31a313c3..d1dcd5521ef 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -352,7 +352,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_DO_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_DO_READY_CHECK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidReadyCheckOpcode );
DEFINE_HANDLER(CMSG_DUEL_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Duel::DuelResponse, &WorldSession::HandleDuelResponseOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_EJECT_PASSENGER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_HANDLER(CMSG_EJECT_PASSENGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::EjectPassenger, &WorldSession::HandleEjectPassenger);
DEFINE_HANDLER(CMSG_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::EmoteClient, &WorldSession::HandleEmoteOpcode);
DEFINE_HANDLER(CMSG_ENABLE_NAGLE, STATUS_NEVER, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess);
DEFINE_OPCODE_HANDLER_OLD(CMSG_ENABLE_TAXI_NODE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes );
@@ -513,9 +513,9 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNT_SPECIAL_ANIM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_MOVE_CHANGE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Movement::ClientPlayerMovement, &WorldSession::HandleMovementOpcodes);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_CHANGE_VEHICLE_SEATS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
+ DEFINE_HANDLER(CMSG_MOVE_CHANGE_VEHICLE_SEATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::MoveChangeVehicleSeats, &WorldSession::HandleMoveChangeVehicleSeats);
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_CHARM_TELEPORT_CHEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_DISMISS_VEHICLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleDismissControlledVehicle );
+ DEFINE_HANDLER(CMSG_MOVE_DISMISS_VEHICLE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::MoveDismissVehicle, &WorldSession::HandleMoveDismissVehicle);
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_MOVE_FALL_LAND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Movement::ClientPlayerMovement, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_FALL_RESET, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Movement::ClientPlayerMovement, &WorldSession::HandleMovementOpcodes);
@@ -678,16 +678,16 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RATED_BATTLEFIELD_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedBattlefieldInfo);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RESEARCH_HISTORY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_STABLED_PETS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleListStabledPetsOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_VEHICLE_EXIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleExit );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
+ DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RequestVehicleExit, &WorldSession::HandleRequestVehicleExit);
+ DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RequestVehicleNextSeat, &WorldSession::HandleRequestVehicleNextSeat);
+ DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RequestVehiclePrevSeat, &WorldSession::HandleRequestVehiclePrevSeat);
+ DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RequestVehicleSwitchSeat, &WorldSession::HandleRequestVehicleSwitchSeat);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_RESET_CHALLENGE_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_RESET_INSTANCES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleResetInstancesOpcode );
DEFINE_HANDLER(CMSG_RESURRECT_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::ResurrectResponse, &WorldSession::HandleResurrectResponse);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REVERT_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_RIDE_VEHICLE_INTERACT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleEnterPlayerVehicle );
+ DEFINE_HANDLER(CMSG_RIDE_VEHICLE_INTERACT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RideVehicleInteract, &WorldSession::HandleRideVehicleInteract);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SAVE_CUF_PROFILES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles );
DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave);
DEFINE_HANDLER(CMSG_SAVE_GUILD_EMBLEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::SaveGuildEmblem, &WorldSession::HandleSaveGuildEmblem);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index c02c3d412aa..03909497370 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -416,6 +416,14 @@ namespace WorldPackets
namespace Vehicle
{
+ class MoveDismissVehicle;
+ class RequestVehiclePrevSeat;
+ class RequestVehicleNextSeat;
+ class MoveChangeVehicleSeats;
+ class RequestVehicleSwitchSeat;
+ class RideVehicleInteract;
+ class EjectPassenger;
+ class RequestVehicleExit;
class MoveSetVehicleRecIdAck;
}
@@ -945,10 +953,15 @@ class WorldSession
void HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet);
void HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveMover& packet);
- void HandleDismissControlledVehicle(WorldPacket& recvData);
- void HandleRequestVehicleExit(WorldPacket& recvData);
+ void HandleMoveDismissVehicle(WorldPackets::Vehicle::MoveDismissVehicle& moveDismissVehicle);
+ void HandleRequestVehiclePrevSeat(WorldPackets::Vehicle::RequestVehiclePrevSeat& requestVehiclePrevSeat);
+ void HandleRequestVehicleNextSeat(WorldPackets::Vehicle::RequestVehicleNextSeat& requestVehicleNextSeat);
+ void HandleMoveChangeVehicleSeats(WorldPackets::Vehicle::MoveChangeVehicleSeats& moveChangeVehicleSeats);
+ void HandleRequestVehicleSwitchSeat(WorldPackets::Vehicle::RequestVehicleSwitchSeat& requestVehicleSwitchSeat);
+ void HandleRideVehicleInteract(WorldPackets::Vehicle::RideVehicleInteract& rideVehicleInteract);
+ void HandleEjectPassenger(WorldPackets::Vehicle::EjectPassenger& ejectPassenger);
+ void HandleRequestVehicleExit(WorldPackets::Vehicle::RequestVehicleExit& requestVehicleExit);
void HandleMoveSetVehicleRecAck(WorldPackets::Vehicle::MoveSetVehicleRecIdAck& setVehicleRecIdAck);
- void HandleChangeSeatsOnControlledVehicle(WorldPacket& recvData);
void HandleMoveTimeSkippedOpcode(WorldPacket& recvData);
void HandleRequestRaidInfoOpcode(WorldPacket& recvData);
@@ -1355,8 +1368,6 @@ class WorldSession
void HandleUITimeRequest(WorldPackets::Misc::UITimeRequest& /*request*/);
void HandleQuestNPCQuery(WorldPacket& recvData);
void HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery& packet);
- void HandleEjectPassenger(WorldPacket& data);
- void HandleEnterPlayerVehicle(WorldPacket& data);
void HandleUpdateProjectilePosition(WorldPacket& recvPacket);
void HandleUpdateMissileTrajectory(WorldPacket& recvPacket);
void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& violenceLevel);