diff --git a/OpenRa.Game/Chrome.cs b/OpenRa.Game/Chrome.cs index b7010bbdbe..14a9484b76 100644 --- a/OpenRa.Game/Chrome.cs +++ b/OpenRa.Game/Chrome.cs @@ -143,16 +143,21 @@ namespace OpenRa.Game DrawPower(); chromeRenderer.Flush(); DrawButtons(); - + DrawMinimap(); int paletteHeight = DrawBuildPalette(currentTab); DrawBuildTabs(paletteHeight); DrawChat(); - - Game.minimap.Draw(new float2(Game.viewport.Width - 128,30)); } + void DrawMinimap() + { + var hasRadar = Game.world.Actors.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains() && a.traits.Get().IsActive()); + if (hasRadar) + Game.minimap.Draw(new float2(Game.viewport.Width - 128, 30)); + } + void AddButton(Rectangle r, Action b) { buttons.Add(Pair.New(r, b)); } - + void DrawBuildTabs(int paletteHeight) { const int tabWidth = 24; diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index 5aa72ea0c5..fef5cc01aa 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -214,6 +214,7 @@ + diff --git a/OpenRa.Game/Traits/ProvidesRadar.cs b/OpenRa.Game/Traits/ProvidesRadar.cs new file mode 100644 index 0000000000..41c3ced78c --- /dev/null +++ b/OpenRa.Game/Traits/ProvidesRadar.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OpenRa.Game.Traits +{ + class ProvidesRadar + { + Actor self; + public ProvidesRadar(Actor self) + { + this.self = self; + } + + public bool IsActive() + { + // TODO: Check for nearby MRJ + + // Check if powered + var b = self.traits.Get(); + if (b != null && b.InsuffientPower()) + return false; + + return true; + } + } +} diff --git a/units.ini b/units.ini index 5b0d90121e..ad27a28435 100644 --- a/units.ini +++ b/units.ini @@ -407,7 +407,7 @@ SpawnOffset=0,-4 LongDesc=Produces and reloads helicopters [DOME] Description=Radar Dome -Traits=Building, RenderBuilding +Traits=Building, RenderBuilding, ProvidesRadar Dimensions=2,2 Footprint=xx xx SelectionPriority=3