move LastMousePosition et al from Widget to Viewport

This commit is contained in:
Bob
2010-07-30 20:07:39 +12:00
parent 3cd9a1e0e4
commit 2dd558a065
8 changed files with 31 additions and 29 deletions

View File

@@ -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();

View File

@@ -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.

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)

View File

@@ -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();
}