diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index 5eef46011b..1d70d801e8 100755 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -87,8 +87,6 @@ - - @@ -189,7 +187,6 @@ - diff --git a/OpenRA.Game/Traits/Player/PlaceBuilding.cs b/OpenRA.Game/Traits/Player/PlaceBuilding.cs index 3222b53488..260027ab1d 100644 --- a/OpenRA.Game/Traits/Player/PlaceBuilding.cs +++ b/OpenRA.Game/Traits/Player/PlaceBuilding.cs @@ -83,11 +83,10 @@ namespace OpenRA.Traits .Where( x => x.Actor.Info.Traits.Get().Produces.Contains( unit.Category ) ) .ToList(); var producer = producers.Where( x => x.Trait.IsPrimary ).Concat( producers ) - .Select( x => x.Actor ) .FirstOrDefault(); - if( producer != null ) - producer.traits.Get().PlayCustomAnim( producer, "build" ); + if( producer.Actor != null ) + producer.Actor.traits.WithInterface().First().PlayCustomAnim( producer.Actor, "build" ); } static int GetNumBuildables(Player p) diff --git a/OpenRA.Game/Traits/Render/RenderSimple.cs b/OpenRA.Game/Traits/Render/RenderSimple.cs index 015d696c77..dc98564233 100644 --- a/OpenRA.Game/Traits/Render/RenderSimple.cs +++ b/OpenRA.Game/Traits/Render/RenderSimple.cs @@ -72,6 +72,18 @@ namespace OpenRA.Traits a.Animation.Tick(); } + protected virtual string GetPrefix(Actor self) + { + return self.GetDamageState() == DamageState.Half ? "damaged-" : ""; + } + + public void PlayCustomAnim(Actor self, string name) + { + if (anim.HasSequence(name)) + anim.PlayThen(GetPrefix(self) + name, + () => anim.PlayRepeating(GetPrefix(self) + "idle")); + } + public class AnimationWithOffset { public Animation Animation; diff --git a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs index 4af4dfcc47..33ad03e181 100644 --- a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs +++ b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs @@ -16,14 +16,12 @@ * You should have received a copy of the GNU General Public License * along with OpenRA. If not, see . */ -#endregion - -using System; -using System.Linq; -using System.Collections.Generic; -using OpenRA.Mods.RA; -using OpenRA.Mods.RA.Activities; -using OpenRA.Traits; +#endregion + +using OpenRA.Mods.RA; +using OpenRA.Mods.RA.Activities; +using OpenRA.Mods.RA.Render; +using OpenRA.Traits; using OpenRA.Traits.Activities; namespace OpenRA.Mods.Cnc diff --git a/OpenRA.Mods.RA/Activities/Attack.cs b/OpenRA.Mods.RA/Activities/Attack.cs index c227e9b6c3..1eec61248a 100755 --- a/OpenRA.Mods.RA/Activities/Attack.cs +++ b/OpenRA.Mods.RA/Activities/Attack.cs @@ -18,6 +18,7 @@ */ #endregion +using OpenRA.Mods.RA.Render; using OpenRA.Traits; using OpenRA.Traits.Activities; diff --git a/OpenRA.Mods.RA/Activities/Harvest.cs b/OpenRA.Mods.RA/Activities/Harvest.cs index 7ecc77a8df..c455d15e61 100755 --- a/OpenRA.Mods.RA/Activities/Harvest.cs +++ b/OpenRA.Mods.RA/Activities/Harvest.cs @@ -19,7 +19,7 @@ #endregion using System.Linq; -using OpenRA.GameRules; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; using OpenRA.Traits.Activities; diff --git a/OpenRA.Mods.RA/Activities/Leap.cs b/OpenRA.Mods.RA/Activities/Leap.cs index 14afe0be52..c4558702c5 100644 --- a/OpenRA.Mods.RA/Activities/Leap.cs +++ b/OpenRA.Mods.RA/Activities/Leap.cs @@ -18,8 +18,10 @@ */ #endregion -using OpenRA.Traits; using System.Linq; +using OpenRA.Mods.RA.Render; +using OpenRA.Traits; + namespace OpenRA.Mods.RA.Activities { class Leap : IActivity diff --git a/OpenRA.Mods.RA/Activities/Rearm.cs b/OpenRA.Mods.RA/Activities/Rearm.cs index e1cd2d54a9..d50d15d260 100644 --- a/OpenRA.Mods.RA/Activities/Rearm.cs +++ b/OpenRA.Mods.RA/Activities/Rearm.cs @@ -19,6 +19,7 @@ #endregion using System.Linq; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA.Activities diff --git a/OpenRA.Mods.RA/Activities/Repair.cs b/OpenRA.Mods.RA/Activities/Repair.cs index 51316c7dae..ec9d813764 100644 --- a/OpenRA.Mods.RA/Activities/Repair.cs +++ b/OpenRA.Mods.RA/Activities/Repair.cs @@ -19,7 +19,7 @@ #endregion using System; -using System.Linq; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA.Activities diff --git a/OpenRA.Mods.RA/Activities/UndeployMcv.cs b/OpenRA.Mods.RA/Activities/UndeployMcv.cs index 7a2cfdd7f9..dd3312a0b7 100755 --- a/OpenRA.Mods.RA/Activities/UndeployMcv.cs +++ b/OpenRA.Mods.RA/Activities/UndeployMcv.cs @@ -18,6 +18,7 @@ */ #endregion +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA.Activities diff --git a/OpenRA.Mods.RA/Activities/UnloadCargo.cs b/OpenRA.Mods.RA/Activities/UnloadCargo.cs index 2b16d0c713..bbbb2e947d 100644 --- a/OpenRA.Mods.RA/Activities/UnloadCargo.cs +++ b/OpenRA.Mods.RA/Activities/UnloadCargo.cs @@ -19,7 +19,7 @@ #endregion using System.Linq; -using OpenRA.GameRules; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; using OpenRA.Traits.Activities; diff --git a/OpenRA.Mods.RA/AttackTesla.cs b/OpenRA.Mods.RA/AttackTesla.cs index 3772813b59..10c2b99696 100644 --- a/OpenRA.Mods.RA/AttackTesla.cs +++ b/OpenRA.Mods.RA/AttackTesla.cs @@ -19,6 +19,7 @@ #endregion using System; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA diff --git a/OpenRA.Mods.RA/Combat.cs b/OpenRA.Mods.RA/Combat.cs index 1ed1d50449..2d3d2371b1 100755 --- a/OpenRA.Mods.RA/Combat.cs +++ b/OpenRA.Mods.RA/Combat.cs @@ -22,6 +22,7 @@ using System; using System.Linq; using OpenRA.Effects; using OpenRA.GameRules; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 9444b96461..b44edb437b 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -82,7 +82,10 @@ - + + + + @@ -150,22 +153,22 @@ - - - - - - - - - + + + + + + + + + - + diff --git a/OpenRA.Mods.RA/OreRefineryDockAction.cs b/OpenRA.Mods.RA/OreRefineryDockAction.cs index bb1194f72f..f60c647234 100644 --- a/OpenRA.Mods.RA/OreRefineryDockAction.cs +++ b/OpenRA.Mods.RA/OreRefineryDockAction.cs @@ -18,8 +18,9 @@ */ #endregion -using OpenRA.Mods.RA.Activities; -using OpenRA.Traits; +using OpenRA.Mods.RA.Activities; +using OpenRA.Mods.RA.Render; +using OpenRA.Traits; using OpenRA.Traits.Activities; namespace OpenRA.Mods.RA diff --git a/OpenRA.Game/Traits/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs old mode 100644 new mode 100755 similarity index 87% rename from OpenRA.Game/Traits/Render/RenderBuilding.cs rename to OpenRA.Mods.RA/Render/RenderBuilding.cs index c1e5dcab9a..7df77e62f1 --- a/OpenRA.Game/Traits/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -20,8 +20,9 @@ using System; using OpenRA.Effects; +using OpenRA.Traits; -namespace OpenRA.Traits +namespace OpenRA.Mods.RA.Render { public class RenderBuildingInfo : RenderSimpleInfo { @@ -52,18 +53,6 @@ namespace OpenRA.Traits x.BuildingComplete( self ); } - protected string GetPrefix(Actor self) - { - return self.GetDamageState() == DamageState.Half ? "damaged-" : ""; - } - - public void PlayCustomAnim(Actor self, string name) - { - if (anim.HasSequence(name)) - anim.PlayThen(GetPrefix(self) + name, - () => anim.PlayRepeating(GetPrefix(self) + "idle")); - } - public void PlayCustomAnimThen(Actor self, string name, Action a) { anim.PlayThen(GetPrefix(self) + name, diff --git a/OpenRA.Mods.RA/RenderBuildingCharge.cs b/OpenRA.Mods.RA/Render/RenderBuildingCharge.cs old mode 100644 new mode 100755 similarity index 94% rename from OpenRA.Mods.RA/RenderBuildingCharge.cs rename to OpenRA.Mods.RA/Render/RenderBuildingCharge.cs index e747a07dd2..cd8134ab14 --- a/OpenRA.Mods.RA/RenderBuildingCharge.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingCharge.cs @@ -18,9 +18,7 @@ */ #endregion -using OpenRA.Traits; - -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderBuildingChargeInfo : RenderBuildingInfo { diff --git a/OpenRA.Mods.RA/RenderBuildingOre.cs b/OpenRA.Mods.RA/Render/RenderBuildingOre.cs old mode 100644 new mode 100755 similarity index 94% rename from OpenRA.Mods.RA/RenderBuildingOre.cs rename to OpenRA.Mods.RA/Render/RenderBuildingOre.cs index 267f0c3190..bed793549a --- a/OpenRA.Mods.RA/RenderBuildingOre.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingOre.cs @@ -20,7 +20,7 @@ using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderBuildingOreInfo : RenderBuildingInfo { diff --git a/OpenRA.Game/Traits/Render/RenderBuildingTurreted.cs b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs old mode 100644 new mode 100755 similarity index 93% rename from OpenRA.Game/Traits/Render/RenderBuildingTurreted.cs rename to OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs index 563a977ff3..a79e16041a --- a/OpenRA.Game/Traits/Render/RenderBuildingTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs @@ -18,7 +18,9 @@ */ #endregion -namespace OpenRA.Traits +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Render { class RenderBuildingTurretedInfo : RenderBuildingInfo { diff --git a/OpenRA.Mods.RA/RenderBuildingWall.cs b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs old mode 100644 new mode 100755 similarity index 95% rename from OpenRA.Mods.RA/RenderBuildingWall.cs rename to OpenRA.Mods.RA/Render/RenderBuildingWall.cs index ae4c59ab87..fef2eff57c --- a/OpenRA.Mods.RA/RenderBuildingWall.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs @@ -19,10 +19,9 @@ #endregion using System.Linq; -using System; using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderBuildingWallInfo : RenderBuildingInfo { diff --git a/OpenRA.Mods.RA/RenderBuildingWarFactory.cs b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs old mode 100644 new mode 100755 similarity index 95% rename from OpenRA.Mods.RA/RenderBuildingWarFactory.cs rename to OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs index 3934f0ea0c..248a382f2f --- a/OpenRA.Mods.RA/RenderBuildingWarFactory.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs @@ -22,7 +22,7 @@ using System.Linq; using OpenRA.Graphics; using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderWarFactoryInfo : ITraitInfo, ITraitPrerequisite { diff --git a/OpenRA.Mods.RA/RenderFlare.cs b/OpenRA.Mods.RA/Render/RenderFlare.cs old mode 100644 new mode 100755 similarity index 94% rename from OpenRA.Mods.RA/RenderFlare.cs rename to OpenRA.Mods.RA/Render/RenderFlare.cs index 816f71b0d4..c1aa83bb33 --- a/OpenRA.Mods.RA/RenderFlare.cs +++ b/OpenRA.Mods.RA/Render/RenderFlare.cs @@ -20,7 +20,7 @@ using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderFlareInfo : RenderSimpleInfo { diff --git a/OpenRA.Mods.RA/RenderInfantry.cs b/OpenRA.Mods.RA/Render/RenderInfantry.cs old mode 100644 new mode 100755 similarity index 95% rename from OpenRA.Mods.RA/RenderInfantry.cs rename to OpenRA.Mods.RA/Render/RenderInfantry.cs index 8631c22385..2210e41154 --- a/OpenRA.Mods.RA/RenderInfantry.cs +++ b/OpenRA.Mods.RA/Render/RenderInfantry.cs @@ -22,7 +22,7 @@ using OpenRA.Traits; using OpenRA.Traits.Activities; using OpenRA.Mods.RA.Effects; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { public class RenderInfantryInfo : RenderSimpleInfo { diff --git a/OpenRA.Mods.RA/RenderSpy.cs b/OpenRA.Mods.RA/Render/RenderSpy.cs old mode 100644 new mode 100755 similarity index 94% rename from OpenRA.Mods.RA/RenderSpy.cs rename to OpenRA.Mods.RA/Render/RenderSpy.cs index f15a28c239..5c9f8c7c51 --- a/OpenRA.Mods.RA/RenderSpy.cs +++ b/OpenRA.Mods.RA/Render/RenderSpy.cs @@ -22,7 +22,7 @@ using System.Collections.Generic; using System.Linq; using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderSpyInfo : RenderInfantryInfo { diff --git a/OpenRA.Game/Traits/Render/RenderUnit.cs b/OpenRA.Mods.RA/Render/RenderUnit.cs old mode 100644 new mode 100755 similarity index 94% rename from OpenRA.Game/Traits/Render/RenderUnit.cs rename to OpenRA.Mods.RA/Render/RenderUnit.cs index 27bf668003..517ffef897 --- a/OpenRA.Game/Traits/Render/RenderUnit.cs +++ b/OpenRA.Mods.RA/Render/RenderUnit.cs @@ -20,8 +20,9 @@ using System; using OpenRA.Graphics; +using OpenRA.Traits; -namespace OpenRA.Traits +namespace OpenRA.Mods.RA.Render { public class RenderUnitInfo : RenderSimpleInfo { diff --git a/OpenRA.Mods.RA/RenderUnitReload.cs b/OpenRA.Mods.RA/Render/RenderUnitReload.cs old mode 100644 new mode 100755 similarity index 94% rename from OpenRA.Mods.RA/RenderUnitReload.cs rename to OpenRA.Mods.RA/Render/RenderUnitReload.cs index c7884bf5fc..221a094da7 --- a/OpenRA.Mods.RA/RenderUnitReload.cs +++ b/OpenRA.Mods.RA/Render/RenderUnitReload.cs @@ -21,7 +21,7 @@ using OpenRA.Mods.RA.Activities; using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderUnitReloadInfo : RenderUnitInfo { diff --git a/OpenRA.Mods.RA/RenderUnitRotor.cs b/OpenRA.Mods.RA/Render/RenderUnitRotor.cs old mode 100644 new mode 100755 similarity index 95% rename from OpenRA.Mods.RA/RenderUnitRotor.cs rename to OpenRA.Mods.RA/Render/RenderUnitRotor.cs index 7c3122dae2..b2bce3ade0 --- a/OpenRA.Mods.RA/RenderUnitRotor.cs +++ b/OpenRA.Mods.RA/Render/RenderUnitRotor.cs @@ -21,7 +21,7 @@ using OpenRA.Graphics; using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderUnitRotorInfo : RenderUnitInfo { diff --git a/OpenRA.Mods.RA/RenderUnitSpinner.cs b/OpenRA.Mods.RA/Render/RenderUnitSpinner.cs old mode 100644 new mode 100755 similarity index 95% rename from OpenRA.Mods.RA/RenderUnitSpinner.cs rename to OpenRA.Mods.RA/Render/RenderUnitSpinner.cs index 96898a2ad6..d3437f5271 --- a/OpenRA.Mods.RA/RenderUnitSpinner.cs +++ b/OpenRA.Mods.RA/Render/RenderUnitSpinner.cs @@ -21,7 +21,7 @@ using OpenRA.Graphics; using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderUnitSpinnerInfo : RenderUnitInfo { diff --git a/OpenRA.Mods.RA/RenderUnitTurreted.cs b/OpenRA.Mods.RA/Render/RenderUnitTurreted.cs similarity index 96% rename from OpenRA.Mods.RA/RenderUnitTurreted.cs rename to OpenRA.Mods.RA/Render/RenderUnitTurreted.cs index 6660b6c792..5313cbd930 100755 --- a/OpenRA.Mods.RA/RenderUnitTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderUnitTurreted.cs @@ -21,7 +21,7 @@ using OpenRA.Graphics; using OpenRA.Traits; -namespace OpenRA.Mods.RA +namespace OpenRA.Mods.RA.Render { class RenderUnitTurretedInfo : RenderUnitInfo { diff --git a/OpenRA.Mods.RA/SeedsResource.cs b/OpenRA.Mods.RA/SeedsResource.cs index f62d714eba..768461cf67 100644 --- a/OpenRA.Mods.RA/SeedsResource.cs +++ b/OpenRA.Mods.RA/SeedsResource.cs @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; using System.Linq; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA diff --git a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs index ea0ef88509..ded6fe0843 100755 --- a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs @@ -21,6 +21,7 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA diff --git a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs index b077699c19..751d2be624 100755 --- a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs @@ -20,6 +20,7 @@ using System.Collections.Generic; using System.Linq; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA diff --git a/OpenRA.Mods.RA/SupportPowers/NukePower.cs b/OpenRA.Mods.RA/SupportPowers/NukePower.cs index d8d811a798..d4319690e5 100755 --- a/OpenRA.Mods.RA/SupportPowers/NukePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/NukePower.cs @@ -20,6 +20,7 @@ using System.Linq; using OpenRA.Mods.RA.Effects; +using OpenRA.Mods.RA.Render; using OpenRA.Orders; using OpenRA.Traits; diff --git a/OpenRA.Mods.RA/ThrowsParticles.cs b/OpenRA.Mods.RA/ThrowsParticles.cs index a0e1fca12e..bc1330bee3 100644 --- a/OpenRA.Mods.RA/ThrowsParticles.cs +++ b/OpenRA.Mods.RA/ThrowsParticles.cs @@ -19,6 +19,7 @@ #endregion using OpenRA.Graphics; +using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA