Introduce IDefaultVisibility.
This commit is contained in:
@@ -154,12 +154,7 @@ namespace OpenRA
|
||||
if (a.TraitsImplementing<IVisibilityModifier>().Any(t => !t.IsVisible(a, this)))
|
||||
return false;
|
||||
|
||||
if (a.Owner.IsAlliedWith(this))
|
||||
return true;
|
||||
|
||||
// Actors are hidden under shroud, but not under fog by default
|
||||
// TODO: Shroud exploration should be implemented as an IVisibility modifier!
|
||||
return Shroud.GetVisOrigins(a).Any(Shroud.IsExplored);
|
||||
return a.Trait<IDefaultVisibility>().IsVisible(a, this);
|
||||
}
|
||||
|
||||
#region Scripting interface
|
||||
|
||||
@@ -167,6 +167,8 @@ namespace OpenRA.Traits
|
||||
IEnumerable<Pair<CPos, Color>> RadarSignatureCells(Actor self);
|
||||
}
|
||||
|
||||
public interface IDefaultVisibilityInfo { }
|
||||
public interface IDefaultVisibility { bool IsVisible(Actor self, Player byPlayer); }
|
||||
public interface IVisibilityModifier { bool IsVisible(Actor self, Player byPlayer); }
|
||||
public interface IFogVisibilityModifier { bool HasFogVisibility(Player byPlayer); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user