remove some duplication in binding order buttons

This commit is contained in:
Chris Forbes
2011-11-25 15:12:04 +13:00
parent 55f811faf5
commit 2462902d8b

View File

@@ -19,30 +19,24 @@ namespace OpenRA.Mods.RA.Widgets.Logic
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public OrderButtonsChromeLogic(World world) public OrderButtonsChromeLogic(World world)
{ {
/* todo: attach this to the correct widget, to remove the lookups below */
var r = Widget.RootWidget; var r = Widget.RootWidget;
var gameRoot = r.GetWidget("INGAME_ROOT"); var gameRoot = r.GetWidget("INGAME_ROOT");
var moneybin = gameRoot.GetWidget("INGAME_MONEY_BIN"); var moneybin = gameRoot.GetWidget("INGAME_MONEY_BIN");
BindOrderButton<SellOrderGenerator>(world, moneybin, "SELL");
var sell = moneybin.GetWidget<OrderButtonWidget>("SELL"); BindOrderButton<PowerDownOrderGenerator>(world, moneybin, "POWER_DOWN");
if (sell != null) BindOrderButton<RepairOrderGenerator>(world, moneybin, "REPAIR");
{
sell.Pressed = () => world.OrderGenerator is SellOrderGenerator;
sell.OnMouseDown = mi => world.ToggleInputMode<SellOrderGenerator>();
} }
var powerdown = moneybin.GetWidget<OrderButtonWidget>("POWER_DOWN"); static void BindOrderButton<T>(World world, Widget parent, string button)
if (powerdown != null) where T : IOrderGenerator, new()
{ {
powerdown.Pressed = () => world.OrderGenerator is PowerDownOrderGenerator; var w = parent.GetWidget<OrderButtonWidget>(button);
powerdown.OnMouseDown = mi => world.ToggleInputMode<PowerDownOrderGenerator>(); if (w != null)
}
var repair = moneybin.GetWidget<OrderButtonWidget>("REPAIR");
if (repair != null)
{ {
repair.Pressed = () => world.OrderGenerator is RepairOrderGenerator; w.Pressed = () => world.OrderGenerator is T;
repair.OnMouseDown = mi => world.ToggleInputMode<RepairOrderGenerator>(); w.OnMouseDown = mi => world.ToggleInputMode<T>();
} }
} }
} }