diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 4ee2c5f1d8..cc99b3e14d 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -317,7 +317,6 @@ - @@ -423,6 +422,7 @@ + diff --git a/OpenRA.Mods.RA/Render/RenderUnitSpinner.cs b/OpenRA.Mods.RA/Render/RenderUnitSpinner.cs deleted file mode 100755 index 9665c224e1..0000000000 --- a/OpenRA.Mods.RA/Render/RenderUnitSpinner.cs +++ /dev/null @@ -1,41 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2011 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 COPYING. - */ -#endregion - -using OpenRA.Graphics; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Render -{ - class RenderUnitSpinnerInfo : RenderUnitInfo - { - public readonly int[] Offset = { 0, 0 }; - public override object Create(ActorInitializer init) { return new RenderUnitSpinner(init.self); } - } - - class RenderUnitSpinner : RenderUnit - { - public RenderUnitSpinner(Actor self) - : base(self) - { - var info = self.Info.Traits.Get(); - - var spinnerAnim = new Animation(GetImage(self)); - var facing = self.Trait(); - - spinnerAnim.PlayRepeating("spinner"); - - var turret = new Turret(info.Offset); - anims.Add("spinner", new AnimationWithOffset( - spinnerAnim, - wr => turret.PxPosition(self, facing).ToFloat2(), - null ) { ZOffset = 1 } ); - } - } -} diff --git a/OpenRA.Mods.RA/Render/WithSpinner.cs b/OpenRA.Mods.RA/Render/WithSpinner.cs new file mode 100755 index 0000000000..4b98452759 --- /dev/null +++ b/OpenRA.Mods.RA/Render/WithSpinner.cs @@ -0,0 +1,39 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 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 COPYING. + */ +#endregion + +using OpenRA.FileFormats; +using OpenRA.Graphics; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Render +{ + class WithSpinnerInfo : ITraitInfo, Requires + { + public readonly string Name = "spinner"; + [Desc("Position relative to body")] + public readonly WVec Offset = WVec.Zero; + + public object Create(ActorInitializer init) { return new WithSpinner(init.self, this); } + } + + class WithSpinner + { + public WithSpinner(Actor self, WithSpinnerInfo info) + { + var rs = self.Trait(); + var spinner = new Animation(rs.GetImage(self)); + spinner.PlayRepeating("spinner"); + rs.anims.Add(info.Name, new AnimationWithOffset( + spinner, + wr => wr.ScreenPxOffset(rs.LocalToWorld(info.Offset.Rotate(rs.QuantizeOrientation(self, self.Orientation)))), + null ) { ZOffset = 1 } ); + } + } +} diff --git a/mods/cnc/rules/vehicles.yaml b/mods/cnc/rules/vehicles.yaml index c79d1e2e82..dbed910aba 100644 --- a/mods/cnc/rules/vehicles.yaml +++ b/mods/cnc/rules/vehicles.yaml @@ -564,8 +564,9 @@ MHQ: Speed: 6 RevealsShroud: Range: 6 - RenderUnitSpinner: - Offset: 0,6 + RenderUnit: + WithSpinner: + Offset: -256,0,256 AttackMove: JustMove: yes Explodes: diff --git a/mods/ra/rules/vehicles.yaml b/mods/ra/rules/vehicles.yaml index 266fe43b34..cdde0e078b 100644 --- a/mods/ra/rules/vehicles.yaml +++ b/mods/ra/rules/vehicles.yaml @@ -501,8 +501,9 @@ MGG: Speed: 6 RevealsShroud: Range: 6 - RenderUnitSpinner: - Offset: 0,6 + RenderUnit: + WithSpinner: + Offset: -299,0,171 AttackMove: JustMove: yes CreatesShroud: @@ -546,8 +547,9 @@ MRJ: Speed: 6 RevealsShroud: Range: 6 - RenderUnitSpinner: - Offset: 0,6 + RenderUnit: + WithSpinner: + Offset: -256,0,256 AttackMove: JustMove: yes Explodes: @@ -649,7 +651,8 @@ TTNK: Weapon: TTankZap LocalOffset: 0,0,213 AttackFrontal: - RenderUnitSpinner: + RenderUnit: + WithSpinner: Selectable: Bounds: 28,28,0,0 AutoTarget: