diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-04-06 14:12:28 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-04-06 14:12:28 +0200 |
commit | 568a217c2dcf0e2bb1338e62e24b96db01d974f0 (patch) | |
tree | 998342664209bdc9fef32e9676a1e1fb09336805 /src | |
parent | 6d743652fc3349582212eb70a1168fefe4504b4f (diff) |
Core/PacketIO: Updated and enabled vehicle opcodes
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/VehicleHandler.cpp | 166 | ||||
-rw-r--r-- | src/server/game/Server/Packets/VehiclePackets.cpp | 28 | ||||
-rw-r--r-- | src/server/game/Server/Packets/VehiclePackets.h | 82 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 21 |
5 files changed, 212 insertions, 101 deletions
diff --git a/src/server/game/Handlers/VehicleHandler.cpp b/src/server/game/Handlers/VehicleHandler.cpp index 475aabe01d0..6e78ee62c18 100644 --- a/src/server/game/Handlers/VehicleHandler.cpp +++ b/src/server/game/Handlers/VehicleHandler.cpp @@ -24,104 +24,106 @@ #include "ObjectAccessor.h" #include "VehiclePackets.h" -void WorldSession::HandleDismissControlledVehicle(WorldPacket &recvData) +void WorldSession::HandleMoveDismissVehicle(WorldPackets::Vehicle::MoveDismissVehicle& moveDismissVehicle) { - TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_MOVE_DISMISS_VEHICLE"); - ObjectGuid vehicleGUID = _player->GetCharmGUID(); - - if (!vehicleGUID) // something wrong here... - { - recvData.rfinish(); // prevent warnings spam + if (vehicleGUID.IsEmpty()) return; - } - MovementInfo mi; - _player->ValidateMovementInfo(&mi); - - _player->m_movementInfo = mi; + _player->ValidateMovementInfo(&moveDismissVehicle.Status); + _player->m_movementInfo = moveDismissVehicle.Status; _player->ExitVehicle(); } -void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket& recvData) +void WorldSession::HandleRequestVehiclePrevSeat(WorldPackets::Vehicle::RequestVehiclePrevSeat& /*requestVehiclePrevSeat*/) { - TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_MOVE_CHANGE_VEHICLE_SEATS"); - Unit* vehicle_base = GetPlayer()->GetVehicleBase(); if (!vehicle_base) + return; + + VehicleSeatEntry const* seat = GetPlayer()->GetVehicle()->GetSeatForPassenger(GetPlayer()); + if (!seat->CanSwitchFromSeat()) { - recvData.rfinish(); // prevent warnings spam + TC_LOG_ERROR("network", "HandleRequestVehiclePrevSeat: %s tried to switch seats but current seatflags %u don't permit that.", + GetPlayer()->GetGUID().ToString().c_str(), seat->Flags); return; } + GetPlayer()->ChangeSeat(-1, false); +} + +void WorldSession::HandleRequestVehicleNextSeat(WorldPackets::Vehicle::RequestVehicleNextSeat& /*requestVehicleNextSeat*/) +{ + Unit* vehicle_base = GetPlayer()->GetVehicleBase(); + if (!vehicle_base) + return; + VehicleSeatEntry const* seat = GetPlayer()->GetVehicle()->GetSeatForPassenger(GetPlayer()); if (!seat->CanSwitchFromSeat()) { - recvData.rfinish(); // prevent warnings spam - TC_LOG_ERROR("network", "HandleChangeSeatsOnControlledVehicle, Opcode: %u, %s tried to switch seats but current seatflags %u don't permit that.", - recvData.GetOpcode(), GetPlayer()->GetGUID().ToString().c_str(), seat->Flags); + TC_LOG_ERROR("network", "HandleRequestVehicleNextSeat: %s tried to switch seats but current seatflags %u don't permit that.", + GetPlayer()->GetGUID().ToString().c_str(), seat->Flags); return; } - switch (recvData.GetOpcode()) + GetPlayer()->ChangeSeat(-1, true); +} + +void WorldSession::HandleMoveChangeVehicleSeats(WorldPackets::Vehicle::MoveChangeVehicleSeats& moveChangeVehicleSeats) +{ + Unit* vehicle_base = GetPlayer()->GetVehicleBase(); + if (!vehicle_base) + return; + + VehicleSeatEntry const* seat = GetPlayer()->GetVehicle()->GetSeatForPassenger(GetPlayer()); + if (!seat->CanSwitchFromSeat()) { - case CMSG_REQUEST_VEHICLE_PREV_SEAT: - GetPlayer()->ChangeSeat(-1, false); - break; - case CMSG_REQUEST_VEHICLE_NEXT_SEAT: - GetPlayer()->ChangeSeat(-1, true); - break; - case CMSG_MOVE_CHANGE_VEHICLE_SEATS: - { - MovementInfo movementInfo; - GetPlayer()->ValidateMovementInfo(&movementInfo); - vehicle_base->m_movementInfo = movementInfo; - - ObjectGuid accessory; // = extra.Data.guid; - int8 seatId = -1;//extra.Data.byteData; - - if (vehicle_base->GetGUID() != movementInfo.guid) - return; - - if (!accessory) - GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next - else if (Unit* vehUnit = ObjectAccessor::GetUnit(*GetPlayer(), accessory)) - { - if (Vehicle* vehicle = vehUnit->GetVehicleKit()) - if (vehicle->HasEmptySeat(seatId)) - vehUnit->HandleSpellClick(GetPlayer(), seatId); - } - break; - } - case CMSG_REQUEST_VEHICLE_SWITCH_SEAT: - { - ObjectGuid guid; // current vehicle guid - recvData >> guid.ReadAsPacked(); - - int8 seatId; - recvData >> seatId; - - if (vehicle_base->GetGUID() == guid) - GetPlayer()->ChangeSeat(seatId); - else if (Unit* vehUnit = ObjectAccessor::GetUnit(*GetPlayer(), guid)) - if (Vehicle* vehicle = vehUnit->GetVehicleKit()) - if (vehicle->HasEmptySeat(seatId)) - vehUnit->HandleSpellClick(GetPlayer(), seatId); - break; - } - default: - break; + TC_LOG_ERROR("network", "HandleMoveChangeVehicleSeats: %s tried to switch seats but current seatflags %u don't permit that.", + GetPlayer()->GetGUID().ToString().c_str(), seat->Flags); + return; } + + GetPlayer()->ValidateMovementInfo(&moveChangeVehicleSeats.Status); + + if (vehicle_base->GetGUID() != moveChangeVehicleSeats.Status.guid) + return; + + vehicle_base->m_movementInfo = moveChangeVehicleSeats.Status; + + if (moveChangeVehicleSeats.DstVehicle.IsEmpty()) + GetPlayer()->ChangeSeat(-1, moveChangeVehicleSeats.DstSeatIndex != 255); + else if (Unit* vehUnit = ObjectAccessor::GetUnit(*GetPlayer(), moveChangeVehicleSeats.DstVehicle)) + if (Vehicle* vehicle = vehUnit->GetVehicleKit()) + if (vehicle->HasEmptySeat(moveChangeVehicleSeats.DstSeatIndex)) + vehUnit->HandleSpellClick(GetPlayer(), int8(moveChangeVehicleSeats.DstSeatIndex)); } -void WorldSession::HandleEnterPlayerVehicle(WorldPacket& data) +void WorldSession::HandleRequestVehicleSwitchSeat(WorldPackets::Vehicle::RequestVehicleSwitchSeat& requestVehicleSwitchSeat) { - // Read guid - ObjectGuid guid; - data >> guid; + Unit* vehicle_base = GetPlayer()->GetVehicleBase(); + if (!vehicle_base) + return; + + VehicleSeatEntry const* seat = GetPlayer()->GetVehicle()->GetSeatForPassenger(GetPlayer()); + if (!seat->CanSwitchFromSeat()) + { + TC_LOG_ERROR("network", "HandleRequestVehicleSwitchSeat: %s tried to switch seats but current seatflags %u don't permit that.", + GetPlayer()->GetGUID().ToString().c_str(), seat->Flags); + return; + } + + if (vehicle_base->GetGUID() == requestVehicleSwitchSeat.Vehicle) + GetPlayer()->ChangeSeat(int8(requestVehicleSwitchSeat.SeatIndex)); + else if (Unit* vehUnit = ObjectAccessor::GetUnit(*GetPlayer(), requestVehicleSwitchSeat.Vehicle)) + if (Vehicle* vehicle = vehUnit->GetVehicleKit()) + if (vehicle->HasEmptySeat(int8(requestVehicleSwitchSeat.SeatIndex))) + vehUnit->HandleSpellClick(GetPlayer(), int8(requestVehicleSwitchSeat.SeatIndex)); +} - if (Player* player = ObjectAccessor::FindPlayer(guid)) +void WorldSession::HandleRideVehicleInteract(WorldPackets::Vehicle::RideVehicleInteract& rideVehicleInteract) +{ + if (Player* player = ObjectAccessor::FindPlayer(rideVehicleInteract.Vehicle)) { if (!player->GetVehicleKit()) return; @@ -134,31 +136,27 @@ void WorldSession::HandleEnterPlayerVehicle(WorldPacket& data) } } -void WorldSession::HandleEjectPassenger(WorldPacket& data) +void WorldSession::HandleEjectPassenger(WorldPackets::Vehicle::EjectPassenger& ejectPassenger) { Vehicle* vehicle = _player->GetVehicleKit(); if (!vehicle) { - data.rfinish(); // prevent warnings spam TC_LOG_ERROR("network", "HandleEjectPassenger: %s is not in a vehicle!", GetPlayer()->GetGUID().ToString().c_str()); return; } - ObjectGuid guid; - data >> guid; - - if (guid.IsUnit()) + if (ejectPassenger.Passenger.IsUnit()) { - Unit* unit = ObjectAccessor::GetUnit(*_player, guid); + Unit* unit = ObjectAccessor::GetUnit(*_player, ejectPassenger.Passenger); if (!unit) // creatures can be ejected too from player mounts { - TC_LOG_ERROR("network", "%s tried to eject %s from vehicle, but the latter was not found in world!", GetPlayer()->GetGUID().ToString().c_str(), guid.ToString().c_str()); + TC_LOG_ERROR("network", "%s tried to eject %s from vehicle, but the latter was not found in world!", GetPlayer()->GetGUID().ToString().c_str(), ejectPassenger.Passenger.ToString().c_str()); return; } if (!unit->IsOnVehicle(vehicle->GetBase())) { - TC_LOG_ERROR("network", "%s tried to eject %s, but they are not in the same vehicle", GetPlayer()->GetGUID().ToString().c_str(), guid.ToString().c_str()); + TC_LOG_ERROR("network", "%s tried to eject %s, but they are not in the same vehicle", GetPlayer()->GetGUID().ToString().c_str(), ejectPassenger.Passenger.ToString().c_str()); return; } @@ -167,16 +165,14 @@ void WorldSession::HandleEjectPassenger(WorldPacket& data) if (seat->IsEjectable()) unit->ExitVehicle(); else - TC_LOG_ERROR("network", "%s attempted to eject %s from non-ejectable seat.", GetPlayer()->GetGUID().ToString().c_str(), guid.ToString().c_str()); + TC_LOG_ERROR("network", "%s attempted to eject %s from non-ejectable seat.", GetPlayer()->GetGUID().ToString().c_str(), ejectPassenger.Passenger.ToString().c_str()); } else - TC_LOG_ERROR("network", "HandleEjectPassenger: %s tried to eject invalid %s ", GetPlayer()->GetGUID().ToString().c_str(), guid.ToString().c_str()); + TC_LOG_ERROR("network", "HandleEjectPassenger: %s tried to eject invalid %s ", GetPlayer()->GetGUID().ToString().c_str(), ejectPassenger.Passenger.ToString().c_str()); } -void WorldSession::HandleRequestVehicleExit(WorldPacket& /*recvData*/) +void WorldSession::HandleRequestVehicleExit(WorldPackets::Vehicle::RequestVehicleExit& /*requestVehicleExit*/) { - TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_REQUEST_VEHICLE_EXIT"); - if (Vehicle* vehicle = GetPlayer()->GetVehicle()) { if (VehicleSeatEntry const* seat = vehicle->GetSeatForPassenger(GetPlayer())) 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); |