pass WorldRenderer to Widget.Draw, DrawInner

This commit is contained in:
Bob
2010-10-12 01:29:07 +13:00
parent 597dba8584
commit 6ea2a06e4b
33 changed files with 159 additions and 137 deletions

View File

@@ -181,7 +181,7 @@ namespace OpenRA
LocalTick = 0; LocalTick = 0;
orderManager.StartGame(); orderManager.StartGame();
viewport.RefreshPalette(); worldRenderer.RefreshPalette();
AfterGameStart( world ); AfterGameStart( world );
} }

View File

@@ -100,7 +100,7 @@ namespace OpenRA.Graphics
renderer.BeginFrame(scrollPosition); renderer.BeginFrame(scrollPosition);
wr.Draw(); wr.Draw();
Widget.DoDraw(); Widget.DoDraw( wr );
var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default"; var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default";
var c = new Cursor(cursorName); var c = new Cursor(cursorName);
@@ -109,16 +109,9 @@ namespace OpenRA.Graphics
renderer.EndFrame(); renderer.EndFrame();
} }
public void RefreshPalette()
{
Game.worldRenderer.palette.Update(
Game.world.WorldActor.TraitsImplementing<IPaletteModifier>());
}
public void Tick() public void Tick()
{ {
cursorFrame += 0.5f; cursorFrame += 0.5f;
RefreshPalette();
} }
public float2 ViewToWorld(int2 loc) public float2 ViewToWorld(int2 loc)

View File

@@ -73,6 +73,7 @@ namespace OpenRA.Graphics
Renderable[] worldSprites = { }; Renderable[] worldSprites = { };
public void Tick() public void Tick()
{ {
RefreshPalette();
var bounds = GetBoundsRect(); var bounds = GetBoundsRect();
var comparer = new SpriteComparer(); var comparer = new SpriteComparer();
@@ -188,5 +189,10 @@ namespace OpenRA.Graphics
prev = pos; prev = pos;
} }
} }
public void RefreshPalette()
{
palette.Update( world.WorldActor.TraitsImplementing<IPaletteModifier>() );
}
} }
} }

View File

@@ -8,13 +8,15 @@
*/ */
#endregion #endregion
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
class BackgroundWidget : Widget class BackgroundWidget : Widget
{ {
public readonly string Background = "dialog"; public readonly string Background = "dialog";
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
WidgetUtils.DrawPanel(Background, RenderBounds); WidgetUtils.DrawPanel(Background, RenderBounds);
} }

View File

@@ -10,6 +10,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -62,7 +63,7 @@ namespace OpenRA.Widgets
return Depressed; return Depressed;
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var font = (Bold) ? Game.Renderer.BoldFont : Game.Renderer.RegularFont; var font = (Bold) ? Game.Renderer.BoldFont : Game.Renderer.RegularFont;
var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0); var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0);

View File

@@ -11,6 +11,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -32,7 +33,7 @@ namespace OpenRA.Widgets
: base(widget) { } : base(widget) { }
public override Rectangle EventBounds { get { return Rectangle.Empty; } } public override Rectangle EventBounds { get { return Rectangle.Empty; } }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var pos = RenderOrigin; var pos = RenderOrigin;
var chatLogArea = new Rectangle(pos.X, pos.Y, Bounds.Width, Bounds.Height); var chatLogArea = new Rectangle(pos.X, pos.Y, Bounds.Width, Bounds.Height);

View File

@@ -9,6 +9,7 @@
#endregion #endregion
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -24,7 +25,7 @@ namespace OpenRA.Widgets
bool composing = false; bool composing = false;
bool teamChat = false; bool teamChat = false;
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
if (composing) if (composing)
{ {

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Widgets
public bool Bold = false; public bool Bold = false;
public Func<bool> Checked = () => false; public Func<bool> Checked = () => false;
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var font = Bold ? Game.Renderer.BoldFont : Game.Renderer.RegularFont; var font = Bold ? Game.Renderer.BoldFont : Game.Renderer.RegularFont;
var pos = RenderOrigin; var pos = RenderOrigin;

View File

@@ -10,6 +10,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -34,7 +35,7 @@ namespace OpenRA.Widgets
return new ColorBlockWidget(this); return new ColorBlockWidget(this);
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
WidgetUtils.FillRectWithColor(RenderBounds, GetColor()); WidgetUtils.FillRectWithColor(RenderBounds, GetColor());
} }

View File

