diff options
Diffstat (limited to 'src/game/MovementHandler.cpp')
-rw-r--r-- | src/game/MovementHandler.cpp | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index def605bc8c7..7bf669c35d4 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -585,32 +585,38 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) if(!GetPlayer()->GetVehicle()) return; - if(recv_data.GetOpcode() == CMSG_REQUEST_VEHICLE_PREV_SEAT) + switch (recv_data.GetOpcode()) { + case CMSG_REQUEST_VEHICLE_PREV_SEAT: GetPlayer()->ChangeSeat(-1, false); - return; - } - else if(recv_data.GetOpcode() == CMSG_REQUEST_VEHICLE_NEXT_SEAT) - { + break; + case CMSG_REQUEST_VEHICLE_NEXT_SEAT: GetPlayer()->ChangeSeat(-1, true); - return; - } - else if(recv_data.GetOpcode() == CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE) - ReadMovementInfo(recv_data, &GetPlayer()->GetVehicleBase()->m_movementInfo); + break; + case CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE: + { + uint64 guid; // current vehicle guid + if(!recv_data.readPackGUID(guid)) + return; - uint64 guid; - if(!recv_data.readPackGUID(guid)) - return; + ReadMovementInfo(recv_data, &GetPlayer()->GetVehicleBase()->m_movementInfo); - int8 seatId; - recv_data >> seatId; + uint64 accessory; // accessory guid + if(!recv_data.readPackGUID(accessory)) + return; - if(!guid) - GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next - else if(Unit *vehUnit = ObjectAccessor::GetUnit(*GetPlayer(), guid)) - if(Vehicle *vehicle = vehUnit->GetVehicleKit()) - if(vehicle->HasEmptySeat(seatId)) - GetPlayer()->EnterVehicle(vehicle, seatId); + int8 seatId; + recv_data >> seatId; + + 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))
+ GetPlayer()->EnterVehicle(vehicle, seatId); + } + break; + } } void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data) |