Introduce IDefaultVisibility.

This commit is contained in:
Paul Chote
2015-06-13 15:42:13 +01:00
parent 0a2757d0e0
commit b887d2bfd7
7 changed files with 115 additions and 18 deletions

View File

@@ -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

View File

@@ -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); }