split Target out into its own file

This commit is contained in:
Chris Forbes
2011-01-30 21:46:43 +13:00
parent 51ab2b4969
commit 0c4bf5b2b3
3 changed files with 48 additions and 35 deletions

View File

@@ -212,41 +212,6 @@ namespace OpenRA.Traits
public interface IPreRenderSelection { void RenderBeforeWorld(WorldRenderer wr, Actor self); }
public interface IRenderAsTerrain { IEnumerable<Renderable> RenderAsTerrain(Actor self); }
public struct Target // a target: either an actor, or a fixed location.
{
Actor actor;
Player owner;
int2 pos;
bool valid;
public static Target FromActor(Actor a)
{
return new Target
{
actor = a,
valid = (a != null),
owner = (a != null) ? a.Owner : null
};
}
public static Target FromPos(int2 p) { return new Target { pos = p, valid = true }; }
public static Target FromCell(int2 c) { return new Target { pos = Util.CenterOfCell(c), valid = true }; }
public static Target FromOrder(Order o)
{
return o.TargetActor != null
? Target.FromActor(o.TargetActor)
: Target.FromCell(o.TargetLocation);
}
public static readonly Target None = new Target();
public bool IsValid { get { return valid && (actor == null || (actor.IsInWorld && actor.Owner == owner)); } }
public int2 PxPosition { get { return IsActor ? actor.Trait<IHasLocation>().PxPosition : pos; } }
public int2 CenterLocation { get { return PxPosition; } }
public Actor Actor { get { return IsActor ? actor : null; } }
public bool IsActor { get { return actor != null && !actor.Destroyed; } }
}
public interface ITargetable
{
string[] TargetTypes { get; }