Delegate cursor selection to GlobalButtonOrderGenerator subclasses.
This commit is contained in:
@@ -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";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user