diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/MiscHandler.cpp | 12 | ||||
-rw-r--r-- | src/game/ObjectAccessor.cpp | 77 | ||||
-rw-r--r-- | src/game/ObjectAccessor.h | 1 |
3 files changed, 54 insertions, 36 deletions
diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp index 0cdb489573a..1bffc4a8b3b 100644 --- a/src/game/MiscHandler.cpp +++ b/src/game/MiscHandler.cpp @@ -1520,13 +1520,15 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode( WorldPacket & recv_data ) sLog.outDebug("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK"); //recv_data.hexlike(); - uint64 guid; - uint32 unk; - uint32 flags; + recv_data.read_skip<uint64>(); // guid + recv_data.read_skip<uint32>(); // unk + + MovementInfo movementInfo; + ReadMovementInfo(recv_data, &movementInfo); - recv_data >> guid >> unk >> flags; + recv_data.read_skip<uint32>(); // unk2 - _player->m_mover->m_movementInfo.flags = flags; + _player->m_mover->m_movementInfo.flags = movementInfo.GetMovementFlags(); } void WorldSession::HandleRequestPetInfoOpcode( WorldPacket & /*recv_data */) diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp index f534a448a4c..aab742aed65 100644 --- a/src/game/ObjectAccessor.cpp +++ b/src/game/ObjectAccessor.cpp @@ -91,43 +91,58 @@ ObjectAccessor::GetCorpse(WorldObject const &u, uint64 guid) return ret; } -Object* ObjectAccessor::GetObjectByTypeMask(WorldObject const &p, uint64 guid, uint32 typemask) +WorldObject* ObjectAccessor::GetWorldObject(WorldObject const &p, uint64 guid) { - Object *obj = NULL; - - if(typemask & TYPEMASK_PLAYER) - { - obj = FindPlayer(guid); - if(obj) - return obj; - } - - if(typemask & TYPEMASK_UNIT) - { - obj = GetCreatureOrPetOrVehicle(p,guid); - if(obj) - return obj; - } - - if(typemask & TYPEMASK_GAMEOBJECT) + switch(GUID_HIPART(guid)) { - obj = p.GetMap()->GetGameObject(guid); - if(obj) - return obj; + case HIGHGUID_PLAYER: return FindPlayer(guid); + case HIGHGUID_GAMEOBJECT: return p.GetMap()->GetGameObject(guid); + case HIGHGUID_VEHICLE: + case HIGHGUID_UNIT: return p.GetMap()->GetCreature(guid); + case HIGHGUID_PET: return GetPet(guid); + case HIGHGUID_DYNAMICOBJECT:return p.GetMap()->GetDynamicObject(guid); + case HIGHGUID_TRANSPORT: return NULL; + case HIGHGUID_CORPSE: return GetCorpse(p,guid); + case HIGHGUID_MO_TRANSPORT: return NULL; + default: break; } - if(typemask & TYPEMASK_DYNAMICOBJECT) - { - obj = p.GetMap()->GetDynamicObject(guid); - if(obj) - return obj; - } + return NULL; +} - if(typemask & TYPEMASK_ITEM && p.GetTypeId() == TYPEID_PLAYER) +Object* ObjectAccessor::GetObjectByTypeMask(WorldObject const &p, uint64 guid, uint32 typemask) +{ + switch(GUID_HIPART(guid)) { - obj = ((Player const &)p).GetItemByGuid( guid ); - if(obj) - return obj; + case HIGHGUID_ITEM: + if(typemask & TYPEMASK_ITEM && p.GetTypeId() == TYPEID_PLAYER) + return ((Player const &)p).GetItemByGuid( guid ); + break; + case HIGHGUID_PLAYER: + if(typemask & TYPEMASK_PLAYER) + return FindPlayer(guid); + break; + case HIGHGUID_GAMEOBJECT: + if(typemask & TYPEMASK_GAMEOBJECT) + return p.GetMap()->GetGameObject(guid); + break; + case HIGHGUID_UNIT: + case HIGHGUID_VEHICLE: + if(typemask & TYPEMASK_UNIT) + return p.GetMap()->GetCreature(guid); + break; + case HIGHGUID_PET: + if(typemask & TYPEMASK_UNIT) + return GetPet(guid); + break; + case HIGHGUID_DYNAMICOBJECT: + if(typemask & TYPEMASK_DYNAMICOBJECT) + return p.GetMap()->GetDynamicObject(guid); + break; + case HIGHGUID_TRANSPORT: + case HIGHGUID_CORPSE: + case HIGHGUID_MO_TRANSPORT: + break; } return NULL; diff --git a/src/game/ObjectAccessor.h b/src/game/ObjectAccessor.h index 3979831657b..5db7dd274bc 100644 --- a/src/game/ObjectAccessor.h +++ b/src/game/ObjectAccessor.h @@ -161,6 +161,7 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor, else return NULL; } + static WorldObject* GetWorldObject(WorldObject const &, uint64); static Object* GetObjectByTypeMask(WorldObject const &, uint64, uint32 typemask); static Creature* GetCreatureOrPetOrVehicle(WorldObject const &, uint64); static Unit* GetUnit(WorldObject const &, uint64 guid) { return GetObjectInWorld(guid, (Unit*)NULL); } |