From dee6a9bac402219192f839de2bb3208f2cde7946 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 14 Jul 2014 19:12:34 +1200 Subject: [PATCH] Support fading the area behind the radar to black. --- .../Widgets/Logic/Ingame/IngameRadarDisplayLogic.cs | 13 ++++++++++++- OpenRA.Mods.RA/Widgets/RadarWidget.cs | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.RA/Widgets/Logic/Ingame/IngameRadarDisplayLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/Ingame/IngameRadarDisplayLogic.cs index 81dbcec523..7d4a7d4ec2 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/Ingame/IngameRadarDisplayLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/Ingame/IngameRadarDisplayLogic.cs @@ -8,6 +8,7 @@ */ #endregion +using System.Drawing; using System.Linq; using OpenRA.Mods.RA.Widgets; using OpenRA.Widgets; @@ -21,7 +22,9 @@ namespace OpenRA.Mods.RA.Widgets.Logic { var radarEnabled = false; var cachedRadarEnabled = false; - widget.Get("RADAR_MINIMAP").IsEnabled = () => radarEnabled; + var blockColor = Color.Transparent; + var radar = widget.Get("RADAR_MINIMAP"); + radar.IsEnabled = () => radarEnabled; var ticker = widget.Get("RADAR_TICKER"); ticker.OnTick = () => @@ -33,6 +36,14 @@ namespace OpenRA.Mods.RA.Widgets.Logic Sound.PlayNotification(world.Map.Rules, null, "Sounds", radarEnabled ? "RadarUp" : "RadarDown", null); cachedRadarEnabled = radarEnabled; }; + + var block = widget.GetOrNull("RADAR_FADETOBLACK"); + if (block != null) + { + radar.Animating = x => blockColor = Color.FromArgb((int)(255 * x), Color.Black); + block.IsVisible = () => blockColor.A != 0; + block.GetColor = () => blockColor; + } } } } diff --git a/OpenRA.Mods.RA/Widgets/RadarWidget.cs b/OpenRA.Mods.RA/Widgets/RadarWidget.cs index 708c1d1556..9f717f46c7 100755 --- a/OpenRA.Mods.RA/Widgets/RadarWidget.cs +++ b/OpenRA.Mods.RA/Widgets/RadarWidget.cs @@ -25,6 +25,7 @@ namespace OpenRA.Mods.RA.Widgets public Func IsEnabled = () => true; public Action AfterOpen = () => { }; public Action AfterClose = () => { }; + public Action Animating = _ => {}; float radarMinimapHeight; int frame; @@ -227,6 +228,8 @@ namespace OpenRA.Mods.RA.Widgets frame += enabled ? 1 : -1; radarMinimapHeight = float2.Lerp(0, 1, (float)frame / AnimationLength); + Animating(frame * 1f / AnimationLength); + // Update map rectangle for event handling var ro = RenderOrigin; mapRect = new Rectangle(previewOrigin.X + ro.X, previewOrigin.Y + ro.Y, mapRect.Width, mapRect.Height);