Delegate cursor selection to GlobalButtonOrderGenerator subclasses.

This commit is contained in:
Paul Chote
2017-11-15 17:44:13 +00:00
committed by reaperrr
parent 586dd6541b
commit 5030a2257e

View File

@@ -16,14 +16,12 @@ using OpenRA.Mods.Common.Traits;
namespace OpenRA.Mods.Common.Orders namespace OpenRA.Mods.Common.Orders
{ {
public class GlobalButtonOrderGenerator<T> : IOrderGenerator public abstract class GlobalButtonOrderGenerator<T> : IOrderGenerator
{ {
string cursor;
string order; string order;
public GlobalButtonOrderGenerator(string cursor, string order) public GlobalButtonOrderGenerator(string order)
{ {
this.cursor = cursor;
this.order = order; this.order = order;
} }
@@ -35,7 +33,7 @@ namespace OpenRA.Mods.Common.Orders
return OrderInner(world, mi); return OrderInner(world, mi);
} }
IEnumerable<Order> OrderInner(World world, MouseInput mi) protected IEnumerable<Order> OrderInner(World world, MouseInput mi)
{ {
if (mi.Button == MouseButton.Left) if (mi.Button == MouseButton.Left)
{ {
@@ -64,20 +62,28 @@ namespace OpenRA.Mods.Common.Orders
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
public IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; } public IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
public string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) public abstract string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi);
{
mi.Button = MouseButton.Left;
return cursor + (OrderInner(world, mi).Any() ? "" : "-blocked");
}
} }
public class PowerDownOrderGenerator : GlobalButtonOrderGenerator<CanPowerDown> public class PowerDownOrderGenerator : GlobalButtonOrderGenerator<CanPowerDown>
{ {
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<Sellable> public class SellOrderGenerator : GlobalButtonOrderGenerator<Sellable>
{ {
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";
}
} }
} }