diff --git a/OpenRA.Mods.Common/Orders/GlobalButtonOrderGenerator.cs b/OpenRA.Mods.Common/Orders/GlobalButtonOrderGenerator.cs index 218aa90923..eee0b9b613 100644 --- a/OpenRA.Mods.Common/Orders/GlobalButtonOrderGenerator.cs +++ b/OpenRA.Mods.Common/Orders/GlobalButtonOrderGenerator.cs @@ -16,14 +16,12 @@ using OpenRA.Mods.Common.Traits; namespace OpenRA.Mods.Common.Orders { - public class GlobalButtonOrderGenerator : IOrderGenerator + public abstract class GlobalButtonOrderGenerator : IOrderGenerator { - string cursor; string order; - public GlobalButtonOrderGenerator(string cursor, string order) + public GlobalButtonOrderGenerator(string order) { - this.cursor = cursor; this.order = order; } @@ -35,7 +33,7 @@ namespace OpenRA.Mods.Common.Orders return OrderInner(world, mi); } - IEnumerable OrderInner(World world, MouseInput mi) + protected IEnumerable OrderInner(World world, MouseInput mi) { if (mi.Button == MouseButton.Left) { @@ -64,20 +62,28 @@ namespace OpenRA.Mods.Common.Orders public IEnumerable Render(WorldRenderer wr, World world) { yield break; } public IEnumerable RenderAboveShroud(WorldRenderer wr, World world) { yield break; } - public string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) - { - mi.Button = MouseButton.Left; - return cursor + (OrderInner(world, mi).Any() ? "" : "-blocked"); - } + public abstract string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi); } public class PowerDownOrderGenerator : GlobalButtonOrderGenerator { - public PowerDownOrderGenerator() : base("powerdown", "PowerDown") { } + public PowerDownOrderGenerator() : base("PowerDown") { } + + public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) + { + mi.Button = MouseButton.Left; + return OrderInner(world, mi).Any() ? "powerdown" : "powerdown-blocked"; + } } public class SellOrderGenerator : GlobalButtonOrderGenerator { - public SellOrderGenerator() : base("sell", "Sell") { } + public SellOrderGenerator() : base("Sell") { } + + public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) + { + mi.Button = MouseButton.Left; + return OrderInner(world, mi).Any() ? "sell" : "sell-blocked"; + } } }