diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index 2db036022d..31102be6b4 100755 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -200,6 +200,7 @@ + diff --git a/OpenRA.Game/Traits/Target.cs b/OpenRA.Game/Traits/Target.cs new file mode 100644 index 0000000000..2462b59881 --- /dev/null +++ b/OpenRA.Game/Traits/Target.cs @@ -0,0 +1,47 @@ +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ +#endregion + +namespace OpenRA.Traits +{ + 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().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; } } + } +} diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index cf0509ba99..3f7d5e079e 100755 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -212,41 +212,6 @@ namespace OpenRA.Traits public interface IPreRenderSelection { void RenderBeforeWorld(WorldRenderer wr, Actor self); } public interface IRenderAsTerrain { IEnumerable 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().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; }