remove many references to Game.world
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@@ -186,7 +187,7 @@ namespace OpenRA
|
||||
public static void IssueOrder( Order o ) { orderManager.IssueOrder( o ); } /* avoid exposing the OM to mod code */
|
||||
|
||||
|
||||
public static event Action AfterGameStart = () => {};
|
||||
public static event Action<World> AfterGameStart = _ => {};
|
||||
public static event Action BeforeGameStart = () => {};
|
||||
internal static void StartGame(string map)
|
||||
{
|
||||
@@ -200,7 +201,7 @@ namespace OpenRA
|
||||
|
||||
orderManager.StartGame();
|
||||
viewport.RefreshPalette();
|
||||
AfterGameStart();
|
||||
AfterGameStart( world );
|
||||
}
|
||||
|
||||
public static void DispatchMouseInput(MouseInputEvent ev, MouseEventArgs e, Modifiers modifierKeys)
|
||||
@@ -291,7 +292,7 @@ namespace OpenRA
|
||||
|
||||
JoinLocal();
|
||||
StartGame(modData.Manifest.ShellmapUid);
|
||||
|
||||
|
||||
Game.AfterGameStart += world => Widget.OpenWindow("INGAME_ROOT", new Dictionary<string,object>{{"world", world}});
|
||||
|
||||
Game.ConnectionStateChanged += () =>
|
||||
@@ -318,7 +319,7 @@ namespace OpenRA
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
modData.WidgetLoader.LoadWidget( new Dictionary<string,object>(), Widget.RootWidget, "PERF_BG" );
|
||||
Widget.OpenWindow("MAINMENU_BG");
|
||||
|
||||
|
||||
@@ -23,14 +23,15 @@ using OpenRA;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
|
||||
namespace OpenRA.Widgets.Delegates
|
||||
{
|
||||
|
||||
public class DeveloperModeDelegate : IWidgetDelegate
|
||||
{
|
||||
public DeveloperModeDelegate ()
|
||||
{
|
||||
readonly World world;
|
||||
[ObjectCreator.UseCtor]
|
||||
public DeveloperModeDelegate( [ObjectCreator.Param("world")] World world )
|
||||
{
|
||||
this.world = world;
|
||||
var devmodeBG = Widget.RootWidget.GetWidget("INGAME_ROOT").GetWidget("DEVELOPERMODE_BG");
|
||||
var devModeButton = Widget.RootWidget.GetWidget<ButtonWidget>("INGAME_DEVELOPERMODE_BUTTON");
|
||||
|
||||
@@ -41,10 +42,10 @@ namespace OpenRA.Widgets.Delegates
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<CheckboxWidget>("CHECKBOX_SHROUD").Checked =
|
||||
() => Game.world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().DisableShroud;
|
||||
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().DisableShroud;
|
||||
devmodeBG.GetWidget<CheckboxWidget>("CHECKBOX_SHROUD").OnMouseDown = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevShroud", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevShroud", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -52,51 +53,51 @@ namespace OpenRA.Widgets.Delegates
|
||||
() => Game.Settings.Debug.ShowCollisions;
|
||||
devmodeBG.GetWidget("CHECKBOX_UNITDEBUG").OnMouseDown = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevUnitDebug", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevUnitDebug", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<CheckboxWidget>("CHECKBOX_PATHDEBUG").Checked =
|
||||
() => Game.world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().PathDebug;
|
||||
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().PathDebug;
|
||||
devmodeBG.GetWidget("CHECKBOX_PATHDEBUG").OnMouseDown = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevPathDebug", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevPathDebug", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<ButtonWidget>("GIVE_CASH").OnMouseUp = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevGiveCash", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevGiveCash", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<CheckboxWidget>("INSTANT_BUILD").Checked =
|
||||
() => Game.world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastBuild;
|
||||
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastBuild;
|
||||
devmodeBG.GetWidget<CheckboxWidget>("INSTANT_BUILD").OnMouseDown = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevFastBuild", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevFastBuild", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<CheckboxWidget>("INSTANT_CHARGE").Checked =
|
||||
() => Game.world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastCharge;
|
||||
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastCharge;
|
||||
devmodeBG.GetWidget<CheckboxWidget>("INSTANT_CHARGE").OnMouseDown = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevFastCharge", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevFastCharge", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<CheckboxWidget>("ENABLE_TECH").Checked =
|
||||
() => Game.world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().AllTech;
|
||||
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().AllTech;
|
||||
devmodeBG.GetWidget<CheckboxWidget>("ENABLE_TECH").OnMouseDown = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevEnableTech", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevEnableTech", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<ButtonWidget>("GIVE_EXPLORATION").OnMouseUp = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevGiveExploration", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("DevGiveExploration", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
@@ -21,8 +21,11 @@ namespace OpenRA.Widgets.Delegates
|
||||
static List<Widget> controls = new List<Widget>();
|
||||
|
||||
int validPlayers = 0;
|
||||
public DiplomacyDelegate()
|
||||
readonly World world;
|
||||
[ObjectCreator.UseCtor]
|
||||
public DiplomacyDelegate( [ObjectCreator.Param("world")] World world )
|
||||
{
|
||||
this.world = world;
|
||||
var root = Widget.RootWidget.GetWidget("INGAME_ROOT");
|
||||
var diplomacyBG = root.GetWidget("DIPLOMACY_BG");
|
||||
var diplomacy = root.GetWidget("INGAME_DIPLOMACY_BUTTON");
|
||||
@@ -34,7 +37,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
return true;
|
||||
};
|
||||
|
||||
Game.AfterGameStart += () => validPlayers = Game.world.players.Values.Where(a => a != Game.world.LocalPlayer && !a.NonCombatant).Count();
|
||||
Game.AfterGameStart += _ => validPlayers = world.players.Values.Where(a => a != world.LocalPlayer && !a.NonCombatant).Count();
|
||||
diplomacy.IsVisible = () => (validPlayers > 0);
|
||||
}
|
||||
|
||||
@@ -71,7 +74,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
|
||||
y += 35;
|
||||
|
||||
foreach (var p in Game.world.players.Values.Where(a => a != Game.world.LocalPlayer && !a.NonCombatant))
|
||||
foreach (var p in world.players.Values.Where(a => a != world.LocalPlayer && !a.NonCombatant))
|
||||
{
|
||||
var pp = p;
|
||||
var label = new LabelWidget
|
||||
@@ -94,7 +97,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
Align = LabelWidget.TextAlign.Left,
|
||||
Bold = false,
|
||||
|
||||
GetText = () => pp.Stances[ Game.world.LocalPlayer ].ToString(),
|
||||
GetText = () => pp.Stances[ world.LocalPlayer ].ToString(),
|
||||
};
|
||||
|
||||
bg.AddChild(theirStance);
|
||||
@@ -104,7 +107,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
{
|
||||
Bounds = new Rectangle( margin + 2 * labelWidth + 20, y, labelWidth, 25),
|
||||
Id = "DIPLOMACY_PLAYER_LABEL_MY_{0}".F(p.Index),
|
||||
Text = Game.world.LocalPlayer.Stances[ pp ].ToString(),
|
||||
Text = world.LocalPlayer.Stances[ pp ].ToString(),
|
||||
};
|
||||
|
||||
myStance.OnMouseUp = mi => { CycleStance(pp, myStance); return true; };
|
||||
@@ -135,7 +138,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
|
||||
var nextStance = GetNextStance((Stance)Enum.Parse(typeof(Stance), bw.Text));
|
||||
|
||||
Game.IssueOrder(new Order("SetStance", Game.world.LocalPlayer.PlayerActor,
|
||||
Game.IssueOrder(new Order("SetStance", world.LocalPlayer.PlayerActor,
|
||||
new int2(p.Index, (int)nextStance)));
|
||||
|
||||
bw.Text = nextStance.ToString();
|
||||
|
||||
@@ -124,12 +124,13 @@ namespace OpenRA.Widgets
|
||||
height);
|
||||
}
|
||||
|
||||
public void PostInit()
|
||||
public void PostInit( Dictionary<string, object> args )
|
||||
{
|
||||
if( Delegate != null )
|
||||
{
|
||||
var createDict = new Dictionary<string, object> { { "widget", this } };
|
||||
Game.modData.ObjectCreator.CreateObject<IWidgetDelegate>( Delegate, createDict );
|
||||
args[ "widget" ] = this;
|
||||
Game.modData.ObjectCreator.CreateObject<IWidgetDelegate>( Delegate, args );
|
||||
args.Remove( "widget" );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,9 +321,14 @@ namespace OpenRA.Widgets
|
||||
rootWidget.Children.Add( WindowList.Peek() );
|
||||
}
|
||||
|
||||
public static Widget OpenWindow(string id)
|
||||
public static Widget OpenWindow( string id )
|
||||
{
|
||||
var window = Game.modData.WidgetLoader.LoadWidget( rootWidget, id );
|
||||
return OpenWindow( id, new Dictionary<string, object>() );
|
||||
}
|
||||
|
||||
public static Widget OpenWindow(string id, Dictionary<string, object> args )
|
||||
{
|
||||
var window = Game.modData.WidgetLoader.LoadWidget( args, rootWidget, id );
|
||||
if( WindowList.Count > 0 )
|
||||
rootWidget.Children.Remove( WindowList.Peek() );
|
||||
WindowList.Push( window );
|
||||
|
||||
@@ -33,14 +33,14 @@ namespace OpenRA
|
||||
widgets.Add( w.Key.Substring( w.Key.IndexOf( '@' ) + 1 ), w );
|
||||
}
|
||||
|
||||
public Widget LoadWidget( Widget parent, string w )
|
||||
public Widget LoadWidget( Dictionary<string, object> args, Widget parent, string w )
|
||||
{
|
||||
return LoadWidget( parent, widgets[ w ] );
|
||||
return LoadWidget( args, parent, widgets[ w ] );
|
||||
}
|
||||
|
||||
public Widget LoadWidget( Widget parent, MiniYamlNode node)
|
||||
public Widget LoadWidget( Dictionary<string, object> args, Widget parent, MiniYamlNode node)
|
||||
{
|
||||
var widget = NewWidget(node.Key);
|
||||
var widget = NewWidget(node.Key, args);
|
||||
parent.AddChild( widget );
|
||||
|
||||
foreach (var child in node.Value.Nodes)
|
||||
@@ -52,16 +52,16 @@ namespace OpenRA
|
||||
foreach (var child in node.Value.Nodes)
|
||||
if (child.Key == "Children")
|
||||
foreach (var c in child.Value.Nodes)
|
||||
LoadWidget( widget, c);
|
||||
LoadWidget( args, widget, c);
|
||||
|
||||
widget.PostInit();
|
||||
widget.PostInit( args );
|
||||
return widget;
|
||||
}
|
||||
|
||||
Widget NewWidget(string widgetType)
|
||||
Widget NewWidget(string widgetType, Dictionary<string, object> args)
|
||||
{
|
||||
widgetType = widgetType.Split('@')[0];
|
||||
return Game.CreateObject<Widget>(widgetType + "Widget");
|
||||
return Game.modData.ObjectCreator.CreateObject<Widget>(widgetType + "Widget", args);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,12 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
class WorldInteractionControllerWidget : Widget
|
||||
{
|
||||
public WorldInteractionControllerWidget() : base() {}
|
||||
readonly World world;
|
||||
[ObjectCreator.UseCtor]
|
||||
public WorldInteractionControllerWidget( [ObjectCreator.Param( "world" )] World world )
|
||||
{
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
public override void DrawInner( World world )
|
||||
{
|
||||
@@ -43,7 +48,6 @@ namespace OpenRA.Widgets
|
||||
public override bool HandleInputInner(MouseInput mi)
|
||||
{
|
||||
var xy = Game.viewport.ViewToWorld(mi);
|
||||
var world = Game.world;
|
||||
if (mi.Button == MouseButton.Left && mi.Event == MouseInputEvent.Down)
|
||||
{
|
||||
dragStart = dragEnd = xy;
|
||||
@@ -106,7 +110,6 @@ namespace OpenRA.Widgets
|
||||
|
||||
public override string GetCursor(int2 pos)
|
||||
{
|
||||
var world = Game.world;
|
||||
return Sync.CheckSyncUnchanged( world, () =>
|
||||
{
|
||||
if (!world.GameHasStarted)
|
||||
@@ -129,7 +132,7 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
if (e.KeyName.Length == 1 && char.IsDigit(e.KeyName[0]))
|
||||
{
|
||||
Game.world.Selection.DoControlGroup(Game.world, e.KeyName[0] - '0', e.Modifiers);
|
||||
world.Selection.DoControlGroup(world, e.KeyName[0] - '0', e.Modifiers);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -144,7 +147,6 @@ namespace OpenRA.Widgets
|
||||
|
||||
public void GotoNextBase()
|
||||
{
|
||||
var world = Game.world;
|
||||
var bases = world.Queries.OwnedBy[world.LocalPlayer].WithTrait<BaseBuilding>().ToArray();
|
||||
if (!bases.Any()) return;
|
||||
|
||||
|
||||
@@ -47,7 +47,12 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
public readonly string BuildPaletteClose = "bleep13.aud";
|
||||
public readonly string TabClick = "ramenu1.aud";
|
||||
|
||||
public BuildPaletteWidget() : base() { }
|
||||
readonly World world;
|
||||
[ObjectCreator.UseCtor]
|
||||
public BuildPaletteWidget( [ObjectCreator.Param("world")] World world )
|
||||
{
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -148,7 +153,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
return true;
|
||||
}
|
||||
|
||||
return DoBuildingHotkey(Char.ToLowerInvariant(e.KeyChar), Game.world);
|
||||
return DoBuildingHotkey(Char.ToLowerInvariant(e.KeyChar), world);
|
||||
}
|
||||
|
||||
public override bool HandleInputInner(MouseInput mi)
|
||||
|
||||
@@ -15,8 +15,11 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
{
|
||||
public class IngameChromeDelegate : IWidgetDelegate
|
||||
{
|
||||
public IngameChromeDelegate()
|
||||
{
|
||||
readonly World world;
|
||||
[ObjectCreator.UseCtor]
|
||||
public IngameChromeDelegate( [ObjectCreator.Param("world")] World world )
|
||||
{
|
||||
this.world = world;
|
||||
var r = Widget.RootWidget;
|
||||
var gameRoot = r.GetWidget("INGAME_ROOT");
|
||||
var optionsBG = gameRoot.GetWidget("INGAME_OPTIONS_BG");
|
||||
@@ -50,7 +53,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
|
||||
optionsBG.GetWidget("SURRENDER").OnMouseUp = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("Surrender", Game.world.LocalPlayer.PlayerActor));
|
||||
Game.IssueOrder(new Order("Surrender", world.LocalPlayer.PlayerActor));
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -66,12 +69,12 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
var postgameText = postgameBG.GetWidget<LabelWidget>("TEXT");
|
||||
postgameBG.IsVisible = () =>
|
||||
{
|
||||
return Game.world.LocalPlayer != null && Game.world.LocalPlayer.WinState != WinState.Undefined;
|
||||
return world.LocalPlayer != null && world.LocalPlayer.WinState != WinState.Undefined;
|
||||
};
|
||||
|
||||
postgameText.GetText = () =>
|
||||
{
|
||||
var state = Game.world.LocalPlayer.WinState;
|
||||
var state = world.LocalPlayer.WinState;
|
||||
return (state == WinState.Undefined)? "" :
|
||||
((state == WinState.Lost)? "YOU ARE DEFEATED" : "YOU ARE VICTORIOUS");
|
||||
};
|
||||
|
||||
@@ -8,15 +8,19 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using OpenRA;
|
||||
using OpenRA.Mods.RA.Orders;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
{
|
||||
public class OrderButtonsChromeDelegate : IWidgetDelegate
|
||||
{
|
||||
public OrderButtonsChromeDelegate()
|
||||
{
|
||||
{
|
||||
readonly World world;
|
||||
[ObjectCreator.UseCtor]
|
||||
public OrderButtonsChromeDelegate( [ObjectCreator.Param("world")] World world )
|
||||
{
|
||||
this.world = world;
|
||||
var r = Widget.RootWidget;
|
||||
var gameRoot = r.GetWidget("INGAME_ROOT");
|
||||
|
||||
@@ -25,23 +29,23 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
var sell = moneybin.GetWidget<OrderButtonWidget>("SELL");
|
||||
if (sell != null)
|
||||
{
|
||||
sell.Pressed = () => Game.world.OrderGenerator is SellOrderGenerator;
|
||||
sell.OnMouseDown = mi => { Game.world.ToggleInputMode<SellOrderGenerator>(); return true; };
|
||||
sell.Pressed = () => world.OrderGenerator is SellOrderGenerator;
|
||||
sell.OnMouseDown = mi => { world.ToggleInputMode<SellOrderGenerator>(); return true; };
|
||||
}
|
||||
|
||||
var powerdown = moneybin.GetWidget<OrderButtonWidget>("POWER_DOWN");
|
||||
if (powerdown != null)
|
||||
{
|
||||
powerdown.Pressed = () => Game.world.OrderGenerator is PowerDownOrderGenerator;
|
||||
powerdown.OnMouseDown = mi => { Game.world.ToggleInputMode<PowerDownOrderGenerator>(); return true; };
|
||||
powerdown.Pressed = () => world.OrderGenerator is PowerDownOrderGenerator;
|
||||
powerdown.OnMouseDown = mi => { world.ToggleInputMode<PowerDownOrderGenerator>(); return true; };
|
||||
}
|
||||
|
||||
var repair = moneybin.GetWidget<OrderButtonWidget>("REPAIR");
|
||||
if (repair != null)
|
||||
{
|
||||
repair.Enabled = () => { return RepairOrderGenerator.PlayerIsAllowedToRepair( Game.world ); };
|
||||
repair.Pressed = () => Game.world.OrderGenerator is RepairOrderGenerator;
|
||||
repair.OnMouseDown = mi => { Game.world.ToggleInputMode<RepairOrderGenerator>(); return true; };
|
||||
repair.Enabled = () => { return RepairOrderGenerator.PlayerIsAllowedToRepair( world ); };
|
||||
repair.Pressed = () => world.OrderGenerator is RepairOrderGenerator;
|
||||
repair.OnMouseDown = mi => { world.ToggleInputMode<RepairOrderGenerator>(); return true; };
|
||||
repair.GetLongDesc = () => { return repair.Enabled() ? repair.LongDesc : repair.LongDesc + "\n\nRequires: Construction Yard"; };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
Modifiers = Game.GetModifierKeys()
|
||||
};
|
||||
|
||||
var cursor = Game.world.OrderGenerator.GetCursor( world, loc, mi );
|
||||
var cursor = world.OrderGenerator.GetCursor( world, loc, mi );
|
||||
if (cursor == null)
|
||||
return "default";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user