diff --git a/OpenRA.Game/Effects/FlashTarget.cs b/OpenRA.Game/Effects/FlashTarget.cs index a48f4e4547..0d93d88df6 100755 --- a/OpenRA.Game/Effects/FlashTarget.cs +++ b/OpenRA.Game/Effects/FlashTarget.cs @@ -11,23 +11,27 @@ using System.Collections.Generic; using System.Linq; using OpenRA.Graphics; -using OpenRA.Traits; namespace OpenRA.Effects { public class FlashTarget : IEffect { Actor target; + Player player; int remainingTicks = 4; public FlashTarget(Actor target) + : this(target, null) { } + + public FlashTarget(Actor target, Player asPlayer) { this.target = target; + player = asPlayer; foreach (var e in target.World.Effects.OfType().Where(a => a.target == target).ToArray()) target.World.Remove(e); } - public void Tick( World world ) + public void Tick(World world) { if (--remainingTicks == 0 || !target.IsInWorld) world.AddFrameEndTask(w => w.Remove(this)); @@ -37,7 +41,7 @@ namespace OpenRA.Effects { if (target.IsInWorld && remainingTicks % 2 == 0) { - var palette = wr.Palette("highlight"); + var palette = wr.Palette(player == null ? "highlight" : "highlight" + player.InternalName); return target.Render(wr) .Where(r => !r.IsDecoration) .Select(r => r.WithPalette(palette)); diff --git a/OpenRA.Game/Traits/World/PlayerColorPalette.cs b/OpenRA.Game/Traits/World/PlayerColorPalette.cs index 60199ffd78..46ade86a27 100644 --- a/OpenRA.Game/Traits/World/PlayerColorPalette.cs +++ b/OpenRA.Game/Traits/World/PlayerColorPalette.cs @@ -8,6 +8,7 @@ */ #endregion +using System.Drawing; using OpenRA.FileFormats; using OpenRA.Graphics; @@ -45,6 +46,9 @@ namespace OpenRA.Traits { var remap = new PlayerColorRemap(info.RemapIndex, owner.Color, info.Ramp); wr.AddPalette(info.BaseName+owner.InternalName, new Palette(wr.Palette(info.BasePalette).Palette, remap), info.AllowModifiers); + + var argb = (uint)Color.FromArgb(128, owner.Color.RGB).ToArgb(); + wr.AddPalette("highlight" + owner.InternalName, new Palette(Exts.MakeArray(256, i => i == 0 ? 0 : argb)), false); } } } diff --git a/OpenRA.Mods.RA/Activities/CaptureActor.cs b/OpenRA.Mods.RA/Activities/CaptureActor.cs index ee9379d780..8b694abad2 100644 --- a/OpenRA.Mods.RA/Activities/CaptureActor.cs +++ b/OpenRA.Mods.RA/Activities/CaptureActor.cs @@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA.Activities if (capturable.CaptureProgressTime % 25 == 0) { - self.World.Add(new FlashTarget(target.Actor)); // TODO: building should flash captor's color + self.World.Add(new FlashTarget(target.Actor, self.Owner)); self.World.Add(new FlashTarget(self)); }