diff --git a/OpenRA.Mods.RA/Cloak.cs b/OpenRA.Mods.RA/Cloak.cs index e01933543b..038d20e55f 100644 --- a/OpenRA.Mods.RA/Cloak.cs +++ b/OpenRA.Mods.RA/Cloak.cs @@ -22,7 +22,7 @@ namespace OpenRA.Mods.RA public int CloakDelay = 30; // Ticks public string CloakSound = "subshow1.aud"; public string UncloakSound = "subshow1.aud"; - public readonly string Palette = "shadow"; + public readonly string Palette = "cloak"; public object Create(ActorInitializer init) { return new Cloak(init.self, this); } } diff --git a/OpenRA.Mods.RA/CloakPaletteEffect.cs b/OpenRA.Mods.RA/CloakPaletteEffect.cs new file mode 100644 index 0000000000..728b782418 --- /dev/null +++ b/OpenRA.Mods.RA/CloakPaletteEffect.cs @@ -0,0 +1,51 @@ +#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 System.Drawing; +using OpenRA.FileFormats; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA +{ + public class CloakPaletteEffectInfo : TraitInfo {} + + public class CloakPaletteEffect : IPaletteModifier, ITick + { + float t = 0; + string paletteName = "cloak"; + + Color[] colors = { + Color.FromArgb(55, 205, 205, 220), + Color.FromArgb(120, 205, 205, 230), + Color.FromArgb(192, 180, 180, 255), + Color.FromArgb(178, 205, 250, 220), + }; + + public void AdjustPalette(Dictionary b) + { + var i = (int)t; + var p = b[paletteName]; + + for (var j = 0; j < colors.Length; j++ ) + { + var k = (i+j) % 16 + 0xb0; + p.SetColor(k, colors[j]); + } + } + + public void Tick (Actor self) + { + t += 0.25f; + if (t >= 256) t = 0; + } + } +} + diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 968be6d787..cc0cd1876f 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -361,6 +361,7 @@ + diff --git a/mods/cnc/rules/system.yaml b/mods/cnc/rules/system.yaml index 4cc8326695..e0b3ec35ec 100644 --- a/mods/cnc/rules/system.yaml +++ b/mods/cnc/rules/system.yaml @@ -50,6 +50,7 @@ World: LoadWidgetAtGameStart: Widget: INGAME_ROOT CncMenuPaletteEffect: + CloakPaletteEffect: ScreenShaker: NukePaletteEffect: WaterPaletteRotation: @@ -73,6 +74,12 @@ World: G: 0 B: 0 A: 140 + PaletteFromRGBA@cloak: + Name: cloak + R: 0 + G: 0 + B: 0 + A: 140 PaletteFromRGBA@highlight: Name: highlight R: 255 diff --git a/mods/ra/rules/system.yaml b/mods/ra/rules/system.yaml index 54362ab8e9..9a01709345 100644 --- a/mods/ra/rules/system.yaml +++ b/mods/ra/rules/system.yaml @@ -168,6 +168,12 @@ World: G: 0 B: 0 A: 140 + PaletteFromRGBA@cloak: + Name: cloak + R: 0 + G: 0 + B: 0 + A: 140 PaletteFromRGBA@highlight: Name: highlight R: 255