diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs index 38e63567d4..1fcbe0efa6 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs @@ -111,17 +111,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var sidebarRoot = playerWidgets.GetWidget("SIDEBAR_BACKGROUND"); - var sellButton = sidebarRoot.GetWidget("SELL_BUTTON"); - sellButton.OnClick = () => world.ToggleInputMode(); - sellButton.IsToggled = () => world.OrderGenerator is SellOrderGenerator; - var sellIcon = sellButton.GetWidget("ICON"); - sellIcon.GetImageName = () => world.OrderGenerator is SellOrderGenerator ? "sell-active" : "sell"; - - var repairButton = sidebarRoot.GetWidget("REPAIR_BUTTON"); - repairButton.OnClick = () => world.ToggleInputMode(); - repairButton.IsToggled = () => world.OrderGenerator is RepairOrderGenerator; - var repairIcon = repairButton.GetWidget("ICON"); - repairIcon.GetImageName = () => world.OrderGenerator is RepairOrderGenerator ? "repair-active" : "repair"; + BindOrderButton(world, sidebarRoot, "SELL_BUTTON", "sell"); + BindOrderButton(world, sidebarRoot, "REPAIR_BUTTON", "repair"); var playerResources = world.LocalPlayer.PlayerActor.Trait(); sidebarRoot.GetWidget("CASH_DISPLAY").GetText = () => @@ -162,5 +153,16 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic }); }; } + + static void BindOrderButton(World world, Widget parent, string button, string icon) + where T : IOrderGenerator, new() + { + var w = parent.GetWidget(button); + w.OnClick = () => world.ToggleInputMode(); + w.IsToggled = () => world.OrderGenerator is T; + + w.GetWidget("ICON").GetImageName = + () => world.OrderGenerator is T ? icon+"-active" : icon; + } } }