diff --git a/OpenRA.Mods.RA/Buildings/CanPowerDown.cs b/OpenRA.Mods.RA/Buildings/CanPowerDown.cs index a528d66962..03b6bce06e 100755 --- a/OpenRA.Mods.RA/Buildings/CanPowerDown.cs +++ b/OpenRA.Mods.RA/Buildings/CanPowerDown.cs @@ -9,6 +9,7 @@ #endregion using OpenRA.Traits; +using OpenRA.Mods.RA.Effects; namespace OpenRA.Mods.RA.Buildings { @@ -40,6 +41,10 @@ namespace OpenRA.Mods.RA.Buildings Sound.PlayToPlayer(self.Owner, disabled ? eva.EnablePower : eva.DisablePower); PowerManager.UpdateActor(self, disabled ? 0 : normalPower); + + if (disabled) + self.World.AddFrameEndTask( + w => w.Add(new PowerdownIndicator(self))); } } diff --git a/OpenRA.Mods.RA/Effects/PowerdownIndicator.cs b/OpenRA.Mods.RA/Effects/PowerdownIndicator.cs new file mode 100644 index 0000000000..a341ccd713 --- /dev/null +++ b/OpenRA.Mods.RA/Effects/PowerdownIndicator.cs @@ -0,0 +1,44 @@ +#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 System.Collections.Generic; +using OpenRA.Effects; +using OpenRA.Graphics; +using OpenRA.Mods.RA.Buildings; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Effects +{ + class PowerdownIndicator : IEffect + { + Actor a; + Animation anim = new Animation("poweroff"); + + public PowerdownIndicator(Actor a) + { + this.a = a; anim.PlayRepeating("offline"); + } + + public void Tick(World world) + { + if (!a.IsInWorld || a.IsDead() || !a.Trait().Disabled) + world.AddFrameEndTask(w => w.Remove(this)); + + anim.Tick(); + } + + public IEnumerable Render() + { + if (!a.Destroyed) + yield return new Renderable(anim.Image, + a.CenterLocation - .5f * anim.Image.size, "chrome", (int)a.CenterLocation.Y); + } + } +} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index d7929a0243..3ba1f5c060 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -1,389 +1,390 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {4A8A43B5-A9EF-4ED0-99DD-4BAB10A0DB6E} - Library - Properties - OpenRA.Mods.RA - OpenRA.Mods.RA - v3.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - - - - - - - pdbonly - true - TRACE - prompt - 4 - bin\Release\ - - - - - 3.5 - - - - 3.5 - - - 3.5 - - - - - False - ..\ICSharpCode.SharpZipLib.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA} - OpenRA.FileFormats - False - - - {0DFB103F-2962-400F-8C6D-E2C28CCBA633} - OpenRA.Game - False - - - - - - mkdir "$(SolutionDir)mods/ra/" -copy "$(TargetPath)" "$(SolutionDir)mods/ra/" -cd "$(SolutionDir)" - - + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {4A8A43B5-A9EF-4ED0-99DD-4BAB10A0DB6E} + Library + Properties + OpenRA.Mods.RA + OpenRA.Mods.RA + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + + + + + + + pdbonly + true + TRACE + prompt + 4 + bin\Release\ + + + + + 3.5 + + + + 3.5 + + + 3.5 + + + + + False + ..\ICSharpCode.SharpZipLib.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA} + OpenRA.FileFormats + False + + + {0DFB103F-2962-400F-8C6D-E2C28CCBA633} + OpenRA.Game + False + + + + + + mkdir "$(SolutionDir)mods/ra/" +copy "$(TargetPath)" "$(SolutionDir)mods/ra/" +cd "$(SolutionDir)" + + \ No newline at end of file diff --git a/mods/ra/bits/poweroff.shp b/mods/ra/bits/poweroff.shp new file mode 100644 index 0000000000..86b5b7e00a Binary files /dev/null and b/mods/ra/bits/poweroff.shp differ diff --git a/mods/ra/sequences.yaml b/mods/ra/sequences.yaml index 9007f1e228..986f8bbdae 100644 --- a/mods/ra/sequences.yaml +++ b/mods/ra/sequences.yaml @@ -1540,6 +1540,12 @@ select: repair: Start: 2 +poweroff: + offline: + Start: 0 + Length: * + Tick: 160 + tabs: left-normal: Start: 0