diff --git a/OpenRA.Game/Graphics/ShroudRenderer.cs b/OpenRA.Game/Graphics/ShroudRenderer.cs index 6dcc0b3b87..0e244aa6ad 100644 --- a/OpenRA.Game/Graphics/ShroudRenderer.cs +++ b/OpenRA.Game/Graphics/ShroudRenderer.cs @@ -161,7 +161,7 @@ namespace OpenRA.Graphics GenerateSprites(shroud); - var clipRect = Game.viewport.WorldBounds(wr.world); + var clipRect = wr.Viewport.WorldBounds(wr.world); // We draw the shroud when disabled to hide the sharp map edges DrawShroud(wr, clipRect, sprites, shroudPalette); diff --git a/OpenRA.Game/Graphics/TextRenderable.cs b/OpenRA.Game/Graphics/TextRenderable.cs index 1b2fa08da1..def2cd3533 100644 --- a/OpenRA.Game/Graphics/TextRenderable.cs +++ b/OpenRA.Game/Graphics/TextRenderable.cs @@ -46,7 +46,7 @@ namespace OpenRA.Graphics public void BeforeRender(WorldRenderer wr) {} public void Render(WorldRenderer wr) { - var screenPos = Game.viewport.Zoom*(wr.ScreenPosition(pos) - Game.viewport.Location) - 0.5f*font.Measure(text).ToFloat2(); + var screenPos = wr.Viewport.Zoom*(wr.ScreenPosition(pos) - wr.Viewport.Location) - 0.5f*font.Measure(text).ToFloat2(); var screenPxPos = new float2((float)Math.Round(screenPos.X), (float)Math.Round(screenPos.Y)); font.DrawTextWithContrast(text, screenPxPos, color, Color.Black, 1); } diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index d30163784c..fa25727660 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -75,9 +75,9 @@ namespace OpenRA.Graphics List GenerateRenderables() { var comparer = new RenderableComparer(this); - var vb = Game.viewport.ViewBounds(world); - var tl = Game.viewport.ViewToWorldPx(new int2(vb.Left, vb.Top)); - var br = Game.viewport.ViewToWorldPx(new int2(vb.Right, vb.Bottom)); + var vb = Viewport.ViewBounds(world); + var tl = Viewport.ViewToWorldPx(new int2(vb.Left, vb.Top)); + var br = Viewport.ViewToWorldPx(new int2(vb.Right, vb.Bottom)); var actors = world.ScreenMap.ActorsInBox(tl, br) .Append(world.WorldActor) .ToList(); @@ -116,10 +116,10 @@ namespace OpenRA.Graphics return; var renderables = GenerateRenderables(); - var bounds = Game.viewport.ViewBounds(world); + var bounds = Viewport.ViewBounds(world); Game.Renderer.EnableScissor(bounds.Left, bounds.Top, bounds.Width, bounds.Height); - terrainRenderer.Draw(this, Game.viewport); + terrainRenderer.Draw(this, Viewport); Game.Renderer.Flush(); for (var i = 0; i < renderables.Count; i++) diff --git a/OpenRA.Game/Traits/World/ResourceLayer.cs b/OpenRA.Game/Traits/World/ResourceLayer.cs index 74219e47ff..1f7da79740 100644 --- a/OpenRA.Game/Traits/World/ResourceLayer.cs +++ b/OpenRA.Game/Traits/World/ResourceLayer.cs @@ -37,7 +37,7 @@ namespace OpenRA.Traits rt.info.PaletteRef = wr.Palette(rt.info.Palette); } - var clip = Game.viewport.WorldBounds(world); + var clip = wr.Viewport.WorldBounds(world); for (var x = clip.Left; x < clip.Right; x++) { for (var y = clip.Top; y < clip.Bottom; y++) diff --git a/OpenRA.Game/Traits/World/ScreenShaker.cs b/OpenRA.Game/Traits/World/ScreenShaker.cs index fbfda7f741..4c5b06472e 100644 --- a/OpenRA.Game/Traits/World/ScreenShaker.cs +++ b/OpenRA.Game/Traits/World/ScreenShaker.cs @@ -29,7 +29,7 @@ namespace OpenRA.Traits { if (shakeEffects.Any()) { - Game.viewport.Scroll(GetScrollOffset(), true); + worldRenderer.Viewport.Scroll(GetScrollOffset(), true); shakeEffects.RemoveAll(t => t.ExpiryTime == ticks); } @@ -50,7 +50,7 @@ namespace OpenRA.Traits float GetIntensity() { - var cp = worldRenderer.Position(Game.viewport.CenterLocation.ToInt2()); + var cp = worldRenderer.Position(worldRenderer.Viewport.CenterLocation.ToInt2()); var intensity = 100 * 1024 * 1024 * shakeEffects.Sum( e => (float)e.Intensity / (e.Position - cp).LengthSquared); diff --git a/OpenRA.Game/Widgets/ViewportControllerWidget.cs b/OpenRA.Game/Widgets/ViewportControllerWidget.cs index 86948d7275..bf01e158de 100644 --- a/OpenRA.Game/Widgets/ViewportControllerWidget.cs +++ b/OpenRA.Game/Widgets/ViewportControllerWidget.cs @@ -57,12 +57,14 @@ namespace OpenRA.Widgets ScrollDirection keyboardDirections; ScrollDirection edgeDirections; World world; + WorldRenderer worldRenderer; [ObjectCreator.UseCtor] public ViewportControllerWidget(World world, WorldRenderer worldRenderer) : base() { this.world = world; + this.worldRenderer = worldRenderer; tooltipContainer = Lazy.New(() => Ui.Root.Get(TooltipContainer)); } @@ -93,7 +95,7 @@ namespace OpenRA.Widgets public void UpdateMouseover() { TooltipType = WorldTooltipType.None; - var cell = Game.viewport.ViewToWorld(Viewport.LastMousePos); + var cell = worldRenderer.Viewport.ViewToWorld(Viewport.LastMousePos); if (!world.Map.IsInMap(cell)) return; @@ -103,7 +105,7 @@ namespace OpenRA.Widgets return; } - var underCursor = world.ScreenMap.ActorsAt(Game.viewport.ViewToWorldPx(Viewport.LastMousePos)) + var underCursor = world.ScreenMap.ActorsAt(worldRenderer.Viewport.ViewToWorldPx(Viewport.LastMousePos)) .Where(a => !world.FogObscures(a) && a.HasTrait()) .OrderByDescending(a => a.Info.SelectionPriority()) .FirstOrDefault(); @@ -127,14 +129,14 @@ namespace OpenRA.Widgets } } - public static string GetScrollCursor(Widget w, ScrollDirection edge, int2 pos) + public override string GetCursor(int2 pos) { - if (!Game.Settings.Game.ViewportEdgeScroll || Ui.MouseOverWidget != w) + if (!Game.Settings.Game.ViewportEdgeScroll || Ui.MouseOverWidget != this) return null; - var blockedDirections = Game.viewport.GetBlockedDirections(); + var blockedDirections = worldRenderer.Viewport.GetBlockedDirections(); foreach (var dir in ScrollCursors) - if (edge.Includes(dir.Key)) + if (edgeDirections.Includes(dir.Key)) return dir.Value + (blockedDirections.Includes(dir.Key) ? "-blocked" : ""); return null; @@ -150,15 +152,13 @@ namespace OpenRA.Widgets (mi.Button == MouseButton.Middle || mi.Button == (MouseButton.Left | MouseButton.Right))) { var d = scrolltype == MouseScrollType.Inverted ? -1 : 1; - Game.viewport.Scroll((Viewport.LastMousePos - mi.Location) * d); + worldRenderer.Viewport.Scroll((Viewport.LastMousePos - mi.Location) * d); return true; } return false; } - public override string GetCursor(int2 pos) { return GetScrollCursor(this, edgeDirections, pos); } - public override bool YieldKeyboardFocus() { keyboardDirections = ScrollDirection.None; @@ -195,7 +195,7 @@ namespace OpenRA.Widgets var length = Math.Max(1, scroll.Length); scroll *= (1f / length) * Game.Settings.Game.ViewportEdgeScrollStep; - Game.viewport.Scroll(scroll); + worldRenderer.Viewport.Scroll(scroll); } } diff --git a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs index 11edac85db..0571914816 100644 --- a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs +++ b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs @@ -48,10 +48,9 @@ namespace OpenRA.Widgets worldRenderer.DrawRollover(u); } - public override bool HandleMouseInput(MouseInput mi) { - var xy = Game.viewport.ViewToWorldPx(mi.Location); + var xy = worldRenderer.Viewport.ViewToWorldPx(mi.Location); var UseClassicMouseStyle = Game.Settings.Game.UseClassicMouseStyle; @@ -92,9 +91,9 @@ namespace OpenRA.Widgets { var unit = world.ScreenMap.ActorsAt(xy).FirstOrDefault(); - var visibleWorld = Game.viewport.ViewBounds(world); - var topLeft = Game.viewport.ViewToWorldPx(new int2(visibleWorld.Left, visibleWorld.Top)); - var bottomRight = Game.viewport.ViewToWorldPx(new int2(visibleWorld.Right, visibleWorld.Bottom)); + var visibleWorld = worldRenderer.Viewport.ViewBounds(world); + var topLeft = worldRenderer.Viewport.ViewToWorldPx(new int2(visibleWorld.Left, visibleWorld.Top)); + var bottomRight = worldRenderer.Viewport.ViewToWorldPx(new int2(visibleWorld.Right, visibleWorld.Bottom)); var newSelection2= SelectActorsInBox(world, topLeft, bottomRight, a => unit != null && a.Info.Name == unit.Info.Name && a.Owner == unit.Owner); @@ -155,7 +154,7 @@ namespace OpenRA.Widgets if (SelectionBox != null) return null; - var xy = Game.viewport.ViewToWorldPx(screenPos); + var xy = worldRenderer.Viewport.ViewToWorldPx(screenPos); var pos = worldRenderer.Position(xy); var cell = pos.ToCPos(); diff --git a/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs b/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs index 1285491f6e..d3d32b61c5 100755 --- a/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs +++ b/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs @@ -71,7 +71,7 @@ namespace OpenRA.Mods.RA.Orders public IEnumerable Render(WorldRenderer wr, World world) { yield break; } public void RenderAfterWorld(WorldRenderer wr, World world) { - var position = Game.viewport.ViewToWorld(Viewport.LastMousePos); + var position = wr.Viewport.ViewToWorld(Viewport.LastMousePos); var topLeft = position - FootprintUtils.AdjustForBuildingSize(BuildingInfo); var actorInfo = Rules.Info[Building]; diff --git a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs index 284765b004..b01e915fcd 100755 --- a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs @@ -138,7 +138,7 @@ namespace OpenRA.Mods.RA public void RenderAfterWorld(WorldRenderer wr, World world) { - var xy = Game.viewport.ViewToWorld(Viewport.LastMousePos); + var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos); var targetUnits = power.UnitsInRange(xy); foreach (var unit in targetUnits) if (manager.self.Owner.Shroud.IsTargetable(unit) || manager.self.Owner.HasFogVisibility()) @@ -147,7 +147,7 @@ namespace OpenRA.Mods.RA public IEnumerable Render(WorldRenderer wr, World world) { - var xy = Game.viewport.ViewToWorld(Viewport.LastMousePos); + var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos); var tiles = world.FindTilesInCircle(xy, range); var pal = wr.Palette("terrain"); foreach (var t in tiles) @@ -226,7 +226,7 @@ namespace OpenRA.Mods.RA public IEnumerable Render(WorldRenderer wr, World world) { - var xy = Game.viewport.ViewToWorld(Viewport.LastMousePos); + var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos); var pal = wr.Palette("terrain"); // Source tiles diff --git a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs index ffa0d71892..abfaeafc06 100755 --- a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs @@ -90,14 +90,14 @@ namespace OpenRA.Mods.RA public void RenderAfterWorld(WorldRenderer wr, World world) { - var xy = Game.viewport.ViewToWorld(Viewport.LastMousePos); + var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos); foreach (var unit in power.UnitsInRange(xy)) wr.DrawSelectionBox(unit, Color.Red); } public IEnumerable Render(WorldRenderer wr, World world) { - var xy = Game.viewport.ViewToWorld(Viewport.LastMousePos); + var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos); var pal = wr.Palette("terrain"); foreach (var t in world.FindTilesInCircle(xy, range)) yield return new SpriteRenderable(tile, t.CenterPosition, WVec.Zero, -511, pal, 1f, true); diff --git a/OpenRA.Mods.RA/Widgets/RadarWidget.cs b/OpenRA.Mods.RA/Widgets/RadarWidget.cs index 6e8f31b928..1226cb0f36 100755 --- a/OpenRA.Mods.RA/Widgets/RadarWidget.cs +++ b/OpenRA.Mods.RA/Widgets/RadarWidget.cs @@ -83,7 +83,7 @@ namespace OpenRA.Mods.RA.Widgets return null; var cell = MinimapPixelToCell(pos); - var location = Game.viewport.WorldToViewPx(worldRenderer.ScreenPxPosition(cell.CenterPosition)); + var location = worldRenderer.Viewport.WorldToViewPx(worldRenderer.ScreenPxPosition(cell.CenterPosition)); var mi = new MouseInput { @@ -110,12 +110,12 @@ namespace OpenRA.Mods.RA.Widgets var cell = MinimapPixelToCell(mi.Location); var pos = cell.CenterPosition; if ((mi.Event == MouseInputEvent.Down || mi.Event == MouseInputEvent.Move) && mi.Button == MouseButton.Left) - Game.viewport.Center(cell.ToFloat2()); + worldRenderer.Viewport.Center(cell.ToFloat2()); if (mi.Event == MouseInputEvent.Down && mi.Button == MouseButton.Right) { // fake a mousedown/mouseup here - var location = Game.viewport.WorldToViewPx(worldRenderer.ScreenPxPosition(pos)); + var location = worldRenderer.Viewport.WorldToViewPx(worldRenderer.ScreenPxPosition(pos)); var fakemi = new MouseInput { Event = MouseInputEvent.Down, @@ -153,7 +153,7 @@ namespace OpenRA.Mods.RA.Widgets // Draw viewport rect if (hasRadar) { - var wr = Game.viewport.WorldRect; + var wr = worldRenderer.Viewport.WorldRect; var wro = new CPos(wr.X, wr.Y); var tl = CellToMinimapPixel(wro); var br = CellToMinimapPixel(wro + new CVec(wr.Width, wr.Height)); diff --git a/OpenRA.Mods.RA/World/DebugOverlay.cs b/OpenRA.Mods.RA/World/DebugOverlay.cs index 7f568ae102..7b31457525 100644 --- a/OpenRA.Mods.RA/World/DebugOverlay.cs +++ b/OpenRA.Mods.RA/World/DebugOverlay.cs @@ -53,7 +53,7 @@ namespace OpenRA.Mods.RA var doDim = refreshTick - world.FrameNumber <= 0; if (doDim) refreshTick = world.FrameNumber + 20; - var viewBounds = Game.viewport.WorldBounds(world); + var viewBounds = wr.Viewport.WorldBounds(world); foreach (var pair in layers) { diff --git a/OpenRA.Mods.RA/World/SmudgeLayer.cs b/OpenRA.Mods.RA/World/SmudgeLayer.cs index cdc8942d27..7cd119157f 100644 --- a/OpenRA.Mods.RA/World/SmudgeLayer.cs +++ b/OpenRA.Mods.RA/World/SmudgeLayer.cs @@ -95,7 +95,7 @@ namespace OpenRA.Mods.RA public void Render(WorldRenderer wr) { - var cliprect = Game.viewport.WorldBounds(world); + var cliprect = wr.Viewport.WorldBounds(world); var pal = wr.Palette("terrain"); foreach (var kv in tiles)