diff options
author | megamage <none@none.none> | 2011-10-13 13:26:27 -0400 |
---|---|---|
committer | megamage <none@none.none> | 2011-10-13 13:26:27 -0400 |
commit | 5912e2444de0b73b511ec073aa0cbd38b901295c (patch) | |
tree | bc2caaf28328ba90868fade847f5dc3359072f2d | |
parent | dc2bdb8e13f5640840d5d87db7a83c16ee1ab79a (diff) |
Some cleanup of CanSeeOrDetect code.
-rwxr-xr-x | src/server/game/Entities/Creature/Creature.cpp | 10 | ||||
-rwxr-xr-x | src/server/game/Entities/Creature/Creature.h | 4 | ||||
-rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.cpp | 10 | ||||
-rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.h | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Object/Object.cpp | 12 | ||||
-rwxr-xr-x | src/server/game/Entities/Object/Object.h | 6 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 10 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.h | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 7 | ||||
-rw-r--r-- | src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp | 2 |
10 files changed, 24 insertions, 41 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 3842cc1924e..89f52c066a9 100755 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1383,15 +1383,15 @@ void Creature::DeleteFromDB() WorldDatabase.CommitTransaction(trans); } -bool Creature::isVisibleForInState(WorldObject const* seer) const +bool Creature::IsInvisibleDueToDespawn() const { - if (!Unit::isVisibleForInState(seer)) - return false; + if (Unit::IsInvisibleDueToDespawn()) + return true; if (isAlive() || m_corpseRemoveTime > time(NULL)) - return true; + return false; - return false; + return true; } bool Creature::canSeeAlways(WorldObject const* obj) const diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 1d25dd46992..a56b91da13a 100755 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -419,7 +419,7 @@ class MapCreature friend class Map; //map for moving creatures friend class ObjectGridLoader; //grid loader for loading creatures -public: +protected: MapCreature() : _moveState(CREATURE_CELL_MOVE_NONE) {} private: @@ -752,7 +752,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapCreature uint16 m_LootMode; // bitmask, default LOOT_MODE_DEFAULT, determines what loot will be lootable uint32 guid_transport; - bool isVisibleForInState(WorldObject const* seer) const; + bool IsInvisibleDueToDespawn() const; bool canSeeAlways(WorldObject const* obj) const; private: //WaypointMovementGenerator vars diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 6e991bdc005..a0f35bf2ab4 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -854,16 +854,16 @@ bool GameObject::isAlwaysVisibleFor(WorldObject const* seer) const return false; } -bool GameObject::isVisibleForInState(WorldObject const* seer) const +bool GameObject::IsInvisibleDueToDespawn() const { - if (!WorldObject::isVisibleForInState(seer)) - return false; + if (WorldObject::IsInvisibleDueToDespawn()) + return true; // Despawned if (!isSpawned()) - return false; + return true; - return true; + return false; } void GameObject::Respawn() diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 3402eaa64bc..459c526ee4d 100755 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -753,7 +753,7 @@ class GameObject : public WorldObject, public GridObject<GameObject> void TriggeringLinkedGameObject(uint32 trapEntry, Unit* target); bool isAlwaysVisibleFor(WorldObject const* seer) const; - bool isVisibleForInState(WorldObject const* seer) const; + bool IsInvisibleDueToDespawn() const; uint8 getLevelForTarget(WorldObject const* target) const { diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 82c0eb3a169..47be25854ba 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1587,14 +1587,6 @@ bool Position::IsPositionValid() const return Trinity::IsValidMapCoord(m_positionX, m_positionY, m_positionZ, m_orientation); } -bool WorldObject::isValid() const -{ - if (!IsInWorld()) - return false; - - return true; -} - float WorldObject::GetGridActivationRange() const { if (ToPlayer()) @@ -1638,7 +1630,7 @@ bool WorldObject::canSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo if (this == obj) return true; - if (!obj->isValid()) + if (obj->IsNeverVisible()) return false; if (GetMap() != obj->GetMap()) @@ -1704,7 +1696,7 @@ bool WorldObject::canSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo return false; } - if (!obj->isVisibleForInState(this)) + if (obj->IsInvisibleDueToDespawn()) return false; if (!canDetect(obj, ignoreStealth)) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index d27ea23ba7e..faee921a1bb 100755 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -730,14 +730,12 @@ class WorldObject : public Object, public WorldLocation virtual void SaveRespawnTime() {} void AddObjectToRemoveList(); - virtual bool isValid() const; - + virtual bool IsNeverVisible() const { return !IsInWorld(); } virtual bool isAlwaysVisibleFor(WorldObject const* /*seer*/) const { return false; } + virtual bool IsInvisibleDueToDespawn() const { return false; } virtual bool canSeeAlways(WorldObject const* /*obj*/) const { return false; } bool canDetect(WorldObject const* obj, bool ignoreStealth) const; - virtual bool isVisibleForInState(WorldObject const* /*seer*/) const { return true; } - bool canDetectInvisibilityOf(WorldObject const* obj) const; bool canDetectStealthOf(WorldObject const* obj) const; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 01203dd1d54..a5adf1d9371 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -21077,15 +21077,15 @@ WorldLocation Player::GetStartPosition() const return WorldLocation(mapId, info->positionX, info->positionY, info->positionZ, 0); } -bool Player::isValid() const +bool Player::IsNeverVisible() const { - if (!Unit::isValid()) - return false; + if (Unit::IsNeverVisible()) + return true; if (GetSession()->PlayerLogout() || GetSession()->PlayerLoading()) - return false; + return true; - return true; + return false; } bool Player::canSeeAlways(WorldObject const* obj) const diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 05ef060add9..0910e6ba36d 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2326,7 +2326,7 @@ class Player : public Unit, public GridObject<Player> bool HaveAtClient(WorldObject const* u) const { return u == this || m_clientGUIDs.find(u->GetGUID()) != m_clientGUIDs.end(); } - bool isValid() const; + bool IsNeverVisible() const; bool IsVisibleGloballyFor(Player* pl) const; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 7629050ea8a..41fe6337737 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1946,9 +1946,6 @@ class Unit : public WorldObject void SetVisible(bool x); // common function for visibility checks for player/creatures with detection code - - bool isValid() const { return WorldObject::isValid(); } - void SetPhaseMask(uint32 newPhaseMask, bool update);// overwrite WorldObject::SetPhaseMask void UpdateObjectVisibility(bool forced = true); @@ -2287,10 +2284,6 @@ class Unit : public WorldObject uint32 m_unitTypeMask; bool isAlwaysVisibleFor(WorldObject const* seer) const; - bool canSeeAlways(WorldObject const* obj) const { return WorldObject::canSeeAlways(obj); } - - bool isVisibleForInState(WorldObject const* seer) const { return WorldObject::isVisibleForInState(seer); }; - bool isAlwaysDetectableFor(WorldObject const* seer) const; private: bool IsTriggeredAtSpellProcEvent(Unit* pVictim, Aura* aura, SpellInfo const* procSpell, uint32 procFlag, uint32 procExtra, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const* & spellProcEvent); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index 4c74488b6a6..d8fddad41dc 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -270,7 +270,7 @@ class spell_garfrost_permafrost : public SpellScriptLoader { for (std::list<GameObject*>::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr) { - if ((*itr)->isVisibleForInState(target)) + if (!(*itr)->IsInvisibleDueToDespawn()) { if ((*itr)->IsInBetween(caster, target, 4.0f)) { |