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