Don't require a WorldRenderer to draw non-world-rendering widgets.
This commit is contained in:
@@ -93,6 +93,13 @@ namespace OpenRA
|
||||
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();
|
||||
|
||||
|
||||
@@ -23,12 +23,15 @@ namespace OpenRA.Widgets
|
||||
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; };
|
||||
this.worldRenderer = worldRenderer;
|
||||
}
|
||||
|
||||
protected ShpImageWidget(ShpImageWidget other)
|
||||
@@ -40,6 +43,7 @@ namespace OpenRA.Widgets
|
||||
GetImage = other.GetImage;
|
||||
GetFrame = other.GetFrame;
|
||||
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)
|
||||
|
||||
@@ -21,13 +21,15 @@ namespace OpenRA.Widgets
|
||||
public class WorldInteractionControllerWidget : Widget
|
||||
{
|
||||
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.worldRenderer = worldRenderer;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var selbox = SelectionBox;
|
||||
if (selbox == null) return;
|
||||
@@ -42,7 +44,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))
|
||||
wr.DrawSelectionBox(u, Color.Yellow);
|
||||
worldRenderer.DrawSelectionBox(u, Color.Yellow);
|
||||
}
|
||||
|
||||
float2 dragStart, dragEnd;
|
||||
|
||||
@@ -118,12 +118,6 @@ namespace OpenRA
|
||||
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 )
|
||||
{
|
||||
return CreateActor( true, name, initDict );
|
||||
|
||||
@@ -31,9 +31,9 @@ namespace OpenRA.Mods.RA
|
||||
public void WorldLoaded(World world)
|
||||
{
|
||||
if (world.LocalPlayer != null)
|
||||
world.OpenWindow(Info.Widget);
|
||||
Game.OpenWindow(world, Info.Widget);
|
||||
else if (Info.ObserverWidget != null)
|
||||
world.OpenWindow(Info.ObserverWidget);
|
||||
Game.OpenWindow(world, Info.ObserverWidget);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ namespace OpenRA.Scripting
|
||||
{
|
||||
public static void PlayFMVFullscreen(World w, string movie, Action onComplete)
|
||||
{
|
||||
var playerRoot = w.OpenWindow("FMVPLAYER");
|
||||
var playerRoot = Game.OpenWindow(w, "FMVPLAYER");
|
||||
var player = playerRoot.GetWidget<VqaPlayerWidget>("PLAYER");
|
||||
w.DisableTick = true;
|
||||
player.Load(movie);
|
||||
|
||||
@@ -48,11 +48,13 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
public readonly string BuildPaletteClose = "bleep13.aud";
|
||||
public readonly string TabClick = "ramenu1.aud";
|
||||
|
||||
readonly WorldRenderer worldRenderer;
|
||||
readonly World world;
|
||||
[ObjectCreator.UseCtor]
|
||||
public BuildPaletteWidget( [ObjectCreator.Param] World world )
|
||||
public BuildPaletteWidget( [ObjectCreator.Param] World world, [ObjectCreator.Param] WorldRenderer worldRenderer )
|
||||
{
|
||||
this.world = world;
|
||||
this.worldRenderer = worldRenderer;
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
@@ -178,15 +180,16 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
|
||||
int paletteHeight = 0;
|
||||
int numActualRows = 0;
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if (!IsVisible()) return;
|
||||
// todo: fix
|
||||
paletteHeight = DrawPalette(wr, world, CurrentQueue);
|
||||
|
||||
paletteHeight = DrawPalette(CurrentQueue);
|
||||
DrawBuildTabs(world, paletteHeight);
|
||||
}
|
||||
|
||||
int DrawPalette(WorldRenderer wr, World world, ProductionQueue queue)
|
||||
int DrawPalette(ProductionQueue queue)
|
||||
{
|
||||
buttons.Clear();
|
||||
if (queue == null) return 0;
|
||||
@@ -220,7 +223,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, wr);
|
||||
WidgetUtils.DrawSHP(iconSprites[item.Name], drawPos, worldRenderer);
|
||||
|
||||
var firstOfThis = queue.AllQueued().FirstOrDefault(a => a.Item == item.Name);
|
||||
|
||||
@@ -235,7 +238,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
() => (firstOfThis.TotalTime - firstOfThis.RemainingTime)
|
||||
* (clock.CurrentSequence.Length - 1) / firstOfThis.TotalTime);
|
||||
clock.Tick();
|
||||
WidgetUtils.DrawSHP(clock.Image, drawPos, wr);
|
||||
WidgetUtils.DrawSHP(clock.Image, drawPos, worldRenderer);
|
||||
|
||||
if (firstOfThis.Done)
|
||||
{
|
||||
@@ -274,7 +277,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
if (x != 0) y++;
|
||||
|
||||
foreach (var ob in overlayBits)
|
||||
WidgetUtils.DrawSHP(ob.First, ob.Second, wr);
|
||||
WidgetUtils.DrawSHP(ob.First, ob.Second, worldRenderer);
|
||||
|
||||
// Tooltip
|
||||
if (tooltipItem != null && !paletteAnimating && paletteOpen)
|
||||
|
||||
@@ -16,6 +16,7 @@ using OpenRA.FileFormats;
|
||||
using OpenRA.Network;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
using OpenRA.Graphics;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
{
|
||||
@@ -30,10 +31,13 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
public static ColorRamp CurrentColorPreview;
|
||||
|
||||
readonly OrderManager orderManager;
|
||||
readonly WorldRenderer worldRenderer;
|
||||
[ObjectCreator.UseCtor]
|
||||
internal LobbyDelegate( [ObjectCreator.Param( "widget" )] Widget lobby, [ObjectCreator.Param] OrderManager orderManager )
|
||||
internal LobbyDelegate( [ObjectCreator.Param( "widget" )] Widget lobby, [ObjectCreator.Param] OrderManager orderManager, [ObjectCreator.Param] WorldRenderer worldRenderer)
|
||||
{
|
||||
this.orderManager = orderManager;
|
||||
this.worldRenderer = worldRenderer;
|
||||
|
||||
Game.LobbyInfoChanged += UpdateCurrentMap;
|
||||
UpdateCurrentMap();
|
||||
|
||||
@@ -266,7 +270,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
if (Map.Players[s.MapPlayer].LockColor)
|
||||
return false;
|
||||
|
||||
var colorChooser = Game.modData.WidgetLoader.LoadWidget( new Dictionary<string,object>(), null, "COLOR_CHOOSER" );
|
||||
var colorChooser = Game.modData.WidgetLoader.LoadWidget( new Dictionary<string,object>() { {"worldRenderer", worldRenderer} }, null, "COLOR_CHOOSER" );
|
||||
var hueSlider = colorChooser.GetWidget<SliderWidget>("HUE_SLIDER");
|
||||
hueSlider.SetOffset(orderManager.LocalClient.ColorRamp.H / 255f);
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
new Dictionary<string, object> { { "orderManager", orderManager } } );
|
||||
break;
|
||||
case ConnectionState.Connected:
|
||||
var lobby = Widget.OpenWindow( "SERVER_LOBBY", new Dictionary<string, object> { { "orderManager", orderManager } } );
|
||||
var lobby = Game.OpenWindow(orderManager.world, "SERVER_LOBBY");
|
||||
lobby.GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
|
||||
lobby.GetWidget("CHANGEMAP_BUTTON").Visible = true;
|
||||
lobby.GetWidget("LOCKTEAMS_CHECKBOX").Visible = true;
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if( world.LocalPlayer == null ) return;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
GetLongDesc = () => LongDesc;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
var image = ChromeProvider.GetImage(Image + "-button", GetImage());
|
||||
var rect = new Rectangle(RenderBounds.X, RenderBounds.Y, (int)image.size.X, (int)image.size.Y);
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if( world.LocalPlayer == null ) return;
|
||||
|
||||
|
||||
@@ -124,7 +124,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( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if( world == null || world.LocalPlayer == null ) return;
|
||||
|
||||
|
||||
@@ -26,10 +26,12 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
readonly List<Pair<Rectangle, Action<MouseInput>>> buttons = new List<Pair<Rectangle,Action<MouseInput>>>();
|
||||
|
||||
readonly World world;
|
||||
readonly WorldRenderer worldRenderer;
|
||||
[ObjectCreator.UseCtor]
|
||||
public SpecialPowerBinWidget( [ObjectCreator.Param] World world )
|
||||
public SpecialPowerBinWidget([ObjectCreator.Param] World world, [ObjectCreator.Param] WorldRenderer worldRenderer)
|
||||
{
|
||||
this.world = world;
|
||||
this.worldRenderer = worldRenderer;
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
@@ -70,7 +72,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
buttons.Clear();
|
||||
|
||||
@@ -140,24 +142,24 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
}
|
||||
|
||||
}
|
||||
WidgetUtils.DrawSHP(image, drawPos, wr);
|
||||
WidgetUtils.DrawSHP(image, drawPos, worldRenderer);
|
||||
|
||||
clock.PlayFetchIndex("idle",
|
||||
() => sp.TotalTime == 0 ? clock.CurrentSequence.Length - 1 : (sp.TotalTime - sp.RemainingTime)
|
||||
* (clock.CurrentSequence.Length - 1) / sp.TotalTime);
|
||||
clock.Tick();
|
||||
|
||||
WidgetUtils.DrawSHP(clock.Image, drawPos, wr);
|
||||
WidgetUtils.DrawSHP(clock.Image, drawPos, worldRenderer);
|
||||
|
||||
if (sp.Ready)
|
||||
{
|
||||
ready.Play("ready");
|
||||
WidgetUtils.DrawSHP(ready.Image, drawPos + new float2((64 - ready.Image.size.X) / 2, 2), wr);
|
||||
WidgetUtils.DrawSHP(ready.Image, drawPos + new float2((64 - ready.Image.size.X) / 2, 2), worldRenderer);
|
||||
}
|
||||
else if (!sp.Active)
|
||||
{
|
||||
ready.Play("hold");
|
||||
WidgetUtils.DrawSHP(ready.Image, drawPos + new float2((64 - ready.Image.size.X) / 2, 2), wr);
|
||||
WidgetUtils.DrawSHP(ready.Image, drawPos + new float2((64 - ready.Image.size.X) / 2, 2), worldRenderer);
|
||||
}
|
||||
|
||||
buttons.Add(Pair.New(rect,HandleSupportPower(kv.Key, manager)));
|
||||
|
||||
@@ -12,38 +12,45 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
public class StrategicProgressWidget : Widget
|
||||
{
|
||||
bool Initialised = false;
|
||||
readonly World world;
|
||||
readonly WorldRenderer worldRenderer;
|
||||
[ObjectCreator.UseCtor]
|
||||
public StrategicProgressWidget([ObjectCreator.Param] World world, [ObjectCreator.Param] WorldRenderer worldRenderer)
|
||||
{
|
||||
IsVisible = () => true;
|
||||
this.world = world;
|
||||
this.worldRenderer = worldRenderer;
|
||||
}
|
||||
|
||||
public StrategicProgressWidget() { IsVisible = () => true; }
|
||||
|
||||
public override void DrawInner(WorldRenderer wr)
|
||||
public override void DrawInner()
|
||||
{
|
||||
if (!Initialised)
|
||||
Init(wr);
|
||||
Init();
|
||||
|
||||
if (!IsVisible()) return;
|
||||
int2 offset = int2.Zero;
|
||||
|
||||
var svc = wr.world.players.Select(p => p.Value.PlayerActor.TraitOrDefault<StrategicVictoryConditions>()).FirstOrDefault();
|
||||
var svc = world.players.Select(p => p.Value.PlayerActor.TraitOrDefault<StrategicVictoryConditions>()).FirstOrDefault();
|
||||
|
||||
var totalWidth = (svc.Total + svc.TotalCritical)*32;
|
||||
int curX = -(totalWidth / 2);
|
||||
|
||||
foreach (var a in wr.world.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && !a.TraitOrDefault<StrategicPoint>().Critical))
|
||||
foreach (var a in world.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && !a.TraitOrDefault<StrategicPoint>().Critical))
|
||||
{
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "unowned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||
|
||||
if (a.Owner == wr.world.LocalPlayer || (a.Owner.Stances[wr.world.LocalPlayer] == Stance.Ally && wr.world.LocalPlayer.Stances[a.Owner] == Stance.Ally))
|
||||
if (a.Owner == worldRenderer.world.LocalPlayer || (a.Owner.Stances[world.LocalPlayer] == Stance.Ally && world.LocalPlayer.Stances[a.Owner] == Stance.Ally))
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||
else if (!a.Owner.NonCombatant)
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||
curX += 32;
|
||||
}
|
||||
|
||||
foreach (var a in wr.world.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && a.TraitOrDefault<StrategicPoint>().Critical))
|
||||
foreach (var a in world.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && a.TraitOrDefault<StrategicPoint>().Critical))
|
||||
{
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "critical_unowned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||
|
||||
if (a.Owner == wr.world.LocalPlayer || (a.Owner.Stances[wr.world.LocalPlayer] == Stance.Ally && wr.world.LocalPlayer.Stances[a.Owner] == Stance.Ally))
|
||||
if (a.Owner == world.LocalPlayer || (a.Owner.Stances[world.LocalPlayer] == Stance.Ally && world.LocalPlayer.Stances[a.Owner] == Stance.Ally))
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||
else if (!a.Owner.NonCombatant)
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||
@@ -52,17 +59,15 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
}
|
||||
offset += new int2(0, 32);
|
||||
|
||||
var pendingWinner = FindFirstWinningPlayer(wr.world);
|
||||
var pendingWinner = FindFirstWinningPlayer(world);
|
||||
if (pendingWinner == null) return;
|
||||
svc = pendingWinner.PlayerActor.TraitOrDefault<StrategicVictoryConditions>();
|
||||
|
||||
if (wr.world.LocalPlayer == null)
|
||||
{
|
||||
}else
|
||||
if (world.LocalPlayer != null)
|
||||
{
|
||||
var tc = "";
|
||||
|
||||
if (pendingWinner != wr.world.LocalPlayer && (pendingWinner.Stances[wr.world.LocalPlayer] != Stance.Ally || wr.world.LocalPlayer.Stances[pendingWinner] != Stance.Ally))
|
||||
if (pendingWinner != world.LocalPlayer && (pendingWinner.Stances[world.LocalPlayer] != Stance.Ally || world.LocalPlayer.Stances[pendingWinner] != Stance.Ally))
|
||||
{
|
||||
// losing
|
||||
tc = "Strategic defeat in " +
|
||||
@@ -109,9 +114,9 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
return shortestPlayer;
|
||||
}
|
||||
|
||||
private void Init(WorldRenderer wr)
|
||||
private void Init()
|
||||
{
|
||||
IsVisible = () => (wr.world.Actors.Where(a => a.HasTrait<StrategicVictoryConditions>()).Any() && wr.world.Actors.Where(a => a.HasTrait<StrategicPoint>()).Any());
|
||||
IsVisible = () => (world.Actors.Where(a => a.HasTrait<StrategicVictoryConditions>()).Any() && world.Actors.Where(a => a.HasTrait<StrategicPoint>()).Any());
|
||||
Initialised = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
OrderManager = orderManager;
|
||||
}
|
||||
|
||||
public override void DrawInner(WorldRenderer wr) { }
|
||||
public override void DrawInner() { }
|
||||
|
||||
public override string GetCursor(int2 pos) { return null; }
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
public override void DrawInner( WorldRenderer wr )
|
||||
public override void DrawInner()
|
||||
{
|
||||
if (Viewport.TicksSinceLastMove < TooltipDelay || world == null || world.LocalPlayer == null)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user