Don't require a WorldRenderer to draw non-world-rendering widgets.
This commit is contained in:
@@ -92,7 +92,14 @@ namespace OpenRA
|
||||
public static event Action<OrderManager> ConnectionStateChanged = _ => { };
|
||||
static ConnectionState lastConnectionState = ConnectionState.PreConnecting;
|
||||
public static int LocalClientId { get { return orderManager.Connection.LocalClientId; } }
|
||||
|
||||
|
||||
|
||||
// Hacky workaround for orderManager visibility
|
||||
public static Widget OpenWindow(World world, string widget)
|
||||
{
|
||||
return Widget.OpenWindow(widget, new Dictionary<string,object>{{ "world", world }, { "orderManager", orderManager }, { "worldRenderer", worldRenderer }});
|
||||
}
|
||||
|
||||
static void Tick( OrderManager orderManager, Viewport viewPort )
|
||||
{
|
||||
if (orderManager.Connection.ConnectionState != lastConnectionState)
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace OpenRA.Graphics
|
||||
renderer.BeginFrame(scrollPosition);
|
||||
|
||||
wr.Draw();
|
||||
Widget.DoDraw( wr );
|
||||
Widget.DoDraw();
|
||||
var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default";
|
||||
new Cursor(cursorName).Draw(wr, (int)cursorFrame, Viewport.LastMousePos + Location);
|
||||
|
||||
|
||||
@@ -77,7 +77,9 @@ namespace OpenRA
|
||||
{
|
||||
var attrs = p[ i ].GetCustomAttributes<ParamAttribute>();
|
||||
if( attrs.Length != 1 ) throw new InvalidOperationException( "ObjectCreator: argument in [UseCtor] doesn't have [Param]" );
|
||||
a[ i ] = args[ attrs[ 0 ].ParamName ?? p[i].Name ];
|
||||
var key = attrs[ 0 ].ParamName ?? p[i].Name;
|
||||
if ( !args.ContainsKey(key) ) throw new InvalidOperationException("ObjectCreator: key `{0}' not found".F(key));
|
||||
a[ i ] = args[ key ];
|
||||
}
|
||||
return ctor.Invoke( a );
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace OpenRA.Widgets
|
||||
public readonly string Background = "dialog";
|
||||
public readonly bool ClickThrough = false;
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
WidgetUtils.DrawPanel(Background, RenderBounds);
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace OpenRA.Widgets
|
||||
public override int2 ChildOrigin { get { return RenderOrigin +
|
||||
((Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0)); } }
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var font = (Bold) ? Game.Renderer.BoldFont : Game.Renderer.RegularFont;
|
||||
var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0);
|
||||
@@ -114,9 +114,9 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
}
|
||||
|
||||
public override void DrawInner(WorldRenderer wr)
|
||||
public override void DrawInner()
|
||||
{
|
||||
base.DrawInner(wr);
|
||||
base.DrawInner();
|
||||
var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0);
|
||||
|
||||
var image = ChromeProvider.GetImage("scrollbar", "down_arrow");
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace OpenRA.Widgets
|
||||
: base(widget) { }
|
||||
|
||||
public override Rectangle EventBounds { get { return Rectangle.Empty; } }
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var pos = RenderOrigin;
|
||||
var chatLogArea = new Rectangle(pos.X, pos.Y, Bounds.Width, Bounds.Height);
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace OpenRA.Widgets
|
||||
this.orderManager = orderManager;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if (composing)
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace OpenRA.Widgets
|
||||
bool boundReadOnly;
|
||||
FieldInfo boundField;
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var font = Bold ? Game.Renderer.BoldFont : Game.Renderer.RegularFont;
|
||||
var pos = RenderOrigin;
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Widgets
|
||||
return new ColorBlockWidget(this);
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
WidgetUtils.FillRectWithColor(RenderBounds, GetColor());
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Widgets
|
||||
|
||||
public override Widget Clone() { return new ImageWidget(this); }
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var name = GetImageName();
|
||||
var collection = GetImageCollection();
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace OpenRA.Widgets
|
||||
GetBackground = other.GetBackground;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var bg = GetBackground();
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace OpenRA.Widgets
|
||||
static Sprite UnownedSpawn = null;
|
||||
static Sprite OwnedSpawn = null;
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if (UnownedSpawn == null)
|
||||
UnownedSpawn = ChromeProvider.GetImage("spawnpoints", "unowned");
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Widgets
|
||||
public PasswordFieldWidget() : base() {}
|
||||
protected PasswordFieldWidget(PasswordFieldWidget widget) : base(widget) {}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
DrawWithString(new string('*', Text.Length));
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
public PerfGraphWidget() : base() { }
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var rect = RenderBounds;
|
||||
float2 origin = Game.viewport.Location + new float2(rect.Right, rect.Bottom);
|
||||
|
||||
@@ -56,8 +56,8 @@ namespace OpenRA.Widgets
|
||||
base.AddChild(child);
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr ) {}
|
||||
public override void Draw( WorldRenderer wr )
|
||||
public override void DrawInner() {}
|
||||
public override void Draw()
|
||||
{
|
||||
if (!IsVisible())
|
||||
return;
|
||||
@@ -98,7 +98,7 @@ namespace OpenRA.Widgets
|
||||
Game.Renderer.EnableScissor(backgroundRect.X + 1, backgroundRect.Y + 1, backgroundRect.Width - 2, backgroundRect.Height - 2);
|
||||
|
||||
foreach (var child in Children)
|
||||
child.Draw( wr );
|
||||
child.Draw();
|
||||
|
||||
Game.Renderer.DisableScissor();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#region Copyright & License Information
|
||||
#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
|
||||
@@ -101,7 +101,7 @@ namespace OpenRA.Widgets
|
||||
Text = Text.Replace("\r", "");
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var bg = GetBackground();
|
||||
|
||||
|
||||
@@ -22,13 +22,16 @@ namespace OpenRA.Widgets
|
||||
public Func<string> GetImage;
|
||||
public Func<int> GetFrame;
|
||||
public Func<string> GetPalette;
|
||||
|
||||
public ShpImageWidget()
|
||||
|
||||
readonly WorldRenderer worldRenderer;
|
||||
[ObjectCreator.UseCtor]
|
||||
public ShpImageWidget([ObjectCreator.Param] WorldRenderer worldRenderer)
|
||||
: base()
|
||||
{
|
||||
GetImage = () => { return Image; };
|
||||
GetFrame = () => { return Frame; };
|
||||
GetPalette = () => { return Palette; };
|
||||
GetPalette = () => { return Palette; };
|
||||
this.worldRenderer = worldRenderer;
|
||||
}
|
||||
|
||||
protected ShpImageWidget(ShpImageWidget other)
|
||||
@@ -39,7 +42,8 @@ namespace OpenRA.Widgets
|
||||
Palette = other.Palette;
|
||||
GetImage = other.GetImage;
|
||||
GetFrame = other.GetFrame;
|
||||
GetPalette = other.GetPalette;
|
||||
GetPalette = other.GetPalette;
|
||||
worldRenderer = other.worldRenderer;
|
||||
}
|
||||
|
||||
public override Widget Clone() { return new ShpImageWidget(this); }
|
||||
@@ -48,7 +52,7 @@ namespace OpenRA.Widgets
|
||||
Sprite sprite = null;
|
||||
string cachedImage = null;
|
||||
int cachedFrame= -1;
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var image = GetImage();
|
||||
var frame = GetFrame();
|
||||
@@ -60,8 +64,7 @@ namespace OpenRA.Widgets
|
||||
cachedImage = image;
|
||||
cachedFrame = frame;
|
||||
}
|
||||
|
||||
Game.Renderer.WorldSpriteRenderer.DrawSprite(sprite,RenderOrigin, wr, palette);
|
||||
Game.Renderer.WorldSpriteRenderer.DrawSprite(sprite,RenderOrigin, worldRenderer, palette);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ namespace OpenRA.Widgets
|
||||
}
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if (!IsVisible())
|
||||
return;
|
||||
|
||||
@@ -201,7 +201,7 @@ namespace OpenRA.Widgets
|
||||
Game.Renderer.DisableScissor();
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
DrawWithString(Text);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace OpenRA.Widgets
|
||||
IsVisible = () => Game.Settings.Game.MatchTimer;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var s = WidgetUtils.FormatTime(Game.LocalTick);
|
||||
var size = Game.Renderer.TitleFont.Measure(s);
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenRA.Widgets
|
||||
|
||||
public ViewportScrollControllerWidget() : base() { }
|
||||
protected ViewportScrollControllerWidget(ViewportScrollControllerWidget widget) : base(widget) {}
|
||||
public override void DrawInner( WorldRenderer wr ) {}
|
||||
public override void DrawInner() {}
|
||||
|
||||
// TODO: ViewportScrollController doesn't support delegate methods for mouse input
|
||||
public override bool HandleMouseInput(MouseInput mi)
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace OpenRA.Widgets
|
||||
overlaySprite.sheet.Texture.SetData(overlay);
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if (video == null)
|
||||
return;
|
||||
|
||||
@@ -266,15 +266,15 @@ namespace OpenRA.Widgets
|
||||
return false;
|
||||
}
|
||||
|
||||
public abstract void DrawInner( WorldRenderer wr );
|
||||
public abstract void DrawInner();
|
||||
|
||||
public virtual void Draw( WorldRenderer wr )
|
||||
public virtual void Draw()
|
||||
{
|
||||
if (IsVisible())
|
||||
{
|
||||
DrawInner( wr );
|
||||
DrawInner();
|
||||
foreach (var child in Children)
|
||||
child.Draw( wr );
|
||||
child.Draw();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -337,9 +337,9 @@ namespace OpenRA.Widgets
|
||||
RootWidget.Tick();
|
||||
}
|
||||
|
||||
public static void DoDraw( WorldRenderer wr )
|
||||
public static void DoDraw()
|
||||
{
|
||||
RootWidget.Draw( wr );
|
||||
RootWidget.Draw();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,7 +358,7 @@ namespace OpenRA.Widgets
|
||||
GetBackground = other.GetBackground;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var bg = GetBackground();
|
||||
if (bg != null)
|
||||
|
||||
@@ -20,14 +20,16 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
public class WorldInteractionControllerWidget : Widget
|
||||
{
|
||||
readonly World world;
|
||||
readonly World world;
|
||||
readonly WorldRenderer worldRenderer;
|
||||
[ObjectCreator.UseCtor]
|
||||
public WorldInteractionControllerWidget( [ObjectCreator.Param] World world )
|
||||
public WorldInteractionControllerWidget([ObjectCreator.Param] World world, [ObjectCreator.Param] WorldRenderer worldRenderer)
|
||||
{
|
||||
this.world = world;
|
||||
this.world = world;
|
||||
this.worldRenderer = worldRenderer;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var selbox = SelectionBox;
|
||||
if (selbox == null) return;
|
||||
@@ -40,9 +42,9 @@ namespace OpenRA.Widgets
|
||||
Game.Renderer.LineRenderer.DrawLine(a + b, a + b + c, Color.White, Color.White);
|
||||
Game.Renderer.LineRenderer.DrawLine(a + b + c, 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))
|
||||
wr.DrawSelectionBox(u, Color.Yellow);
|
||||
worldRenderer.DrawSelectionBox(u, Color.Yellow);
|
||||
}
|
||||
|
||||
float2 dragStart, dragEnd;
|
||||
|
||||
@@ -117,12 +117,6 @@ namespace OpenRA
|
||||
foreach (var wlh in WorldActor.TraitsImplementing<IWorldLoaded>())
|
||||
wlh.WorldLoaded(this);
|
||||
}
|
||||
|
||||
// Hacky workaround for orderManager visibility
|
||||
public Widget OpenWindow(string widget)
|
||||
{
|
||||
return Widget.OpenWindow(widget, new Dictionary<string,object>{{"world", this}, { "orderManager", orderManager }});
|
||||
}
|
||||
|
||||
public Actor CreateActor( string name, TypeDictionary initDict )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user