@@ -13,6 +13,7 @@ using System.Drawing;
using System.Linq; using System.Linq;
using OpenRA.FileFormats; using OpenRA.FileFormats;
using OpenRA.Network; using OpenRA.Network;
using OpenRA.Graphics;
namespace OpenRA.Widgets.Delegates namespace OpenRA.Widgets.Delegates
{ {
@@ -172,7 +173,7 @@ namespace OpenRA.Widgets.Delegates
{ {
CurrentColorPreview1 = PlayerColorRemap.ColorFromHSL(hf, sf, lf); CurrentColorPreview1 = PlayerColorRemap.ColorFromHSL(hf, sf, lf);
CurrentColorPreview2 = PlayerColorRemap.ColorFromHSL(hf, sf, r * lf); CurrentColorPreview2 = PlayerColorRemap.ColorFromHSL(hf, sf, r * lf);
Game.viewport.RefreshPalette(); Game.worldRenderer.RefreshPalette();
} }
void UpdateCurrentMap() void UpdateCurrentMap()
@@ -182,7 +183,6 @@ namespace OpenRA.Widgets.Delegates
Map = Game.modData.AvailableMaps[MapUid]; Map = Game.modData.AvailableMaps[MapUid];
} }
bool hasJoined = false; bool hasJoined = false;
void JoinedServer() void JoinedServer()
{ {

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Widgets
public override Widget Clone() { return new ImageWidget(this); } public override Widget Clone() { return new ImageWidget(this); }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var name = GetImageName(); var name = GetImageName();
var collection = GetImageCollection(); var collection = GetImageCollection();

View File

@@ -10,6 +10,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -43,7 +44,7 @@ namespace OpenRA.Widgets
GetBackground = other.GetBackground; GetBackground = other.GetBackground;
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var bg = GetBackground(); var bg = GetBackground();

View File

@@ -44,8 +44,8 @@ namespace OpenRA.Widgets
DownPressed = other.DownPressed; DownPressed = other.DownPressed;
} }
public override void DrawInner() {} public override void DrawInner( WorldRenderer wr ) {}
public override void Draw() public override void Draw( WorldRenderer wr )
{ {
if (!IsVisible()) if (!IsVisible())
return; return;
@@ -74,7 +74,7 @@ namespace OpenRA.Widgets
Game.Renderer.EnableScissor(backgroundRect.X, backgroundRect.Y + HeaderHeight, backgroundRect.Width, backgroundRect.Height - HeaderHeight); Game.Renderer.EnableScissor(backgroundRect.X, backgroundRect.Y + HeaderHeight, backgroundRect.Width, backgroundRect.Height - HeaderHeight);
foreach (var child in Children) foreach (var child in Children)
child.Draw(); child.Draw( wr );
Game.Renderer.DisableScissor(); Game.Renderer.DisableScissor();
} }

View File

@@ -71,7 +71,7 @@ namespace OpenRA.Widgets
static Sprite UnownedSpawn = null; static Sprite UnownedSpawn = null;
static Sprite OwnedSpawn = null; static Sprite OwnedSpawn = null;
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
if (UnownedSpawn == null) if (UnownedSpawn == null)
UnownedSpawn = ChromeProvider.GetImage("spawnpoints", "unowned"); UnownedSpawn = ChromeProvider.GetImage("spawnpoints", "unowned");

View File

@@ -10,6 +10,7 @@
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using OpenRA.Graphics;
using OpenRA.Support; using OpenRA.Support;
namespace OpenRA.Widgets namespace OpenRA.Widgets
@@ -18,7 +19,7 @@ namespace OpenRA.Widgets
{ {
public PerfGraphWidget() : base() { } public PerfGraphWidget() : base() { }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var rect = RenderBounds; var rect = RenderBounds;
float2 origin = Game.viewport.Location + new float2(rect.Right, rect.Bottom); float2 origin = Game.viewport.Location + new float2(rect.Right, rect.Bottom);

View File

@@ -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.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -93,7 +104,7 @@ namespace OpenRA.Widgets
Text = Text.Replace("\r", ""); Text = Text.Replace("\r", "");
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var bg = GetBackground(); var bg = GetBackground();

View File

@@ -48,7 +48,7 @@ namespace OpenRA.Widgets
Sprite sprite = null; Sprite sprite = null;
string cachedImage = null; string cachedImage = null;
int cachedFrame= -1; int cachedFrame= -1;
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var image = GetImage(); var image = GetImage();
var frame = GetFrame(); var frame = GetFrame();
@@ -61,7 +61,7 @@ namespace OpenRA.Widgets
cachedFrame = frame; cachedFrame = frame;
} }
Game.Renderer.WorldSpriteRenderer.DrawSprite(sprite,RenderOrigin, Game.worldRenderer, palette); Game.Renderer.WorldSpriteRenderer.DrawSprite(sprite,RenderOrigin, wr, palette);
} }
} }
} }

View File

@@ -10,6 +10,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -165,7 +166,7 @@ namespace OpenRA.Widgets
} }
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
if (!IsVisible()) if (!IsVisible())
return; return;

View File

