aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/MiscHandler.cpp12
-rw-r--r--src/game/ObjectAccessor.cpp77
-rw-r--r--src/game/ObjectAccessor.h1
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); }