using System; using System.Linq; using OpenRA.Orders; namespace OpenRA.Traits { class PowerDownButtonInfo : TraitInfo { } class PowerDownButton : IChromeButton { public string Image { get { return "power"; } } public bool Enabled { get { return true; } } public bool Pressed { get { return Game.controller.orderGenerator is PowerDownOrderGenerator; } } public void OnClick() { Game.controller.ToggleInputMode(); } } class SellButtonInfo : TraitInfo { } class SellButton : IChromeButton { public string Image { get { return "sell"; } } public bool Enabled { get { return true; } } public bool Pressed { get { return Game.controller.orderGenerator is SellOrderGenerator; } } public void OnClick() { Game.controller.ToggleInputMode(); } } class RepairButtonInfo : ITraitInfo { public readonly bool RequiresConstructionYard = true; public object Create(Actor self) { return new RepairButton(this); } } class RepairButton : IChromeButton { RepairButtonInfo info; public RepairButton( RepairButtonInfo info ) { this.info = info; } public string Image { get { return "repair"; } } public bool Enabled { get { return !info.RequiresConstructionYard || Game.world.Queries.OwnedBy[Game.world.LocalPlayer] .WithTrait().Any(); } } public bool Pressed { get { return Game.controller.orderGenerator is RepairOrderGenerator; } } public void OnClick() { Game.controller.ToggleInputMode(); } } }