@@ -10,6 +10,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -107,7 +108,7 @@ namespace OpenRA.Widgets
base.Tick(); base.Tick();
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
int margin = 5; int margin = 5;
var font = (Bold) ? Game.Renderer.BoldFont : Game.Renderer.RegularFont; var font = (Bold) ? Game.Renderer.BoldFont : Game.Renderer.RegularFont;

View File

@@ -9,6 +9,7 @@
#endregion #endregion
using System.Drawing; using System.Drawing;
using OpenRA.Graphics;
using OpenRA.Support; using OpenRA.Support;
namespace OpenRA.Widgets namespace OpenRA.Widgets
@@ -22,7 +23,7 @@ namespace OpenRA.Widgets
IsVisible = () => Game.Settings.Game.MatchTimer; IsVisible = () => Game.Settings.Game.MatchTimer;
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var s = WorldUtils.FormatTime(Game.LocalTick); var s = WorldUtils.FormatTime(Game.LocalTick);
var size = Game.Renderer.TitleFont.Measure(s); var size = Game.Renderer.TitleFont.Measure(s);

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Widgets
public ViewportScrollControllerWidget() : base() { } public ViewportScrollControllerWidget() : base() { }
protected ViewportScrollControllerWidget(ViewportScrollControllerWidget widget) : base(widget) {} protected ViewportScrollControllerWidget(ViewportScrollControllerWidget widget) : base(widget) {}
public override void DrawInner() {} public override void DrawInner( WorldRenderer wr ) {}
public override bool HandleInputInner(MouseInput mi) public override bool HandleInputInner(MouseInput mi)
{ {

View File

@@ -69,7 +69,7 @@ namespace OpenRA.Widgets
overlaySprite.sheet.Texture.SetData(overlay); overlaySprite.sheet.Texture.SetData(overlay);
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
if (video == null) if (video == null)
return; return;

View File

@@ -269,15 +269,15 @@ namespace OpenRA.Widgets
return false; return false;
} }
public abstract void DrawInner(); public abstract void DrawInner( WorldRenderer wr );
public virtual void Draw() public virtual void Draw( WorldRenderer wr )
{ {
if (IsVisible()) if (IsVisible())
{ {
DrawInner(); DrawInner( wr );
foreach (var child in Children) foreach (var child in Children)
child.Draw(); child.Draw( wr );
} }
} }
@@ -340,9 +340,9 @@ namespace OpenRA.Widgets
RootWidget.Tick(); 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 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 string GetCursor(int2 pos) { return null; }
public override Widget Clone() { return new ContainerWidget(this); } public override Widget Clone() { return new ContainerWidget(this); }

View File

@@ -27,9 +27,9 @@ namespace OpenRA.Widgets
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s,pos); 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) public static void DrawPanel(string collection, Rectangle Bounds)

View File

@@ -14,6 +14,7 @@ using System.Linq;
using OpenRA.FileFormats; using OpenRA.FileFormats;
using OpenRA.Orders; using OpenRA.Orders;
using OpenRA.Traits; using OpenRA.Traits;
using OpenRA.Graphics;
namespace OpenRA.Widgets namespace OpenRA.Widgets
{ {
@@ -26,7 +27,7 @@ namespace OpenRA.Widgets
this.world = world; this.world = world;
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var selbox = SelectionBox; var selbox = SelectionBox;
if (selbox == null) return; if (selbox == null) return;
@@ -41,7 +42,7 @@ namespace OpenRA.Widgets
Game.Renderer.LineRenderer.DrawLine(a, a + c, Color.White, Color.White); Game.Renderer.LineRenderer.DrawLine(a, a + c, Color.White, Color.White);
foreach (var u in SelectActorsInBox(world, selbox.Value.First, selbox.Value.Second)) 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; float2 dragStart, dragEnd;

View File

@@ -20,7 +20,7 @@ namespace OpenRA.Widgets
{ {
public int TooltipDelay = 10; public int TooltipDelay = 10;
public WorldTooltipWidget() : base() { } public WorldTooltipWidget() : base() { }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var world = Game.world; var world = Game.world;
if (Viewport.TicksSinceLastMove < TooltipDelay || world == null || world.LocalPlayer == null) if (Viewport.TicksSinceLastMove < TooltipDelay || world == null || world.LocalPlayer == null)

View File

@@ -163,9 +163,9 @@ namespace OpenRA
}, "[{2}] Trait: {0} ({1:0.000} ms)", Game.Settings.Debug.LongTickThreshold ); }, "[{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 ); effects.DoTimed( e => e.Tick( this ), "[{2}] Effect: {0} ({1:0.000} ms)", Game.Settings.Debug.LongTickThreshold );
Game.viewport.Tick();
while (frameEndActions.Count != 0) while (frameEndActions.Count != 0)
frameEndActions.Dequeue()(this); frameEndActions.Dequeue()(this);
Game.viewport.Tick();
} }
public IEnumerable<Actor> Actors { get { return actors; } } public IEnumerable<Actor> Actors { get { return actors; } }

