From 6ea2a06e4b68463f6a5431bb22f2095834465772 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 12 Oct 2010 01:29:07 +1300 Subject: [PATCH] pass WorldRenderer to Widget.Draw, DrawInner --- OpenRA.Game/Game.cs | 2 +- OpenRA.Game/Graphics/Viewport.cs | 9 +- OpenRA.Game/Graphics/WorldRenderer.cs | 6 ++ OpenRA.Game/Widgets/BackgroundWidget.cs | 4 +- OpenRA.Game/Widgets/ButtonWidget.cs | 5 +- OpenRA.Game/Widgets/ChatDisplayWidget.cs | 7 +- OpenRA.Game/Widgets/ChatEntryWidget.cs | 3 +- OpenRA.Game/Widgets/CheckboxWidget.cs | 2 +- OpenRA.Game/Widgets/ColorBlockWidget.cs | 15 +-- .../Widgets/Delegates/LobbyDelegate.cs | 4 +- OpenRA.Game/Widgets/ImageWidget.cs | 18 ++-- OpenRA.Game/Widgets/LabelWidget.cs | 3 +- OpenRA.Game/Widgets/ListBoxWidget.cs | 98 +++++++++---------- OpenRA.Game/Widgets/MapPreviewWidget.cs | 2 +- OpenRA.Game/Widgets/PerfGraphWidget.cs | 23 ++--- OpenRA.Game/Widgets/ScrollingTextWidget.cs | 15 ++- OpenRA.Game/Widgets/ShpImageWidget.cs | 4 +- OpenRA.Game/Widgets/SliderWidget.cs | 3 +- OpenRA.Game/Widgets/TextFieldWidget.cs | 3 +- OpenRA.Game/Widgets/TimerWidget.cs | 9 +- .../Widgets/ViewportScrollControllerWidget.cs | 2 +- OpenRA.Game/Widgets/VqaPlayerWidget.cs | 2 +- OpenRA.Game/Widgets/Widget.cs | 14 +-- OpenRA.Game/Widgets/WidgetUtils.cs | 4 +- .../WorldInteractionControllerWidget.cs | 7 +- OpenRA.Game/Widgets/WorldTooltipWidget.cs | 2 +- OpenRA.Game/World.cs | 2 +- OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs | 12 +-- OpenRA.Mods.RA/Widgets/MoneyBinWidget.cs | 2 +- OpenRA.Mods.RA/Widgets/OrderButtonWidget.cs | 2 +- OpenRA.Mods.RA/Widgets/PowerBinWidget.cs | 2 +- OpenRA.Mods.RA/Widgets/RadarBinWidget.cs | 2 +- .../Widgets/SpecialPowerBinWidget.cs | 8 +- 33 files changed, 159 insertions(+), 137 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index b2f1998ffe..1af199ea86 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -181,7 +181,7 @@ namespace OpenRA LocalTick = 0; orderManager.StartGame(); - viewport.RefreshPalette(); + worldRenderer.RefreshPalette(); AfterGameStart( world ); } diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs index 013c09f00f..ead45384ff 100644 --- a/OpenRA.Game/Graphics/Viewport.cs +++ b/OpenRA.Game/Graphics/Viewport.cs @@ -100,7 +100,7 @@ namespace OpenRA.Graphics renderer.BeginFrame(scrollPosition); wr.Draw(); - Widget.DoDraw(); + Widget.DoDraw( wr ); var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default"; var c = new Cursor(cursorName); @@ -109,16 +109,9 @@ namespace OpenRA.Graphics renderer.EndFrame(); } - public void RefreshPalette() - { - Game.worldRenderer.palette.Update( - Game.world.WorldActor.TraitsImplementing()); - } - public void Tick() { cursorFrame += 0.5f; - RefreshPalette(); } public float2 ViewToWorld(int2 loc) diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index b79b562c53..7ffa482a66 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -73,6 +73,7 @@ namespace OpenRA.Graphics Renderable[] worldSprites = { }; public void Tick() { + RefreshPalette(); var bounds = GetBoundsRect(); var comparer = new SpriteComparer(); @@ -188,5 +189,10 @@ namespace OpenRA.Graphics prev = pos; } } + + public void RefreshPalette() + { + palette.Update( world.WorldActor.TraitsImplementing() ); + } } } diff --git a/OpenRA.Game/Widgets/BackgroundWidget.cs b/OpenRA.Game/Widgets/BackgroundWidget.cs index a6ae987af1..ffb9419f6b 100644 --- a/OpenRA.Game/Widgets/BackgroundWidget.cs +++ b/OpenRA.Game/Widgets/BackgroundWidget.cs @@ -8,13 +8,15 @@ */ #endregion +using OpenRA.Graphics; + namespace OpenRA.Widgets { class BackgroundWidget : Widget { public readonly string Background = "dialog"; - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { WidgetUtils.DrawPanel(Background, RenderBounds); } diff --git a/OpenRA.Game/Widgets/ButtonWidget.cs b/OpenRA.Game/Widgets/ButtonWidget.cs index cd6af74306..9616f05708 100644 --- a/OpenRA.Game/Widgets/ButtonWidget.cs +++ b/OpenRA.Game/Widgets/ButtonWidget.cs @@ -10,6 +10,7 @@ using System; using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -53,7 +54,7 @@ namespace OpenRA.Widgets var wasPressed = Depressed; return (LoseFocus(mi) && wasPressed); } - + if (mi.Event == MouseInputEvent.Down) Depressed = true; else if (mi.Event == MouseInputEvent.Move && Focused) @@ -62,7 +63,7 @@ namespace OpenRA.Widgets return Depressed; } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var font = (Bold) ? Game.Renderer.BoldFont : Game.Renderer.RegularFont; var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0); diff --git a/OpenRA.Game/Widgets/ChatDisplayWidget.cs b/OpenRA.Game/Widgets/ChatDisplayWidget.cs index f846089519..80ff00059f 100644 --- a/OpenRA.Game/Widgets/ChatDisplayWidget.cs +++ b/OpenRA.Game/Widgets/ChatDisplayWidget.cs @@ -8,9 +8,10 @@ */ #endregion -using System.Collections.Generic; -using System.Drawing; +using System.Collections.Generic; +using System.Drawing; using System.Linq; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -32,7 +33,7 @@ namespace OpenRA.Widgets : base(widget) { } public override Rectangle EventBounds { get { return Rectangle.Empty; } } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var pos = RenderOrigin; var chatLogArea = new Rectangle(pos.X, pos.Y, Bounds.Width, Bounds.Height); diff --git a/OpenRA.Game/Widgets/ChatEntryWidget.cs b/OpenRA.Game/Widgets/ChatEntryWidget.cs index 2f0aa90443..d162bf1c52 100644 --- a/OpenRA.Game/Widgets/ChatEntryWidget.cs +++ b/OpenRA.Game/Widgets/ChatEntryWidget.cs @@ -9,6 +9,7 @@ #endregion using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -24,7 +25,7 @@ namespace OpenRA.Widgets bool composing = false; bool teamChat = false; - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { if (composing) { diff --git a/OpenRA.Game/Widgets/CheckboxWidget.cs b/OpenRA.Game/Widgets/CheckboxWidget.cs index 0497135595..92ad126dc2 100644 --- a/OpenRA.Game/Widgets/CheckboxWidget.cs +++ b/OpenRA.Game/Widgets/CheckboxWidget.cs @@ -21,7 +21,7 @@ namespace OpenRA.Widgets public bool Bold = false; public Func Checked = () => false; - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var font = Bold ? Game.Renderer.BoldFont : Game.Renderer.RegularFont; var pos = RenderOrigin; diff --git a/OpenRA.Game/Widgets/ColorBlockWidget.cs b/OpenRA.Game/Widgets/ColorBlockWidget.cs index ad06e585c3..1c50b67fc8 100644 --- a/OpenRA.Game/Widgets/ColorBlockWidget.cs +++ b/OpenRA.Game/Widgets/ColorBlockWidget.cs @@ -6,10 +6,11 @@ * as published by the Free Software Foundation. For more information, * see LICENSE. */ -#endregion - -using System; +#endregion + +using System; using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -34,9 +35,9 @@ namespace OpenRA.Widgets return new ColorBlockWidget(this); } - public override void DrawInner() - { - WidgetUtils.FillRectWithColor(RenderBounds, GetColor()); + public override void DrawInner( WorldRenderer wr ) + { + WidgetUtils.FillRectWithColor(RenderBounds, GetColor()); } } -} +} diff --git a/OpenRA.Game/Widgets/Delegates/LobbyDelegate.cs b/OpenRA.Game/Widgets/Delegates/LobbyDelegate.cs index 390811fddc..5f629e2b98 100755 --- a/OpenRA.Game/Widgets/Delegates/LobbyDelegate.cs +++ b/OpenRA.Game/Widgets/Delegates/LobbyDelegate.cs @@ -13,6 +13,7 @@ using System.Drawing; using System.Linq; using OpenRA.FileFormats; using OpenRA.Network; +using OpenRA.Graphics; namespace OpenRA.Widgets.Delegates { @@ -172,7 +173,7 @@ namespace OpenRA.Widgets.Delegates { CurrentColorPreview1 = PlayerColorRemap.ColorFromHSL(hf, sf, lf); CurrentColorPreview2 = PlayerColorRemap.ColorFromHSL(hf, sf, r * lf); - Game.viewport.RefreshPalette(); + Game.worldRenderer.RefreshPalette(); } void UpdateCurrentMap() @@ -182,7 +183,6 @@ namespace OpenRA.Widgets.Delegates Map = Game.modData.AvailableMaps[MapUid]; } - bool hasJoined = false; void JoinedServer() { diff --git a/OpenRA.Game/Widgets/ImageWidget.cs b/OpenRA.Game/Widgets/ImageWidget.cs index c39c298b47..0722df03b3 100644 --- a/OpenRA.Game/Widgets/ImageWidget.cs +++ b/OpenRA.Game/Widgets/ImageWidget.cs @@ -6,12 +6,12 @@ * as published by the Free Software Foundation. For more information, * see LICENSE. */ -#endregion - -using System; -using OpenRA.Graphics; - -namespace OpenRA.Widgets +#endregion + +using System; +using OpenRA.Graphics; + +namespace OpenRA.Widgets { public class ImageWidget : Widget { @@ -38,7 +38,7 @@ namespace OpenRA.Widgets public override Widget Clone() { return new ImageWidget(this); } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var name = GetImageName(); var collection = GetImageCollection(); @@ -46,5 +46,5 @@ namespace OpenRA.Widgets ChromeProvider.GetImage(collection, name), RenderOrigin); } - } -} + } +} diff --git a/OpenRA.Game/Widgets/LabelWidget.cs b/OpenRA.Game/Widgets/LabelWidget.cs index 57e2613af5..208ad55adb 100644 --- a/OpenRA.Game/Widgets/LabelWidget.cs +++ b/OpenRA.Game/Widgets/LabelWidget.cs @@ -10,6 +10,7 @@ using System; using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -43,7 +44,7 @@ namespace OpenRA.Widgets GetBackground = other.GetBackground; } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var bg = GetBackground(); diff --git a/OpenRA.Game/Widgets/ListBoxWidget.cs b/OpenRA.Game/Widgets/ListBoxWidget.cs index 82f2fece67..0adeb75c74 100644 --- a/OpenRA.Game/Widgets/ListBoxWidget.cs +++ b/OpenRA.Game/Widgets/ListBoxWidget.cs @@ -1,14 +1,14 @@ -#region Copyright & License Information -/* - * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see LICENSE. - */ +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ #endregion - -using System.Drawing; + +using System.Drawing; using OpenRA.Graphics; namespace OpenRA.Widgets @@ -30,7 +30,7 @@ namespace OpenRA.Widgets Rectangle backgroundRect; Rectangle scrollbarRect; - public ListBoxWidget() : base() {} + public ListBoxWidget() : base() {} protected ListBoxWidget(ListBoxWidget other) : base(other) { @@ -44,47 +44,47 @@ namespace OpenRA.Widgets DownPressed = other.DownPressed; } - public override void DrawInner() {} - public override void Draw() - { - if (!IsVisible()) - return; - - backgroundRect = new Rectangle(RenderBounds.X, RenderBounds.Y, RenderBounds.Width - ScrollbarWidth, RenderBounds.Height); - upButtonRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Y, ScrollbarWidth, ScrollbarWidth); - downButtonRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Bottom - ScrollbarWidth, ScrollbarWidth, ScrollbarWidth); - scrollbarRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Y + ScrollbarWidth, ScrollbarWidth, RenderBounds.Height - 2 * ScrollbarWidth); - - string upButtonBg = (UpPressed) ? "dialog3" : "dialog2"; - string downButtonBg = (DownPressed) ? "dialog3" : "dialog2"; - string scrollbarBg = "dialog3"; - - WidgetUtils.DrawPanel(Background, backgroundRect); - WidgetUtils.DrawPanel(upButtonBg, upButtonRect); - WidgetUtils.DrawPanel(downButtonBg, downButtonRect); - WidgetUtils.DrawPanel(scrollbarBg, scrollbarRect); - - var upOffset = UpPressed ? 4 : 3; - var downOffset = DownPressed ? 4 : 3; - WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "up_arrow"), - new float2(upButtonRect.Left + upOffset, upButtonRect.Top + upOffset)); - WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "down_arrow"), - new float2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset)); - - Game.Renderer.EnableScissor(backgroundRect.X, backgroundRect.Y + HeaderHeight, backgroundRect.Width, backgroundRect.Height - HeaderHeight); - - foreach (var child in Children) - child.Draw(); - - Game.Renderer.DisableScissor(); + public override void DrawInner( WorldRenderer wr ) {} + public override void Draw( WorldRenderer wr ) + { + if (!IsVisible()) + return; + + backgroundRect = new Rectangle(RenderBounds.X, RenderBounds.Y, RenderBounds.Width - ScrollbarWidth, RenderBounds.Height); + upButtonRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Y, ScrollbarWidth, ScrollbarWidth); + downButtonRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Bottom - ScrollbarWidth, ScrollbarWidth, ScrollbarWidth); + scrollbarRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Y + ScrollbarWidth, ScrollbarWidth, RenderBounds.Height - 2 * ScrollbarWidth); + + string upButtonBg = (UpPressed) ? "dialog3" : "dialog2"; + string downButtonBg = (DownPressed) ? "dialog3" : "dialog2"; + string scrollbarBg = "dialog3"; + + WidgetUtils.DrawPanel(Background, backgroundRect); + WidgetUtils.DrawPanel(upButtonBg, upButtonRect); + WidgetUtils.DrawPanel(downButtonBg, downButtonRect); + WidgetUtils.DrawPanel(scrollbarBg, scrollbarRect); + + var upOffset = UpPressed ? 4 : 3; + var downOffset = DownPressed ? 4 : 3; + WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "up_arrow"), + new float2(upButtonRect.Left + upOffset, upButtonRect.Top + upOffset)); + WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "down_arrow"), + new float2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset)); + + Game.Renderer.EnableScissor(backgroundRect.X, backgroundRect.Y + HeaderHeight, backgroundRect.Width, backgroundRect.Height - HeaderHeight); + + foreach (var child in Children) + child.Draw( wr ); + + Game.Renderer.DisableScissor(); } public override int2 ChildOrigin { get { return RenderOrigin + new int2(0, (int)ListOffset); } } - - public override Rectangle GetEventBounds() - { - return EventBounds; - } + + public override Rectangle GetEventBounds() + { + return EventBounds; + } public override void Tick () { diff --git a/OpenRA.Game/Widgets/MapPreviewWidget.cs b/OpenRA.Game/Widgets/MapPreviewWidget.cs index e7b76acf0b..e5657a8ecd 100644 --- a/OpenRA.Game/Widgets/MapPreviewWidget.cs +++ b/OpenRA.Game/Widgets/MapPreviewWidget.cs @@ -71,7 +71,7 @@ namespace OpenRA.Widgets static Sprite UnownedSpawn = null; static Sprite OwnedSpawn = null; - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { if (UnownedSpawn == null) UnownedSpawn = ChromeProvider.GetImage("spawnpoints", "unowned"); diff --git a/OpenRA.Game/Widgets/PerfGraphWidget.cs b/OpenRA.Game/Widgets/PerfGraphWidget.cs index 9e018cc8d5..3ed731e2e8 100644 --- a/OpenRA.Game/Widgets/PerfGraphWidget.cs +++ b/OpenRA.Game/Widgets/PerfGraphWidget.cs @@ -6,19 +6,20 @@ * as published by the Free Software Foundation. For more information, * see LICENSE. */ -#endregion +#endregion using System.Drawing; -using System.Linq; -using OpenRA.Support; - -namespace OpenRA.Widgets -{ - class PerfGraphWidget : Widget - { +using System.Linq; +using OpenRA.Graphics; +using OpenRA.Support; + +namespace OpenRA.Widgets +{ + class PerfGraphWidget : Widget + { public PerfGraphWidget() : base() { } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var rect = RenderBounds; float2 origin = Game.viewport.Location + new float2(rect.Right, rect.Bottom); @@ -40,6 +41,6 @@ namespace OpenRA.Widgets return b; }); } - } - } + } + } } \ No newline at end of file diff --git a/OpenRA.Game/Widgets/ScrollingTextWidget.cs b/OpenRA.Game/Widgets/ScrollingTextWidget.cs index d56499038f..5927ec2c44 100755 --- a/OpenRA.Game/Widgets/ScrollingTextWidget.cs +++ b/OpenRA.Game/Widgets/ScrollingTextWidget.cs @@ -1,8 +1,19 @@ -using System; +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ +#endregion + +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -93,7 +104,7 @@ namespace OpenRA.Widgets Text = Text.Replace("\r", ""); } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var bg = GetBackground(); diff --git a/OpenRA.Game/Widgets/ShpImageWidget.cs b/OpenRA.Game/Widgets/ShpImageWidget.cs index cfcb9843a9..1a2684d3cf 100644 --- a/OpenRA.Game/Widgets/ShpImageWidget.cs +++ b/OpenRA.Game/Widgets/ShpImageWidget.cs @@ -48,7 +48,7 @@ namespace OpenRA.Widgets Sprite sprite = null; string cachedImage = null; int cachedFrame= -1; - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var image = GetImage(); var frame = GetFrame(); @@ -61,7 +61,7 @@ namespace OpenRA.Widgets cachedFrame = frame; } - Game.Renderer.WorldSpriteRenderer.DrawSprite(sprite,RenderOrigin, Game.worldRenderer, palette); + Game.Renderer.WorldSpriteRenderer.DrawSprite(sprite,RenderOrigin, wr, palette); } } } diff --git a/OpenRA.Game/Widgets/SliderWidget.cs b/OpenRA.Game/Widgets/SliderWidget.cs index d0a8309e16..2897d565ae 100755 --- a/OpenRA.Game/Widgets/SliderWidget.cs +++ b/OpenRA.Game/Widgets/SliderWidget.cs @@ -10,6 +10,7 @@ using System; using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -165,7 +166,7 @@ namespace OpenRA.Widgets } } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { if (!IsVisible()) return; diff --git a/OpenRA.Game/Widgets/TextFieldWidget.cs b/OpenRA.Game/Widgets/TextFieldWidget.cs index b9858e2039..7a1eb88ef7 100644 --- a/OpenRA.Game/Widgets/TextFieldWidget.cs +++ b/OpenRA.Game/Widgets/TextFieldWidget.cs @@ -10,6 +10,7 @@ using System; using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -107,7 +108,7 @@ namespace OpenRA.Widgets base.Tick(); } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { int margin = 5; var font = (Bold) ? Game.Renderer.BoldFont : Game.Renderer.RegularFont; diff --git a/OpenRA.Game/Widgets/TimerWidget.cs b/OpenRA.Game/Widgets/TimerWidget.cs index d973b83b0c..ac6ef0de9f 100644 --- a/OpenRA.Game/Widgets/TimerWidget.cs +++ b/OpenRA.Game/Widgets/TimerWidget.cs @@ -6,9 +6,10 @@ * as published by the Free Software Foundation. For more information, * see LICENSE. */ -#endregion - -using System.Drawing; +#endregion + +using System.Drawing; +using OpenRA.Graphics; using OpenRA.Support; namespace OpenRA.Widgets @@ -22,7 +23,7 @@ namespace OpenRA.Widgets IsVisible = () => Game.Settings.Game.MatchTimer; } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var s = WorldUtils.FormatTime(Game.LocalTick); var size = Game.Renderer.TitleFont.Measure(s); diff --git a/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs b/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs index 3a49258929..15f091faae 100755 --- a/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs +++ b/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs @@ -32,7 +32,7 @@ namespace OpenRA.Widgets public ViewportScrollControllerWidget() : base() { } protected ViewportScrollControllerWidget(ViewportScrollControllerWidget widget) : base(widget) {} - public override void DrawInner() {} + public override void DrawInner( WorldRenderer wr ) {} public override bool HandleInputInner(MouseInput mi) { diff --git a/OpenRA.Game/Widgets/VqaPlayerWidget.cs b/OpenRA.Game/Widgets/VqaPlayerWidget.cs index 29c7a5c66d..f971b4016c 100644 --- a/OpenRA.Game/Widgets/VqaPlayerWidget.cs +++ b/OpenRA.Game/Widgets/VqaPlayerWidget.cs @@ -69,7 +69,7 @@ namespace OpenRA.Widgets overlaySprite.sheet.Texture.SetData(overlay); } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { if (video == null) return; diff --git a/OpenRA.Game/Widgets/Widget.cs b/OpenRA.Game/Widgets/Widget.cs index c8718b421f..23d9de41f6 100644 --- a/OpenRA.Game/Widgets/Widget.cs +++ b/OpenRA.Game/Widgets/Widget.cs @@ -269,15 +269,15 @@ namespace OpenRA.Widgets return false; } - public abstract void DrawInner(); + public abstract void DrawInner( WorldRenderer wr ); - public virtual void Draw() + public virtual void Draw( WorldRenderer wr ) { if (IsVisible()) { - DrawInner(); + DrawInner( wr ); foreach (var child in Children) - child.Draw(); + child.Draw( wr ); } } @@ -340,9 +340,9 @@ namespace OpenRA.Widgets RootWidget.Tick(); } - public static void DoDraw() + public static void DoDraw( WorldRenderer wr ) { - RootWidget.Draw(); + RootWidget.Draw( wr ); } } @@ -351,7 +351,7 @@ namespace OpenRA.Widgets public ContainerWidget(Widget other) : base(other) { } - public override void DrawInner() { } + public override void DrawInner( WorldRenderer wr ) { } public override string GetCursor(int2 pos) { return null; } public override Widget Clone() { return new ContainerWidget(this); } diff --git a/OpenRA.Game/Widgets/WidgetUtils.cs b/OpenRA.Game/Widgets/WidgetUtils.cs index 4789d619bf..39337065c9 100644 --- a/OpenRA.Game/Widgets/WidgetUtils.cs +++ b/OpenRA.Game/Widgets/WidgetUtils.cs @@ -27,9 +27,9 @@ namespace OpenRA.Widgets Game.Renderer.RgbaSpriteRenderer.DrawSprite(s,pos); } - public static void DrawSHP(Sprite s, float2 pos) + public static void DrawSHP(Sprite s, float2 pos, WorldRenderer wr) { - Game.Renderer.WorldSpriteRenderer.DrawSprite(s,pos, Game.worldRenderer, "chrome"); + Game.Renderer.WorldSpriteRenderer.DrawSprite(s,pos, wr, "chrome"); } public static void DrawPanel(string collection, Rectangle Bounds) diff --git a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs index b8d26e173c..3b4e77f0d7 100644 --- a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs +++ b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs @@ -13,7 +13,8 @@ using System.Drawing; using System.Linq; using OpenRA.FileFormats; using OpenRA.Orders; -using OpenRA.Traits; +using OpenRA.Traits; +using OpenRA.Graphics; namespace OpenRA.Widgets { @@ -26,7 +27,7 @@ namespace OpenRA.Widgets this.world = world; } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var selbox = SelectionBox; if (selbox == null) return; @@ -41,7 +42,7 @@ namespace OpenRA.Widgets Game.Renderer.LineRenderer.DrawLine(a, a + c, Color.White, Color.White); foreach (var u in SelectActorsInBox(world, selbox.Value.First, selbox.Value.Second)) - Game.worldRenderer.DrawSelectionBox(u, Color.Yellow); + wr.DrawSelectionBox(u, Color.Yellow); } float2 dragStart, dragEnd; diff --git a/OpenRA.Game/Widgets/WorldTooltipWidget.cs b/OpenRA.Game/Widgets/WorldTooltipWidget.cs index b4b8da3126..1bd7f9f1ed 100644 --- a/OpenRA.Game/Widgets/WorldTooltipWidget.cs +++ b/OpenRA.Game/Widgets/WorldTooltipWidget.cs @@ -20,7 +20,7 @@ namespace OpenRA.Widgets { public int TooltipDelay = 10; public WorldTooltipWidget() : base() { } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var world = Game.world; if (Viewport.TicksSinceLastMove < TooltipDelay || world == null || world.LocalPlayer == null) diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index d9f8b9d54b..f869eaa28e 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -163,9 +163,9 @@ namespace OpenRA }, "[{2}] Trait: {0} ({1:0.000} ms)", Game.Settings.Debug.LongTickThreshold ); effects.DoTimed( e => e.Tick( this ), "[{2}] Effect: {0} ({1:0.000} ms)", Game.Settings.Debug.LongTickThreshold ); - Game.viewport.Tick(); while (frameEndActions.Count != 0) frameEndActions.Dequeue()(this); + Game.viewport.Tick(); } public IEnumerable Actors { get { return actors; } } diff --git a/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs b/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs index a369b759e2..22b1082d85 100755 --- a/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs +++ b/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs @@ -176,15 +176,15 @@ namespace OpenRA.Mods.RA.Widgets int paletteHeight = 0; int numActualRows = 0; - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { if (!IsVisible()) return; // todo: fix - paletteHeight = DrawPalette(world, CurrentQueue); + paletteHeight = DrawPalette(wr, world, CurrentQueue); DrawBuildTabs(world, paletteHeight); } - int DrawPalette(World world, ProductionQueue queue) + int DrawPalette(WorldRenderer wr, World world, ProductionQueue queue) { buttons.Clear(); if (queue == null) return 0; @@ -218,7 +218,7 @@ namespace OpenRA.Mods.RA.Widgets { var rect = new RectangleF(origin.X + x * 64, origin.Y + 48 * y, 64, 48); var drawPos = new float2(rect.Location); - WidgetUtils.DrawSHP(iconSprites[item.Name], drawPos); + WidgetUtils.DrawSHP(iconSprites[item.Name], drawPos, wr); var firstOfThis = queue.AllQueued().FirstOrDefault(a => a.Item == item.Name); @@ -233,7 +233,7 @@ namespace OpenRA.Mods.RA.Widgets () => (firstOfThis.TotalTime - firstOfThis.RemainingTime) * (clock.CurrentSequence.Length - 1) / firstOfThis.TotalTime); clock.Tick(); - WidgetUtils.DrawSHP(clock.Image, drawPos); + WidgetUtils.DrawSHP(clock.Image, drawPos, wr); if (firstOfThis.Done) { @@ -272,7 +272,7 @@ namespace OpenRA.Mods.RA.Widgets if (x != 0) y++; foreach (var ob in overlayBits) - WidgetUtils.DrawSHP(ob.First, ob.Second); + WidgetUtils.DrawSHP(ob.First, ob.Second, wr); // Tooltip if (tooltipItem != null && !paletteAnimating && paletteOpen) diff --git a/OpenRA.Mods.RA/Widgets/MoneyBinWidget.cs b/OpenRA.Mods.RA/Widgets/MoneyBinWidget.cs index 44fa50a757..28ca555e73 100755 --- a/OpenRA.Mods.RA/Widgets/MoneyBinWidget.cs +++ b/OpenRA.Mods.RA/Widgets/MoneyBinWidget.cs @@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Widgets public MoneyBinWidget() : base() { } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var world = Game.world; if( world.LocalPlayer == null ) return; diff --git a/OpenRA.Mods.RA/Widgets/OrderButtonWidget.cs b/OpenRA.Mods.RA/Widgets/OrderButtonWidget.cs index 0374c08ca2..1ca3562cc3 100755 --- a/OpenRA.Mods.RA/Widgets/OrderButtonWidget.cs +++ b/OpenRA.Mods.RA/Widgets/OrderButtonWidget.cs @@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA.Widgets GetLongDesc = () => LongDesc; } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var image = ChromeProvider.GetImage(Image + "-button", GetImage()); var rect = new Rectangle(RenderBounds.X, RenderBounds.Y, (int)image.size.X, (int)image.size.Y); diff --git a/OpenRA.Mods.RA/Widgets/PowerBinWidget.cs b/OpenRA.Mods.RA/Widgets/PowerBinWidget.cs index ea0e7a7a48..2e9633b11c 100755 --- a/OpenRA.Mods.RA/Widgets/PowerBinWidget.cs +++ b/OpenRA.Mods.RA/Widgets/PowerBinWidget.cs @@ -25,7 +25,7 @@ namespace OpenRA.Mods.RA.Widgets float? lastPowerDrainedPos; string powerCollection; - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var world = Game.world; if( world.LocalPlayer == null ) return; diff --git a/OpenRA.Mods.RA/Widgets/RadarBinWidget.cs b/OpenRA.Mods.RA/Widgets/RadarBinWidget.cs index d516f07ec1..d219efafb3 100755 --- a/OpenRA.Mods.RA/Widgets/RadarBinWidget.cs +++ b/OpenRA.Mods.RA/Widgets/RadarBinWidget.cs @@ -119,7 +119,7 @@ namespace OpenRA.Mods.RA.Widgets get { return new Rectangle((int)mapRect.X, (int)mapRect.Y, (int)mapRect.Width, (int)mapRect.Height);} } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { if( world == null || world.LocalPlayer == null ) return; diff --git a/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs b/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs index 45eca959af..d46f158588 100755 --- a/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs +++ b/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs @@ -63,7 +63,7 @@ namespace OpenRA.Mods.RA.Widgets return false; } - public override void DrawInner() + public override void DrawInner( WorldRenderer wr ) { var world = Game.world; buttons.Clear(); @@ -127,19 +127,19 @@ namespace OpenRA.Mods.RA.Widgets } } - WidgetUtils.DrawSHP(image, drawPos); + WidgetUtils.DrawSHP(image, drawPos, wr); clock.PlayFetchIndex("idle", () => (sp.TotalTime - sp.RemainingTime) * (clock.CurrentSequence.Length - 1) / sp.TotalTime); clock.Tick(); - WidgetUtils.DrawSHP(clock.Image, drawPos); + WidgetUtils.DrawSHP(clock.Image, drawPos, wr); if (sp.IsReady) { ready.Play("ready"); - WidgetUtils.DrawSHP(ready.Image, drawPos + new float2((64 - ready.Image.size.X) / 2, 2)); + WidgetUtils.DrawSHP(ready.Image, drawPos + new float2((64 - ready.Image.size.X) / 2, 2), wr); } buttons.Add(Pair.New(rect,HandleSupportPower(sp)));