Core/Phasing: Reduce differences between branches in GridNotifiers

Port From (https://github.com/TrinityCore/TrinityCore/commit/c3f385c48f5080e64b13b0f31864e20e04e531aa)
This commit is contained in:
hondacrx
2023-01-05 02:44:38 -05:00
parent 4dc96a801c
commit 40db25f49c
8 changed files with 208 additions and 179 deletions
@@ -2704,7 +2704,7 @@ namespace Game.Entities
public bool IsWithinDistInMap(Player player) public bool IsWithinDistInMap(Player player)
{ {
return IsInMap(player) && IsInPhase(player) && IsAtInteractDistance(player); return IsInMap(player) && InSamePhase(player) && IsAtInteractDistance(player);
} }
public SpellInfo GetSpellForLock(Player player) public SpellInfo GetSpellForLock(Player player)
+20 -10
View File
@@ -1269,7 +1269,7 @@ namespace Game.Entities
public virtual bool CanNeverSee(WorldObject obj) public virtual bool CanNeverSee(WorldObject obj)
{ {
return GetMap() != obj.GetMap() || !IsInPhase(obj); return GetMap() != obj.GetMap() || !InSamePhase(obj);
} }
public virtual bool CanAlwaysSee(WorldObject obj) { return false; } public virtual bool CanAlwaysSee(WorldObject obj) { return false; }
@@ -2911,26 +2911,36 @@ namespace Game.Entities
return playerList; return playerList;
} }
public bool IsInPhase(WorldObject obj) public PhaseShift GetPhaseShift() { return _phaseShift; }
public void SetPhaseShift(PhaseShift phaseShift) { _phaseShift = new PhaseShift(phaseShift); }
public PhaseShift GetSuppressedPhaseShift() { return _suppressedPhaseShift; }
public void SetSuppressedPhaseShift(PhaseShift phaseShift) { _suppressedPhaseShift = new PhaseShift(phaseShift); }
public bool InSamePhase(PhaseShift phaseShift)
{
return GetPhaseShift().CanSee(phaseShift);
}
public bool InSamePhase(WorldObject obj)
{ {
return GetPhaseShift().CanSee(obj.GetPhaseShift()); return GetPhaseShift().CanSee(obj.GetPhaseShift());
} }
public static bool InSamePhase(WorldObject a, WorldObject b) public static bool InSamePhase(WorldObject a, WorldObject b)
{ {
return a != null && b != null && a.IsInPhase(b); return a != null && b != null && a.InSamePhase(b);
} }
public virtual float GetCombatReach() { return 0.0f; } // overridden (only) in Unit
public PhaseShift GetPhaseShift() { return _phaseShift; }
public void SetPhaseShift(PhaseShift phaseShift) { _phaseShift = new PhaseShift(phaseShift); }
public PhaseShift GetSuppressedPhaseShift() { return _suppressedPhaseShift; }
public void SetSuppressedPhaseShift(PhaseShift phaseShift) { _suppressedPhaseShift = new PhaseShift(phaseShift); }
public int GetDBPhase() { return _dbPhase; } public int GetDBPhase() { return _dbPhase; }
// if negative it is used as PhaseGroupId // if negative it is used as PhaseGroupId
public void SetDBPhase(int p) { _dbPhase = p; } public void SetDBPhase(int p) { _dbPhase = p; }
public virtual float GetCombatReach() { return 0.0f; } // overridden (only) in Unit
public void PlayDistanceSound(uint soundId, Player target = null) public void PlayDistanceSound(uint soundId, Player target = null)
{ {
PlaySpeakerBoxSound playSpeakerBoxSound = new(GetGUID(), soundId); PlaySpeakerBoxSound playSpeakerBoxSound = new(GetGUID(), soundId);
@@ -3228,7 +3238,7 @@ namespace Game.Entities
public bool IsWithinDistInMap(WorldObject obj, float dist2compare, bool is3D = true, bool incOwnRadius = true, bool incTargetRadius = true) public bool IsWithinDistInMap(WorldObject obj, float dist2compare, bool is3D = true, bool incOwnRadius = true, bool incTargetRadius = true)
{ {
return obj && IsInMap(obj) && IsInPhase(obj) && _IsWithinDist(obj, dist2compare, is3D, incOwnRadius, incTargetRadius); return obj && IsInMap(obj) && InSamePhase(obj) && _IsWithinDist(obj, dist2compare, is3D, incOwnRadius, incTargetRadius);
} }
public bool IsWithinLOS(float ox, float oy, float oz, LineOfSightChecks checks = LineOfSightChecks.All, ModelIgnoreFlags ignoreFlags = ModelIgnoreFlags.Nothing) public bool IsWithinLOS(float ox, float oy, float oz, LineOfSightChecks checks = LineOfSightChecks.All, ModelIgnoreFlags ignoreFlags = ModelIgnoreFlags.Nothing)
+2 -2
View File
@@ -691,7 +691,7 @@ namespace Game.Entities
foreach (var player in GetMap().GetPlayers()) foreach (var player in GetMap().GetPlayers())
{ {
if (player.GetTransport() != this && player.IsInPhase(this)) if (player.GetTransport() != this && player.InSamePhase(this))
{ {
UpdateData data = new(GetMap().GetId()); UpdateData data = new(GetMap().GetId());
BuildCreateUpdateBlockForPlayer(data, player); BuildCreateUpdateBlockForPlayer(data, player);
@@ -761,7 +761,7 @@ namespace Game.Entities
return; return;
foreach (var playerReference in players) foreach (var playerReference in players)
if (playerReference.IsInPhase(this)) if (playerReference.InSamePhase(this))
BuildFieldsUpdate(playerReference, data_map); BuildFieldsUpdate(playerReference, data_map);
ClearUpdateMask(true); ClearUpdateMask(true);
+1 -1
View File
@@ -1467,7 +1467,7 @@ namespace Game.Entities
public bool IsWithinMeleeRangeAt(Position pos, Unit obj) public bool IsWithinMeleeRangeAt(Position pos, Unit obj)
{ {
if (!obj || !IsInMap(obj) || !IsInPhase(obj)) if (!obj || !IsInMap(obj) || !InSamePhase(obj))
return false; return false;
float dx = pos.GetPositionX() - obj.GetPositionX(); float dx = pos.GetPositionX() - obj.GetPositionX();
+2 -2
View File
@@ -679,7 +679,7 @@ namespace Game.Entities
public bool IsWithinBoundaryRadius(Unit obj) public bool IsWithinBoundaryRadius(Unit obj)
{ {
if (!obj || !IsInMap(obj) || !IsInPhase(obj)) if (!obj || !IsInMap(obj) || !InSamePhase(obj))
return false; return false;
float objBoundaryRadius = Math.Max(obj.GetBoundingRadius(), SharedConst.MinMeleeReach); float objBoundaryRadius = Math.Max(obj.GetBoundingRadius(), SharedConst.MinMeleeReach);
@@ -1110,7 +1110,7 @@ namespace Game.Entities
public bool IsWithinCombatRange(Unit obj, float dist2compare) public bool IsWithinCombatRange(Unit obj, float dist2compare)
{ {
if (!obj || !IsInMap(obj) || !IsInPhase(obj)) if (!obj || !IsInMap(obj) || !InSamePhase(obj))
return false; return false;
float dx = GetPositionX() - obj.GetPositionX(); float dx = GetPositionX() - obj.GetPositionX();
+2 -2
View File
@@ -3094,7 +3094,7 @@ namespace Game.Entities
else else
{ {
Unit caster = aura.GetCaster(); Unit caster = aura.GetCaster();
if (!caster || !caster.IsInPhase(this)) if (!caster || !caster.InSamePhase(this))
RemoveOwnedAura(pair); RemoveOwnedAura(pair);
} }
} }
@@ -3104,7 +3104,7 @@ namespace Game.Entities
for (var i = 0; i < m_scAuras.Count; i++) for (var i = 0; i < m_scAuras.Count; i++)
{ {
var aura = m_scAuras[i]; var aura = m_scAuras[i];
if (aura.GetUnitOwner() != this && (!onPhaseChange || !aura.GetUnitOwner().IsInPhase(this))) if (aura.GetUnitOwner() != this && (!onPhaseChange || !aura.GetUnitOwner().InSamePhase(this)))
aura.Remove(); aura.Remove();
} }
} }
+177 -158
View File
@@ -404,6 +404,7 @@ namespace Game.Maps
{ {
WorldObject i_source; WorldObject i_source;
T i_packetSender; T i_packetSender;
PhaseShift i_phaseShift;
float i_distSq; float i_distSq;
Team team; Team team;
Player skipped_receiver; Player skipped_receiver;
@@ -412,6 +413,7 @@ namespace Game.Maps
{ {
i_source = src; i_source = src;
i_packetSender = packetSender; i_packetSender = packetSender;
i_phaseShift = src.GetPhaseShift();
i_distSq = dist * dist; i_distSq = dist * dist;
if (own_team_only && src.IsPlayer()) if (own_team_only && src.IsPlayer())
team = src.ToPlayer().GetEffectiveTeam(); team = src.ToPlayer().GetEffectiveTeam();
@@ -424,7 +426,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(i_source)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (player.GetExactDist2dSq(i_source.GetPosition()) > i_distSq) if (player.GetExactDist2dSq(i_source.GetPosition()) > i_distSq)
@@ -448,7 +450,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(i_source)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (creature.GetExactDist2dSq(i_source.GetPosition()) > i_distSq) if (creature.GetExactDist2dSq(i_source.GetPosition()) > i_distSq)
@@ -469,7 +471,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
DynamicObject dynamicObject = objs[i]; DynamicObject dynamicObject = objs[i];
if (!dynamicObject.IsInPhase(i_source)) if (!dynamicObject.InSamePhase(i_phaseShift))
continue; continue;
if (dynamicObject.GetExactDist2dSq(i_source.GetPosition()) > i_distSq) if (dynamicObject.GetExactDist2dSq(i_source.GetPosition()) > i_distSq)
@@ -503,12 +505,14 @@ namespace Game.Maps
{ {
Unit i_source; Unit i_source;
T i_packetSender; T i_packetSender;
PhaseShift i_phaseShift;
float i_distSq; float i_distSq;
public MessageDistDelivererToHostile(Unit src, T packetSender, float dist) public MessageDistDelivererToHostile(Unit src, T packetSender, float dist)
{ {
i_source = src; i_source = src;
i_packetSender = packetSender; i_packetSender = packetSender;
i_phaseShift = src.GetPhaseShift();
i_distSq = dist * dist; i_distSq = dist * dist;
} }
@@ -517,7 +521,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(i_source)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (player.GetExactDist2dSq(i_source) > i_distSq) if (player.GetExactDist2dSq(i_source) > i_distSq)
@@ -541,7 +545,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(i_source)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (creature.GetExactDist2dSq(i_source) > i_distSq) if (creature.GetExactDist2dSq(i_source) > i_distSq)
@@ -562,7 +566,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
DynamicObject dynamicObject = objs[i]; DynamicObject dynamicObject = objs[i];
if (!dynamicObject.IsInPhase(i_source)) if (!dynamicObject.InSamePhase(i_phaseShift))
continue; continue;
if (dynamicObject.GetExactDist2dSq(i_source) > i_distSq) if (dynamicObject.GetExactDist2dSq(i_source) > i_distSq)
@@ -615,9 +619,12 @@ namespace Game.Maps
public class PlayerWorker : Notifier public class PlayerWorker : Notifier
{ {
PhaseShift i_phaseShift;
Action<Player> action;
public PlayerWorker(WorldObject searcher, Action<Player> _action) public PlayerWorker(WorldObject searcher, Action<Player> _action)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
action = _action; action = _action;
} }
@@ -626,20 +633,20 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (player.IsInPhase(_searcher)) if (player.InSamePhase(i_phaseShift))
action.Invoke(player); action.Invoke(player);
} }
} }
WorldObject _searcher;
Action<Player> action;
} }
public class CreatureWorker : Notifier public class CreatureWorker : Notifier
{ {
PhaseShift i_phaseShift;
IDoWork<Creature> Do;
public CreatureWorker(WorldObject searcher, IDoWork<Creature> _Do) public CreatureWorker(WorldObject searcher, IDoWork<Creature> _Do)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
Do = _Do; Do = _Do;
} }
@@ -648,21 +655,21 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (creature.IsInPhase(_searcher)) if (creature.InSamePhase(i_phaseShift))
Do.Invoke(creature); Do.Invoke(creature);
} }
} }
WorldObject _searcher;
IDoWork<Creature> Do;
} }
public class GameObjectWorker : Notifier public class GameObjectWorker : Notifier
{ {
public GameObjectWorker(WorldObject searcher, IDoWork<GameObject> _Do) PhaseShift i_phaseShift;
IDoWork<GameObject> _do;
public GameObjectWorker(WorldObject searcher, IDoWork<GameObject> @do)
{ {
Do = _Do; i_phaseShift = searcher.GetPhaseShift();
_searcher = searcher; _do = @do;
} }
public override void Visit(IList<GameObject> objs) public override void Visit(IList<GameObject> objs)
@@ -670,21 +677,22 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
GameObject gameObject = objs[i]; GameObject gameObject = objs[i];
if (gameObject.IsInPhase(_searcher)) if (gameObject.InSamePhase(i_phaseShift))
Do.Invoke(gameObject); _do.Invoke(gameObject);
} }
} }
WorldObject _searcher;
IDoWork<GameObject> Do;
} }
public class WorldObjectWorker : Notifier public class WorldObjectWorker : Notifier
{ {
GridMapTypeMask i_mapTypeMask;
PhaseShift i_phaseShift;
IDoWork<WorldObject> i_do;
public WorldObjectWorker(WorldObject searcher, IDoWork<WorldObject> _do, GridMapTypeMask mapTypeMask = GridMapTypeMask.All) public WorldObjectWorker(WorldObject searcher, IDoWork<WorldObject> _do, GridMapTypeMask mapTypeMask = GridMapTypeMask.All)
{ {
i_mapTypeMask = mapTypeMask; i_mapTypeMask = mapTypeMask;
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_do = _do; i_do = _do;
} }
@@ -696,7 +704,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
GameObject gameObject = objs[i]; GameObject gameObject = objs[i];
if (gameObject.IsInPhase(_searcher)) if (gameObject.InSamePhase(i_phaseShift))
i_do.Invoke(gameObject); i_do.Invoke(gameObject);
} }
} }
@@ -709,7 +717,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (player.IsInPhase(_searcher)) if (player.InSamePhase(i_phaseShift))
i_do.Invoke(player); i_do.Invoke(player);
} }
} }
@@ -722,7 +730,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (creature.IsInPhase(_searcher)) if (creature.InSamePhase(i_phaseShift))
i_do.Invoke(creature); i_do.Invoke(creature);
} }
} }
@@ -735,7 +743,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Corpse corpse = objs[i]; Corpse corpse = objs[i];
if (corpse.IsInPhase(_searcher)) if (corpse.InSamePhase(i_phaseShift))
i_do.Invoke(corpse); i_do.Invoke(corpse);
} }
} }
@@ -748,7 +756,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
DynamicObject dynamicObject = objs[i]; DynamicObject dynamicObject = objs[i];
if (dynamicObject.IsInPhase(_searcher)) if (dynamicObject.InSamePhase(i_phaseShift))
i_do.Invoke(dynamicObject); i_do.Invoke(dynamicObject);
} }
} }
@@ -761,7 +769,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
AreaTrigger areaTrigger = objs[i]; AreaTrigger areaTrigger = objs[i];
if (areaTrigger.IsInPhase(_searcher)) if (areaTrigger.InSamePhase(i_phaseShift))
i_do.Invoke(areaTrigger); i_do.Invoke(areaTrigger);
} }
} }
@@ -774,7 +782,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
SceneObject sceneObject = objs[i]; SceneObject sceneObject = objs[i];
if (sceneObject.IsInPhase(_searcher)) if (sceneObject.InSamePhase(i_phaseShift))
i_do.Invoke(sceneObject); i_do.Invoke(sceneObject);
} }
} }
@@ -787,14 +795,10 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Conversation conversation = objs[i]; Conversation conversation = objs[i];
if (conversation.IsInPhase(_searcher)) if (conversation.InSamePhase(i_phaseShift))
i_do.Invoke(conversation); i_do.Invoke(conversation);
} }
} }
GridMapTypeMask i_mapTypeMask;
WorldObject _searcher;
IDoWork<WorldObject> i_do;
} }
public class ResetNotifier : Notifier public class ResetNotifier : Notifier
@@ -889,11 +893,15 @@ namespace Game.Maps
public class PlayerDistWorker : Notifier public class PlayerDistWorker : Notifier
{ {
public PlayerDistWorker(WorldObject searcher, float _dist, IDoWork<Player> _Do) WorldObject i_searcher;
float i_dist;
IDoWork<Player> _do;
public PlayerDistWorker(WorldObject searcher, float _dist, IDoWork<Player> @do)
{ {
i_searcher = searcher; i_searcher = searcher;
i_dist = _dist; i_dist = _dist;
Do = _Do; _do = @do;
} }
public override void Visit(IList<Player> objs) public override void Visit(IList<Player> objs)
@@ -901,14 +909,10 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (player.IsInPhase(i_searcher) && player.IsWithinDist(i_searcher, i_dist)) if (player.InSamePhase(i_searcher) && player.IsWithinDist(i_searcher, i_dist))
Do.Invoke(player); _do.Invoke(player);
} }
} }
WorldObject i_searcher;
float i_dist;
IDoWork<Player> Do;
} }
public class CallOfHelpCreatureInRangeDo : IDoWork<Creature> public class CallOfHelpCreatureInRangeDo : IDoWork<Creature>
@@ -996,10 +1000,15 @@ namespace Game.Maps
//Searchers //Searchers
public class WorldObjectSearcher : Notifier public class WorldObjectSearcher : Notifier
{ {
GridMapTypeMask i_mapTypeMask;
PhaseShift i_phaseShift;
WorldObject i_object;
ICheck<WorldObject> i_check;
public WorldObjectSearcher(WorldObject searcher, ICheck<WorldObject> check, GridMapTypeMask mapTypeMask = GridMapTypeMask.All) public WorldObjectSearcher(WorldObject searcher, ICheck<WorldObject> check, GridMapTypeMask mapTypeMask = GridMapTypeMask.All)
{ {
i_mapTypeMask = mapTypeMask; i_mapTypeMask = mapTypeMask;
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1015,7 +1024,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
GameObject gameObject = objs[i]; GameObject gameObject = objs[i];
if (!gameObject.IsInPhase(_searcher)) if (!gameObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(gameObject)) if (i_check.Invoke(gameObject))
@@ -1038,7 +1047,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(_searcher)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(player)) if (i_check.Invoke(player))
@@ -1061,7 +1070,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(_searcher)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
@@ -1084,7 +1093,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Corpse corpse = objs[i]; Corpse corpse = objs[i];
if (!corpse.IsInPhase(_searcher)) if (!corpse.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(corpse)) if (i_check.Invoke(corpse))
@@ -1107,7 +1116,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
DynamicObject dynamicObject = objs[i]; DynamicObject dynamicObject = objs[i];
if (!dynamicObject.IsInPhase(_searcher)) if (!dynamicObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(dynamicObject)) if (i_check.Invoke(dynamicObject))
@@ -1130,7 +1139,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
AreaTrigger areaTrigger = objs[i]; AreaTrigger areaTrigger = objs[i];
if (!areaTrigger.IsInPhase(_searcher)) if (!areaTrigger.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(areaTrigger)) if (i_check.Invoke(areaTrigger))
@@ -1153,7 +1162,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
SceneObject sceneObject = objs[i]; SceneObject sceneObject = objs[i];
if (!sceneObject.IsInPhase(_searcher)) if (!sceneObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(sceneObject)) if (i_check.Invoke(sceneObject))
@@ -1176,7 +1185,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Conversation conversation = objs[i]; Conversation conversation = objs[i];
if (!conversation.IsInPhase(_searcher)) if (!conversation.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(conversation)) if (i_check.Invoke(conversation))
@@ -1188,18 +1197,19 @@ namespace Game.Maps
} }
public WorldObject GetTarget() { return i_object; } public WorldObject GetTarget() { return i_object; }
GridMapTypeMask i_mapTypeMask;
WorldObject i_object;
WorldObject _searcher;
ICheck<WorldObject> i_check;
} }
public class WorldObjectLastSearcher : Notifier public class WorldObjectLastSearcher : Notifier
{ {
GridMapTypeMask i_mapTypeMask;
PhaseShift i_phaseShift;
WorldObject i_object;
ICheck<WorldObject> i_check;
public WorldObjectLastSearcher(WorldObject searcher, ICheck<WorldObject> check, GridMapTypeMask mapTypeMask = GridMapTypeMask.All) public WorldObjectLastSearcher(WorldObject searcher, ICheck<WorldObject> check, GridMapTypeMask mapTypeMask = GridMapTypeMask.All)
{ {
i_mapTypeMask = mapTypeMask; i_mapTypeMask = mapTypeMask;
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1211,7 +1221,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
GameObject gameObject = objs[i]; GameObject gameObject = objs[i];
if (!gameObject.IsInPhase(_searcher)) if (!gameObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(gameObject)) if (i_check.Invoke(gameObject))
@@ -1227,7 +1237,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(_searcher)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(player)) if (i_check.Invoke(player))
@@ -1243,7 +1253,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(_searcher)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
@@ -1259,7 +1269,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Corpse corpse = objs[i]; Corpse corpse = objs[i];
if (!corpse.IsInPhase(_searcher)) if (!corpse.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(corpse)) if (i_check.Invoke(corpse))
@@ -1275,7 +1285,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
DynamicObject dynamicObject = objs[i]; DynamicObject dynamicObject = objs[i];
if (!dynamicObject.IsInPhase(_searcher)) if (!dynamicObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(dynamicObject)) if (i_check.Invoke(dynamicObject))
@@ -1291,7 +1301,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
AreaTrigger areaTrigger = objs[i]; AreaTrigger areaTrigger = objs[i];
if (!areaTrigger.IsInPhase(_searcher)) if (!areaTrigger.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(areaTrigger)) if (i_check.Invoke(areaTrigger))
@@ -1307,7 +1317,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
SceneObject sceneObject = objs[i]; SceneObject sceneObject = objs[i];
if (!sceneObject.IsInPhase(_searcher)) if (!sceneObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(sceneObject)) if (i_check.Invoke(sceneObject))
@@ -1323,7 +1333,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Conversation conversation = objs[i]; Conversation conversation = objs[i];
if (!conversation.IsInPhase(_searcher)) if (!conversation.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(conversation)) if (i_check.Invoke(conversation))
@@ -1332,19 +1342,19 @@ namespace Game.Maps
} }
public WorldObject GetTarget() { return i_object; } public WorldObject GetTarget() { return i_object; }
GridMapTypeMask i_mapTypeMask;
WorldObject i_object;
WorldObject _searcher;
ICheck<WorldObject> i_check;
} }
public class WorldObjectListSearcher : Notifier public class WorldObjectListSearcher : Notifier
{ {
GridMapTypeMask i_mapTypeMask;
List<WorldObject> i_objects;
PhaseShift i_phaseShift;
ICheck<WorldObject> i_check;
public WorldObjectListSearcher(WorldObject searcher, List<WorldObject> objects, ICheck<WorldObject> check, GridMapTypeMask mapTypeMask = GridMapTypeMask.All) public WorldObjectListSearcher(WorldObject searcher, List<WorldObject> objects, ICheck<WorldObject> check, GridMapTypeMask mapTypeMask = GridMapTypeMask.All)
{ {
i_mapTypeMask = mapTypeMask; i_mapTypeMask = mapTypeMask;
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_objects = objects; i_objects = objects;
i_check = check; i_check = check;
} }
@@ -1452,18 +1462,17 @@ namespace Game.Maps
i_objects.Add(conversation); i_objects.Add(conversation);
} }
} }
GridMapTypeMask i_mapTypeMask;
List<WorldObject> i_objects;
WorldObject _searcher;
ICheck<WorldObject> i_check;
} }
public class GameObjectSearcher : Notifier public class GameObjectSearcher : Notifier
{ {
PhaseShift i_phaseShift;
GameObject i_object;
ICheck<GameObject> i_check;
public GameObjectSearcher(WorldObject searcher, ICheck<GameObject> check) public GameObjectSearcher(WorldObject searcher, ICheck<GameObject> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1476,7 +1485,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
GameObject gameObject = objs[i]; GameObject gameObject = objs[i];
if (!gameObject.IsInPhase(_searcher)) if (!gameObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(gameObject)) if (i_check.Invoke(gameObject))
@@ -1488,16 +1497,17 @@ namespace Game.Maps
} }
public GameObject GetTarget() { return i_object; } public GameObject GetTarget() { return i_object; }
WorldObject _searcher;
GameObject i_object;
ICheck<GameObject> i_check;
} }
public class GameObjectLastSearcher : Notifier public class GameObjectLastSearcher : Notifier
{ {
PhaseShift i_phaseShift;
GameObject i_object;
ICheck<GameObject> i_check;
public GameObjectLastSearcher(WorldObject searcher, ICheck<GameObject> check) public GameObjectLastSearcher(WorldObject searcher, ICheck<GameObject> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1506,7 +1516,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
GameObject gameObject = objs[i]; GameObject gameObject = objs[i];
if (!gameObject.IsInPhase(_searcher)) if (!gameObject.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(gameObject)) if (i_check.Invoke(gameObject))
@@ -1515,16 +1525,17 @@ namespace Game.Maps
} }
public GameObject GetTarget() { return i_object; } public GameObject GetTarget() { return i_object; }
WorldObject _searcher;
GameObject i_object;
ICheck<GameObject> i_check;
} }
public class GameObjectListSearcher : Notifier public class GameObjectListSearcher : Notifier
{ {
PhaseShift i_phaseShift;
List<GameObject> i_objects;
ICheck<GameObject> i_check;
public GameObjectListSearcher(WorldObject searcher, List<GameObject> objects, ICheck<GameObject> check) public GameObjectListSearcher(WorldObject searcher, List<GameObject> objects, ICheck<GameObject> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_objects = objects; i_objects = objects;
i_check = check; i_check = check;
} }
@@ -1534,22 +1545,22 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
GameObject gameObject = objs[i]; GameObject gameObject = objs[i];
if (gameObject.IsInPhase(_searcher)) if (gameObject.InSamePhase(i_phaseShift))
if (i_check.Invoke(gameObject)) if (i_check.Invoke(gameObject))
i_objects.Add(gameObject); i_objects.Add(gameObject);
} }
} }
WorldObject _searcher;
List<GameObject> i_objects;
ICheck<GameObject> i_check;
} }
public class UnitSearcher : Notifier public class UnitSearcher : Notifier
{ {
PhaseShift i_phaseShift;
Unit i_object;
ICheck<Unit> i_check;
public UnitSearcher(WorldObject searcher, ICheck<Unit> check) public UnitSearcher(WorldObject searcher, ICheck<Unit> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1558,7 +1569,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(_searcher)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(player)) if (i_check.Invoke(player))
@@ -1574,7 +1585,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(_searcher)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
@@ -1586,16 +1597,17 @@ namespace Game.Maps
} }
public Unit GetTarget() { return i_object; } public Unit GetTarget() { return i_object; }
WorldObject _searcher;
Unit i_object;
ICheck<Unit> i_check;
} }
public class UnitLastSearcher : Notifier public class UnitLastSearcher : Notifier
{ {
PhaseShift i_phaseShift;
Unit i_object;
ICheck<Unit> i_check;
public UnitLastSearcher(WorldObject searcher, ICheck<Unit> check) public UnitLastSearcher(WorldObject searcher, ICheck<Unit> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1604,7 +1616,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(_searcher)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(player)) if (i_check.Invoke(player))
@@ -1617,7 +1629,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(_searcher)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
@@ -1626,16 +1638,17 @@ namespace Game.Maps
} }
public Unit GetTarget() { return i_object; } public Unit GetTarget() { return i_object; }
WorldObject _searcher;
Unit i_object;
ICheck<Unit> i_check;
} }
public class UnitListSearcher : Notifier public class UnitListSearcher : Notifier
{ {
PhaseShift i_phaseShift;
List<Unit> i_objects;
ICheck<Unit> i_check;
public UnitListSearcher(WorldObject searcher, List<Unit> objects, ICheck<Unit> check) public UnitListSearcher(WorldObject searcher, List<Unit> objects, ICheck<Unit> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_objects = objects; i_objects = objects;
i_check = check; i_check = check;
} }
@@ -1645,7 +1658,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (player.IsInPhase(_searcher)) if (player.InSamePhase(i_phaseShift))
if (i_check.Invoke(player)) if (i_check.Invoke(player))
i_objects.Add(player); i_objects.Add(player);
} }
@@ -1656,22 +1669,22 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (creature.IsInPhase(_searcher)) if (creature.InSamePhase(i_phaseShift))
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
i_objects.Add(creature); i_objects.Add(creature);
} }
} }
WorldObject _searcher;
List<Unit> i_objects;
ICheck<Unit> i_check;
} }
public class CreatureSearcher : Notifier public class CreatureSearcher : Notifier
{ {
PhaseShift i_phaseShift;
Creature i_object;
ICheck<Creature> i_check;
public CreatureSearcher(WorldObject searcher, ICheck<Creature> check) public CreatureSearcher(WorldObject searcher, ICheck<Creature> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1684,7 +1697,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(_searcher)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
@@ -1696,16 +1709,17 @@ namespace Game.Maps
} }
public Creature GetTarget() { return i_object; } public Creature GetTarget() { return i_object; }
WorldObject _searcher;
Creature i_object;
ICheck<Creature> i_check;
} }
public class CreatureLastSearcher : Notifier public class CreatureLastSearcher : Notifier
{ {
PhaseShift i_phaseShift;
Creature i_object;
ICheck<Creature> i_check;
public CreatureLastSearcher(WorldObject searcher, ICheck<Creature> check) public CreatureLastSearcher(WorldObject searcher, ICheck<Creature> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1714,7 +1728,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (!creature.IsInPhase(_searcher)) if (!creature.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
@@ -1723,16 +1737,17 @@ namespace Game.Maps
} }
public Creature GetTarget() { return i_object; } public Creature GetTarget() { return i_object; }
WorldObject _searcher;
Creature i_object;
ICheck<Creature> i_check;
} }
public class CreatureListSearcher : Notifier public class CreatureListSearcher : Notifier
{ {
PhaseShift i_phaseShift;
List<Creature> i_objects;
ICheck<Creature> i_check;
public CreatureListSearcher(WorldObject searcher, List<Creature> objects, ICheck<Creature> check) public CreatureListSearcher(WorldObject searcher, List<Creature> objects, ICheck<Creature> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_objects = objects; i_objects = objects;
i_check = check; i_check = check;
} }
@@ -1742,22 +1757,22 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Creature creature = objs[i]; Creature creature = objs[i];
if (creature.IsInPhase(_searcher)) if (creature.InSamePhase(i_phaseShift))
if (i_check.Invoke(creature)) if (i_check.Invoke(creature))
i_objects.Add(creature); i_objects.Add(creature);
} }
} }
WorldObject _searcher;
List<Creature> i_objects;
ICheck<Creature> i_check;
} }
public class PlayerSearcher : Notifier public class PlayerSearcher : Notifier
{ {
PhaseShift i_phaseShift;
Player i_object;
ICheck<Player> i_check;
public PlayerSearcher(WorldObject searcher, ICheck<Player> check) public PlayerSearcher(WorldObject searcher, ICheck<Player> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1770,7 +1785,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(_searcher)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(player)) if (i_check.Invoke(player))
@@ -1782,16 +1797,17 @@ namespace Game.Maps
} }
public Player GetTarget() { return i_object; } public Player GetTarget() { return i_object; }
WorldObject _searcher;
Player i_object;
ICheck<Player> i_check;
} }
public class PlayerLastSearcher : Notifier public class PlayerLastSearcher : Notifier
{ {
PhaseShift i_phaseShift;
Player i_object;
ICheck<Player> i_check;
public PlayerLastSearcher(WorldObject searcher, ICheck<Player> check) public PlayerLastSearcher(WorldObject searcher, ICheck<Player> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_check = check; i_check = check;
} }
@@ -1800,7 +1816,7 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (!player.IsInPhase(_searcher)) if (!player.InSamePhase(i_phaseShift))
continue; continue;
if (i_check.Invoke(player)) if (i_check.Invoke(player))
@@ -1809,16 +1825,23 @@ namespace Game.Maps
} }
public Player GetTarget() { return i_object; } public Player GetTarget() { return i_object; }
WorldObject _searcher;
Player i_object;
ICheck<Player> i_check;
} }
public class PlayerListSearcher : Notifier public class PlayerListSearcher : Notifier
{ {
PhaseShift i_phaseShift;
List<Unit> i_objects;
ICheck<Player> i_check;
public PlayerListSearcher(WorldObject searcher, List<Unit> objects, ICheck<Player> check) public PlayerListSearcher(WorldObject searcher, List<Unit> objects, ICheck<Player> check)
{ {
_searcher = searcher; i_phaseShift = searcher.GetPhaseShift();
i_objects = objects;
i_check = check;
}
public PlayerListSearcher(PhaseShift phaseShift, List<Unit> objects, ICheck<Player> check)
{
i_phaseShift = phaseShift;
i_objects = objects; i_objects = objects;
i_check = check; i_check = check;
} }
@@ -1828,15 +1851,11 @@ namespace Game.Maps
for (var i = 0; i < objs.Count; ++i) for (var i = 0; i < objs.Count; ++i)
{ {
Player player = objs[i]; Player player = objs[i];
if (player.IsInPhase(_searcher)) if (player.InSamePhase(i_phaseShift))
if (i_check.Invoke(player)) if (i_check.Invoke(player))
i_objects.Add(player); i_objects.Add(player);
} }
} }
WorldObject _searcher;
List<Unit> i_objects;
ICheck<Player> i_check;
} }
//Checks //Checks
@@ -2042,7 +2061,7 @@ namespace Game.Maps
if (i_incTargetRadius) if (i_incTargetRadius)
searchRadius += u.GetCombatReach(); searchRadius += u.GetCombatReach();
if (!u.IsInMap(i_obj) || !u.IsInPhase(i_obj) || !u.IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius)) if (!u.IsInMap(i_obj) || !u.InSamePhase(i_obj) || !u.IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius))
return false; return false;
if (!i_funit.IsFriendlyTo(u)) if (!i_funit.IsFriendlyTo(u))
@@ -2097,7 +2116,7 @@ namespace Game.Maps
if (i_incTargetRadius) if (i_incTargetRadius)
searchRadius += u.GetCombatReach(); searchRadius += u.GetCombatReach();
return u.IsInMap(_source) && u.IsInPhase(_source) && u.IsWithinDoubleVerticalCylinder(_source, searchRadius, searchRadius); return u.IsInMap(_source) && u.InSamePhase(_source) && u.IsWithinDoubleVerticalCylinder(_source, searchRadius, searchRadius);
} }
WorldObject _source; WorldObject _source;
@@ -2199,7 +2218,7 @@ namespace Game.Maps
if (i_incTargetRadius) if (i_incTargetRadius)
searchRadius += u.GetCombatReach(); searchRadius += u.GetCombatReach();
return u.IsInMap(i_obj) && u.IsInPhase(i_obj) && u.IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius); return u.IsInMap(i_obj) && u.InSamePhase(i_obj) && u.IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius);
} }
WorldObject i_obj; WorldObject i_obj;
@@ -2647,7 +2666,7 @@ namespace Game.Maps
public bool Invoke(WorldObject go) public bool Invoke(WorldObject go)
{ {
return m_pObject.IsWithinDist(go, m_fRange, false) && m_pObject.IsInPhase(go); return m_pObject.IsWithinDist(go, m_fRange, false) && m_pObject.InSamePhase(go);
} }
WorldObject m_pObject; WorldObject m_pObject;
+3 -3
View File
@@ -481,7 +481,7 @@ namespace Game.Maps
// Broadcast creation to players // Broadcast creation to players
foreach (var player in GetPlayers()) foreach (var player in GetPlayers())
{ {
if (player.GetTransport() != obj && player.IsInPhase(obj)) if (player.GetTransport() != obj && player.InSamePhase(obj))
{ {
var data = new UpdateData(GetId()); var data = new UpdateData(GetId());
obj.BuildCreateUpdateBlockForPlayer(data, player); obj.BuildCreateUpdateBlockForPlayer(data, player);
@@ -1744,7 +1744,7 @@ namespace Game.Maps
foreach (Transport transport in _transports) foreach (Transport transport in _transports)
{ {
if (transport.IsInWorld && transport != player.GetTransport() && player.IsInPhase(transport)) if (transport.IsInWorld && transport != player.GetTransport() && player.InSamePhase(transport))
{ {
transport.BuildCreateUpdateBlockForPlayer(transData, player); transport.BuildCreateUpdateBlockForPlayer(transData, player);
player.m_visibleTransports.Add(transport.GetGUID()); player.m_visibleTransports.Add(transport.GetGUID());
@@ -1783,7 +1783,7 @@ namespace Game.Maps
continue; continue;
var hasTransport = player.m_visibleTransports.Contains(transport.GetGUID()); var hasTransport = player.m_visibleTransports.Contains(transport.GetGUID());
if (player.IsInPhase(transport)) if (player.InSamePhase(transport))
{ {
if (!hasTransport) if (!hasTransport)
{ {