From 2462902d8b000d550947bf4bdd7cb4a7e6267ab9 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 25 Nov 2011 15:12:04 +1300 Subject: [PATCH] remove some duplication in binding order buttons --- .../Widgets/Logic/OrderButtonsChromeLogic.cs | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/OpenRA.Mods.RA/Widgets/Logic/OrderButtonsChromeLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/OrderButtonsChromeLogic.cs index 234e053924..f5342326ca 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/OrderButtonsChromeLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/OrderButtonsChromeLogic.cs @@ -19,30 +19,24 @@ namespace OpenRA.Mods.RA.Widgets.Logic [ObjectCreator.UseCtor] public OrderButtonsChromeLogic(World world) { + /* todo: attach this to the correct widget, to remove the lookups below */ var r = Widget.RootWidget; var gameRoot = r.GetWidget("INGAME_ROOT"); var moneybin = gameRoot.GetWidget("INGAME_MONEY_BIN"); + BindOrderButton(world, moneybin, "SELL"); + BindOrderButton(world, moneybin, "POWER_DOWN"); + BindOrderButton(world, moneybin, "REPAIR"); + } - var sell = moneybin.GetWidget("SELL"); - if (sell != null) + static void BindOrderButton(World world, Widget parent, string button) + where T : IOrderGenerator, new() + { + var w = parent.GetWidget(button); + if (w != null) { - sell.Pressed = () => world.OrderGenerator is SellOrderGenerator; - sell.OnMouseDown = mi => world.ToggleInputMode(); - } - - var powerdown = moneybin.GetWidget("POWER_DOWN"); - if (powerdown != null) - { - powerdown.Pressed = () => world.OrderGenerator is PowerDownOrderGenerator; - powerdown.OnMouseDown = mi => world.ToggleInputMode(); - } - - var repair = moneybin.GetWidget("REPAIR"); - if (repair != null) - { - repair.Pressed = () => world.OrderGenerator is RepairOrderGenerator; - repair.OnMouseDown = mi => world.ToggleInputMode(); + w.Pressed = () => world.OrderGenerator is T; + w.OnMouseDown = mi => world.ToggleInputMode(); } } }