View File

@@ -176,15 +176,15 @@ namespace OpenRA.Mods.RA.Widgets
int paletteHeight = 0; int paletteHeight = 0;
int numActualRows = 0; int numActualRows = 0;
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
if (!IsVisible()) return; if (!IsVisible()) return;
// todo: fix // todo: fix
paletteHeight = DrawPalette(world, CurrentQueue); paletteHeight = DrawPalette(wr, world, CurrentQueue);
DrawBuildTabs(world, paletteHeight); DrawBuildTabs(world, paletteHeight);
} }
int DrawPalette(World world, ProductionQueue queue) int DrawPalette(WorldRenderer wr, World world, ProductionQueue queue)
{ {
buttons.Clear(); buttons.Clear();
if (queue == null) return 0; 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 rect = new RectangleF(origin.X + x * 64, origin.Y + 48 * y, 64, 48);
var drawPos = new float2(rect.Location); 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); var firstOfThis = queue.AllQueued().FirstOrDefault(a => a.Item == item.Name);
@@ -233,7 +233,7 @@ namespace OpenRA.Mods.RA.Widgets
() => (firstOfThis.TotalTime - firstOfThis.RemainingTime) () => (firstOfThis.TotalTime - firstOfThis.RemainingTime)
* (clock.CurrentSequence.Length - 1) / firstOfThis.TotalTime); * (clock.CurrentSequence.Length - 1) / firstOfThis.TotalTime);
clock.Tick(); clock.Tick();
WidgetUtils.DrawSHP(clock.Image, drawPos); WidgetUtils.DrawSHP(clock.Image, drawPos, wr);
if (firstOfThis.Done) if (firstOfThis.Done)
{ {
@@ -272,7 +272,7 @@ namespace OpenRA.Mods.RA.Widgets
if (x != 0) y++; if (x != 0) y++;
foreach (var ob in overlayBits) foreach (var ob in overlayBits)
WidgetUtils.DrawSHP(ob.First, ob.Second); WidgetUtils.DrawSHP(ob.First, ob.Second, wr);
// Tooltip // Tooltip
if (tooltipItem != null && !paletteAnimating && paletteOpen) if (tooltipItem != null && !paletteAnimating && paletteOpen)

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Widgets
public MoneyBinWidget() : base() { } public MoneyBinWidget() : base() { }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var world = Game.world; var world = Game.world;
if( world.LocalPlayer == null ) return; if( world.LocalPlayer == null ) return;

View File

@@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA.Widgets
GetLongDesc = () => LongDesc; GetLongDesc = () => LongDesc;
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var image = ChromeProvider.GetImage(Image + "-button", GetImage()); var image = ChromeProvider.GetImage(Image + "-button", GetImage());
var rect = new Rectangle(RenderBounds.X, RenderBounds.Y, (int)image.size.X, (int)image.size.Y); var rect = new Rectangle(RenderBounds.X, RenderBounds.Y, (int)image.size.X, (int)image.size.Y);

View File

@@ -25,7 +25,7 @@ namespace OpenRA.Mods.RA.Widgets
float? lastPowerDrainedPos; float? lastPowerDrainedPos;
string powerCollection; string powerCollection;
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var world = Game.world; var world = Game.world;
if( world.LocalPlayer == null ) return; if( world.LocalPlayer == null ) return;

View File

@@ -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);} 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; if( world == null || world.LocalPlayer == null ) return;

View File

@@ -63,7 +63,7 @@ namespace OpenRA.Mods.RA.Widgets
return false; return false;
} }
public override void DrawInner() public override void DrawInner( WorldRenderer wr )
{ {
var world = Game.world; var world = Game.world;
buttons.Clear(); buttons.Clear();
@@ -127,19 +127,19 @@ namespace OpenRA.Mods.RA.Widgets
} }
} }
WidgetUtils.DrawSHP(image, drawPos); WidgetUtils.DrawSHP(image, drawPos, wr);
clock.PlayFetchIndex("idle", clock.PlayFetchIndex("idle",
() => (sp.TotalTime - sp.RemainingTime) () => (sp.TotalTime - sp.RemainingTime)
* (clock.CurrentSequence.Length - 1) / sp.TotalTime); * (clock.CurrentSequence.Length - 1) / sp.TotalTime);
clock.Tick(); clock.Tick();
WidgetUtils.DrawSHP(clock.Image, drawPos); WidgetUtils.DrawSHP(clock.Image, drawPos, wr);
if (sp.IsReady) if (sp.IsReady)
{ {
ready.Play("ready"); 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))); buttons.Add(Pair.New(rect,HandleSupportPower(sp)));