From 2dd558a065380c6b27ae26e9e4aa5694ab52dad6 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 30 Jul 2010 20:07:39 +1200 Subject: [PATCH] move LastMousePosition et al from Widget to Viewport --- OpenRA.Game/Graphics/Viewport.cs | 7 ++++-- OpenRA.Game/UiOverlay.cs | 2 +- OpenRA.Game/Widgets/BuildPaletteWidget.cs | 4 ++-- OpenRA.Game/Widgets/OrderButtonWidget.cs | 2 +- OpenRA.Game/Widgets/SpecialPowerBinWidget.cs | 2 +- .../Widgets/ViewportScrollControllerWidget.cs | 11 +++++---- OpenRA.Game/Widgets/Widget.cs | 8 +++---- OpenRA.Game/Widgets/WorldTooltipWidget.cs | 24 +++++++++---------- 8 files changed, 31 insertions(+), 29 deletions(-) diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs index e6ef9c7947..4fd9755136 100644 --- a/OpenRA.Game/Graphics/Viewport.cs +++ b/OpenRA.Game/Graphics/Viewport.cs @@ -30,6 +30,9 @@ namespace OpenRA.Graphics float cursorFrame = 0f; + public static int TicksSinceLastMove = 0; + public static int2 LastMousePos; + public void Scroll(float2 delta) { scrollPosition = scrollPosition + delta; @@ -60,9 +63,9 @@ namespace OpenRA.Graphics Widget.DoDraw(world); Timer.Time( "widgets: {0}" ); - var cursorName = Widget.RootWidget.GetCursorOuter(Widget.LastMousePos) ?? "default"; + var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default"; var c = new Cursor(cursorName); - c.Draw((int)cursorFrame, Widget.LastMousePos + Location); + c.Draw((int)cursorFrame, Viewport.LastMousePos + Location); Timer.Time( "cursors: {0}" ); renderer.RgbaSpriteRenderer.Flush(); diff --git a/OpenRA.Game/UiOverlay.cs b/OpenRA.Game/UiOverlay.cs index 1c3b65f96b..00ead4e76f 100644 --- a/OpenRA.Game/UiOverlay.cs +++ b/OpenRA.Game/UiOverlay.cs @@ -55,7 +55,7 @@ namespace OpenRA public void DrawBuildingGrid( World world, string name, BuildingInfo bi ) { - var position = Game.viewport.ViewToWorld(Widget.LastMousePos).ToInt2(); + var position = Game.viewport.ViewToWorld(Viewport.LastMousePos).ToInt2(); var topLeft = position - Footprint.AdjustForBuildingSize( bi ); // Linebuild for walls. diff --git a/OpenRA.Game/Widgets/BuildPaletteWidget.cs b/OpenRA.Game/Widgets/BuildPaletteWidget.cs index e646bf321d..ccbdb93c4f 100644 --- a/OpenRA.Game/Widgets/BuildPaletteWidget.cs +++ b/OpenRA.Game/Widgets/BuildPaletteWidget.cs @@ -226,7 +226,7 @@ namespace OpenRA.Widgets var firstOfThis = queue.AllItems(queueName).FirstOrDefault(a => a.Item == item.Name); - if (rect.Contains(Widget.LastMousePos.ToPoint())) + if (rect.Contains(Viewport.LastMousePos.ToPoint())) tooltipItem = item.Name; var overlayPos = drawPos + new float2((64 - ready.Image.size.X) / 2, 2); @@ -424,7 +424,7 @@ namespace OpenRA.Widgets var rect = new Rectangle((int)x,(int)y,(int)tabWidth,(int)tabHeight); tabs.Add(Pair.New(rect, HandleTabClick(groupName, world))); - if (rect.Contains(Widget.LastMousePos.ToPoint())) + if (rect.Contains(Viewport.LastMousePos.ToPoint())) { var text = CategoryNameRemaps.ContainsKey(groupName) ? CategoryNameRemaps[groupName] : groupName; var sz = Game.Renderer.BoldFont.Measure(text); diff --git a/OpenRA.Game/Widgets/OrderButtonWidget.cs b/OpenRA.Game/Widgets/OrderButtonWidget.cs index 75a6aba063..4253f34e69 100644 --- a/OpenRA.Game/Widgets/OrderButtonWidget.cs +++ b/OpenRA.Game/Widgets/OrderButtonWidget.cs @@ -24,7 +24,7 @@ namespace OpenRA.Widgets var image = ChromeProvider.GetImage(Image + "-button", GetImage()); var rect = new Rectangle(RenderBounds.X, RenderBounds.Y, (int)image.size.X, (int)image.size.Y); - if (rect.Contains(Widget.LastMousePos.ToPoint())) + if (rect.Contains(Viewport.LastMousePos.ToPoint())) { rect = rect.InflateBy(3, 3, 3, 3); var pos = new int2(rect.Left, rect.Top); diff --git a/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs b/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs index 8a741d1eac..4a176db968 100644 --- a/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs +++ b/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs @@ -91,7 +91,7 @@ namespace OpenRA.Widgets var drawPos = new float2(rectBounds.X + 5, y); var rect = new Rectangle(rectBounds.X + 5, y, 64, 48); - if (rect.Contains(Widget.LastMousePos.ToPoint())) + if (rect.Contains(Viewport.LastMousePos.ToPoint())) { var pos = drawPos.ToInt2(); var tl = new int2(pos.X-3,pos.Y-3); diff --git a/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs b/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs index ed649ce121..d851d3d6de 100644 --- a/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs +++ b/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs @@ -9,6 +9,7 @@ #endregion using System; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -38,7 +39,7 @@ namespace OpenRA.Widgets if (mi.Event == MouseInputEvent.Move && (mi.Button == MouseButton.Middle || mi.Button == (MouseButton.Left | MouseButton.Right))) { - Game.viewport.Scroll(Widget.LastMousePos - mi.Location); + Game.viewport.Scroll(Viewport.LastMousePos - mi.Location); return true; } return false; @@ -94,13 +95,13 @@ namespace OpenRA.Widgets if (Game.Settings.ViewportEdgeScroll) { // Check for edge-scroll - if (Widget.LastMousePos.X < EdgeScrollThreshold) + if (Viewport.LastMousePos.X < EdgeScrollThreshold) Edge = Edge.Set(ScrollDirection.Left, true); - if (Widget.LastMousePos.Y < EdgeScrollThreshold) + if (Viewport.LastMousePos.Y < EdgeScrollThreshold) Edge = Edge.Set(ScrollDirection.Up, true); - if (Widget.LastMousePos.X >= Game.viewport.Width - EdgeScrollThreshold) + if (Viewport.LastMousePos.X >= Game.viewport.Width - EdgeScrollThreshold) Edge = Edge.Set(ScrollDirection.Right, true); - if (Widget.LastMousePos.Y >= Game.viewport.Height - EdgeScrollThreshold) + if (Viewport.LastMousePos.Y >= Game.viewport.Height - EdgeScrollThreshold) Edge = Edge.Set(ScrollDirection.Down, true); } var scroll = new float2(0,0); diff --git a/OpenRA.Game/Widgets/Widget.cs b/OpenRA.Game/Widgets/Widget.cs index c3f97bbddd..f19f945156 100644 --- a/OpenRA.Game/Widgets/Widget.cs +++ b/OpenRA.Game/Widgets/Widget.cs @@ -203,8 +203,6 @@ namespace OpenRA.Widgets public virtual bool HandleInputInner(MouseInput mi) { return !ClickThrough; } - public static int TicksSinceLastMove = 0; - public static int2 LastMousePos; public static bool HandleInput(World world, MouseInput mi) { bool handled = false; @@ -216,8 +214,8 @@ namespace OpenRA.Widgets if (mi.Event == MouseInputEvent.Move) { - LastMousePos = mi.Location; - TicksSinceLastMove = 0; + Viewport.LastMousePos = mi.Location; + Viewport.TicksSinceLastMove = 0; } return handled; } @@ -344,7 +342,7 @@ namespace OpenRA.Widgets if (!world.GameHasStarted) return; if (world.LocalPlayer == null) return; - ++TicksSinceLastMove; + ++Viewport.TicksSinceLastMove; } public static void DoDraw(World world) diff --git a/OpenRA.Game/Widgets/WorldTooltipWidget.cs b/OpenRA.Game/Widgets/WorldTooltipWidget.cs index 6f7cc7f782..f1a6bc535b 100644 --- a/OpenRA.Game/Widgets/WorldTooltipWidget.cs +++ b/OpenRA.Game/Widgets/WorldTooltipWidget.cs @@ -22,10 +22,10 @@ namespace OpenRA.Widgets public WorldTooltipWidget() : base() { } public override void DrawInner(World world) { - if (Widget.TicksSinceLastMove < TooltipDelay || world == null || world.LocalPlayer == null) + if (Viewport.TicksSinceLastMove < TooltipDelay || world == null || world.LocalPlayer == null) return; - var cell = Game.viewport.ViewToWorld(Widget.LastMousePos).ToInt2(); + var cell = Game.viewport.ViewToWorld(Viewport.LastMousePos).ToInt2(); if (!world.Map.IsInMap(cell)) return; if (!world.LocalPlayer.Shroud.IsExplored(cell)) @@ -34,16 +34,16 @@ namespace OpenRA.Widgets var usz = Game.Renderer.BoldFont.Measure(utext) + new int2(20, 24); WidgetUtils.DrawPanel("dialog4", Rectangle.FromLTRB( - Widget.LastMousePos.X + 20, Widget.LastMousePos.Y + 20, - Widget.LastMousePos.X + usz.X + 20, Widget.LastMousePos.Y + usz.Y + 20)); + Viewport.LastMousePos.X + 20, Viewport.LastMousePos.Y + 20, + Viewport.LastMousePos.X + usz.X + 20, Viewport.LastMousePos.Y + usz.Y + 20)); Game.Renderer.BoldFont.DrawText(utext, - new float2(Widget.LastMousePos.X + 30, Widget.LastMousePos.Y + 30), Color.White); + new float2(Viewport.LastMousePos.X + 30, Viewport.LastMousePos.Y + 30), Color.White); return; } - var actor = world.FindUnitsAtMouse(Widget.LastMousePos).FirstOrDefault(); + var actor = world.FindUnitsAtMouse(Viewport.LastMousePos).FirstOrDefault(); if (actor == null || !actor.IsVisible()) return; @@ -67,23 +67,23 @@ namespace OpenRA.Widgets sz.Y += 24; WidgetUtils.DrawPanel("dialog4", Rectangle.FromLTRB( - Widget.LastMousePos.X + 20, Widget.LastMousePos.Y + 20, - Widget.LastMousePos.X + sz.X + 20, Widget.LastMousePos.Y + sz.Y + 20)); + Viewport.LastMousePos.X + 20, Viewport.LastMousePos.Y + 20, + Viewport.LastMousePos.X + sz.X + 20, Viewport.LastMousePos.Y + sz.Y + 20)); Game.Renderer.BoldFont.DrawText(text, - new float2(Widget.LastMousePos.X + 30, Widget.LastMousePos.Y + 30), Color.White); + new float2(Viewport.LastMousePos.X + 30, Viewport.LastMousePos.Y + 30), Color.White); if (text2 != "") { Game.Renderer.RegularFont.DrawText(text2, - new float2(Widget.LastMousePos.X + 65, Widget.LastMousePos.Y + 50), actor.Owner.Color); + new float2(Viewport.LastMousePos.X + 65, Viewport.LastMousePos.Y + 50), actor.Owner.Color); Game.Renderer.RegularFont.DrawText(text3, - new float2(Widget.LastMousePos.X + 65 + sz2.X, Widget.LastMousePos.Y + 50), Color.White); + new float2(Viewport.LastMousePos.X + 65 + sz2.X, Viewport.LastMousePos.Y + 50), Color.White); WidgetUtils.DrawRGBA( ChromeProvider.GetImage("flags", actor.Owner.Country.Race), - new float2(Widget.LastMousePos.X + 30, Widget.LastMousePos.Y + 50)); + new float2(Viewport.LastMousePos.X + 30, Viewport.LastMousePos.Y + 50)); } Game.Renderer.RgbaSpriteRenderer.Flush(); }