From 0451e45e06a820e8ab769a11495c134c50cf1164 Mon Sep 17 00:00:00 2001 From: silver1ce Date: Fri, 15 Jan 2010 19:23:59 +0200 Subject: parse CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE opcode in proper way --HG-- branch : trunk --- src/game/MovementHandler.cpp | 46 +++++++++++++++++++++++++------------------- src/game/Unit.cpp | 11 +---------- 2 files changed, 27 insertions(+), 30 deletions(-) (limited to 'src') 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) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 4347549495e..0def0e22e49 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -3252,18 +3252,9 @@ void Unit::_UpdateSpells( uint32 time ) ++i; } - WorldPacket auras; for (VisibleAuraMap::iterator itr = m_visibleAuras.begin(); itr != m_visibleAuras.end(); ++itr) if (itr->second->IsNeedClientUpdate()) - itr->second->ConstructAuraInfo(auras); - - if(auras.wpos()) - { - WorldPacket data(SMSG_AURA_UPDATE, GetPackGUID().size() + auras.wpos()); - data.append(GetPackGUID()); - data.append(auras); - SendMessageToSet(&data, true); - } + itr->second->ClientUpdate(); _DeleteRemovedAuras(); -- cgit v1.2.3