diff options
| author | Spp <spp@jorge.gr> | 2011-12-27 10:05:49 +0100 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2011-12-27 10:15:27 +0100 |
| commit | fa9daaf95b9f09f3a442087cbc59abc782814c63 (patch) | |
| tree | c24fe99837993c101de77df1416fde629c993817 /src/server/game/Entities/Object | |
| parent | 8323027e0c15e97e5da5ec0948c447273321d43f (diff) | |
| parent | 317628902462c371dc29ec984803fbfb6412402c (diff) | |
Merge branch 'master' into 4.x and some warning fixes
Diffstat (limited to 'src/server/game/Entities/Object')
| -rwxr-xr-x | src/server/game/Entities/Object/Object.cpp | 27 | ||||
| -rwxr-xr-x | src/server/game/Entities/Object/Object.h | 7 | ||||
| -rwxr-xr-x | src/server/game/Entities/Object/Updates/UpdateData.cpp | 2 |
3 files changed, 25 insertions, 11 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 2820755f00c..590a78ea533 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -82,7 +82,7 @@ Object::Object() : m_PackGUID(sizeof(uint64)+1) WorldObject::~WorldObject() { // this may happen because there are many !create/delete - if (m_isWorldObject && m_currMap) + if (IsWorldObject() && m_currMap) { if (GetTypeId() == TYPEID_CORPSE) { @@ -1174,8 +1174,8 @@ void MovementInfo::OutDebug() sLog->outString("splineElevation: %f", splineElevation); } -WorldObject::WorldObject(): WorldLocation(), -m_isWorldObject(false), m_name(""), m_isActive(false), m_zoneScript(NULL), +WorldObject::WorldObject(bool isWorldObject): WorldLocation(), +m_name(""), m_isActive(false), m_isWorldObject(isWorldObject), m_zoneScript(NULL), m_transport(NULL), m_currMap(NULL), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_notifyflags(0), m_executed_notifies(0) { @@ -1191,6 +1191,17 @@ void WorldObject::SetWorldObject(bool on) GetMap()->AddObjectToSwitchList(this, on); } +bool WorldObject::IsWorldObject() const +{ + if (m_isWorldObject) + return true; + + if (ToCreature() && ToCreature()->m_isTempWorldObject) + return true; + + return false; +} + void WorldObject::setActive(bool on) { if (m_isActive == on) @@ -2004,7 +2015,7 @@ void WorldObject::SetMap(Map* map) m_currMap = map; m_mapId = map->GetId(); m_InstanceId = map->GetInstanceId(); - if (m_isWorldObject) + if (IsWorldObject()) m_currMap->AddWorldObject(this); } @@ -2012,7 +2023,7 @@ void WorldObject::ResetMap() { ASSERT(m_currMap); ASSERT(!IsInWorld()); - if (m_isWorldObject) + if (IsWorldObject()) m_currMap->RemoveWorldObject(this); m_currMap = NULL; //maybe not for corpse @@ -2102,10 +2113,10 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert switch (mask) { case UNIT_MASK_SUMMON: - summon = new TempSummon(properties, summoner); + summon = new TempSummon(properties, summoner, false); break; case UNIT_MASK_GUARDIAN: - summon = new Guardian(properties, summoner); + summon = new Guardian(properties, summoner, false); break; case UNIT_MASK_PUPPET: summon = new Puppet(properties, summoner); @@ -2114,7 +2125,7 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert summon = new Totem(properties, summoner); break; case UNIT_MASK_MINION: - summon = new Minion(properties, summoner); + summon = new Minion(properties, summoner, false); break; default: return NULL; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index ab6b534cac0..0e2cc2fa873 100755 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -561,7 +561,7 @@ class FlaggedValuesArray32 class WorldObject : public Object, public WorldLocation { protected: - explicit WorldObject(); + explicit WorldObject(bool isWorldObject); //note: here it means if it is in grid object list or world object list public: virtual ~WorldObject(); @@ -800,6 +800,9 @@ class WorldObject : public Object, public WorldLocation bool isActiveObject() const { return m_isActive; } void setActive(bool isActiveObject); void SetWorldObject(bool apply); + bool IsPermanentWorldObject() const { return m_isWorldObject; } + bool IsWorldObject() const; + template<class NOTIFIER> void VisitNearbyObject(float const& radius, NOTIFIER& notifier) const { if (IsInWorld()) GetMap()->VisitAll(GetPositionX(), GetPositionY(), radius, notifier); } template<class NOTIFIER> void VisitNearbyGridObject(float const& radius, NOTIFIER& notifier) const { if (IsInWorld()) GetMap()->VisitGrid(GetPositionX(), GetPositionY(), radius, notifier); } template<class NOTIFIER> void VisitNearbyWorldObject(float const& radius, NOTIFIER& notifier) const { if (IsInWorld()) GetMap()->VisitWorld(GetPositionX(), GetPositionY(), radius, notifier); } @@ -812,7 +815,6 @@ class WorldObject : public Object, public WorldLocation double rand_chance() const { return GetMap()->mtRand.randExc(100.0);} #endif - bool m_isWorldObject; uint32 LastUsedScriptID; // Transports @@ -830,6 +832,7 @@ class WorldObject : public Object, public WorldLocation protected: std::string m_name; bool m_isActive; + const bool m_isWorldObject; ZoneScript* m_zoneScript; // transports diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp index a2aba642048..b1ad0c84fad 100755 --- a/src/server/game/Entities/Object/Updates/UpdateData.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp @@ -25,7 +25,7 @@ #include "World.h" #include "zlib.h" -UpdateData::UpdateData(uint16 map) : m_blockCount(0), m_map(map) +UpdateData::UpdateData(uint16 map) : m_map(map), m_blockCount(0) { } |
