diff --git a/OpenRA.Game/Widgets/RadarBinWidget.cs b/OpenRA.Game/Widgets/RadarBinWidget.cs index 5409aa0995..fc231dc595 100644 --- a/OpenRA.Game/Widgets/RadarBinWidget.cs +++ b/OpenRA.Game/Widgets/RadarBinWidget.cs @@ -28,13 +28,16 @@ namespace OpenRA.Widgets bool hasRadar = false; string radarCollection; - + Minimap Minimap = null; public override string GetCursor(int2 pos) { + if (Minimap == null) + return "default"; + var mapRect = new RectangleF(radarOrigin.X + 9, radarOrigin.Y + (192 - radarMinimapHeight) / 2, 192, radarMinimapHeight); - var loc = Game.world.Minimap.MinimapPixelToCell(mapRect, pos); + var loc = Minimap.MinimapPixelToCell(mapRect, pos); var mi = new MouseInput { @@ -57,10 +60,10 @@ namespace OpenRA.Widgets var mapRect = new RectangleF(radarOrigin.X + 9, radarOrigin.Y + (192 - radarMinimapHeight) / 2, 192, radarMinimapHeight); - if (!mapRect.Contains(mi.Location.ToPointF())) + if (!mapRect.Contains(mi.Location.ToPointF()) || Minimap == null) return false; - var loc = Game.world.Minimap.MinimapPixelToCell(mapRect, mi.Location); + var loc = Minimap.MinimapPixelToCell(mapRect, mi.Location); if ((mi.Event == MouseInputEvent.Down || mi.Event == MouseInputEvent.Move) && mi.Button == MouseButton.Left) Game.viewport.Center(loc); @@ -114,17 +117,20 @@ namespace OpenRA.Widgets Game.Renderer.RgbaSpriteRenderer.Flush(); + if (Minimap == null) + Minimap = new Minimap(world); + if (radarAnimationFrame >= radarSlideAnimationLength) { var mapRect = new RectangleF(radarOrigin.X + 9, radarOrigin.Y + (192 - radarMinimapHeight) / 2, 192, radarMinimapHeight); - world.Minimap.Draw(mapRect); + Minimap.Draw(mapRect); } } public override void Tick(World world) { - if (world.LocalPlayer != null) - world.Minimap.Update(); + if (world.LocalPlayer != null && Minimap != null) + Minimap.Update(); if (!radarAnimating) return; diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index 38c11aced4..8d2d3f03f4 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -55,7 +55,6 @@ namespace OpenRA public GlobalDefaultsInfo Defaults { get {return WorldActor.Info.Traits.Get();}} public readonly WorldRenderer WorldRenderer; - internal readonly Minimap Minimap; public World(Manifest manifest, Map map) { @@ -104,9 +103,6 @@ namespace OpenRA PathFinder = new PathFinder(this); Timer.Time( "hooks, pathing: {0}" ); - Minimap = new Minimap(this); - Timer.Time( "minimap: {0}" ); - Timer.Time( "----end World.ctor" ); }