diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 914ef046b6..2b36e821a8 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -1,4 +1,4 @@ - + Debug @@ -39,20 +39,15 @@ - 3.5 - 3.5 - 3.5 - False - ..\ICSharpCode.SharpZipLib.dll @@ -235,7 +230,6 @@ - diff --git a/OpenRA.Mods.RA/Orders/PowerDownOrderGenerator.cs b/OpenRA.Mods.RA/Orders/PowerDownOrderGenerator.cs index acf7d2fa4c..c344a6706a 100755 --- a/OpenRA.Mods.RA/Orders/PowerDownOrderGenerator.cs +++ b/OpenRA.Mods.RA/Orders/PowerDownOrderGenerator.cs @@ -12,11 +12,21 @@ using System.Collections.Generic; using System.Linq; using OpenRA.Graphics; using OpenRA.Mods.RA.Buildings; +using OpenRA.Traits; namespace OpenRA.Mods.RA.Orders { - class PowerDownOrderGenerator : IOrderGenerator + public class GlobalButtonOrderGenerator : IOrderGenerator { + string cursor; + string order; + + public GlobalButtonOrderGenerator(string cursor, string order) + { + this.cursor = cursor; + this.order = order; + } + public IEnumerable Order(World world, int2 xy, MouseInput mi) { if (mi.Button == MouseButton.Right) @@ -31,11 +41,10 @@ namespace OpenRA.Mods.RA.Orders { var underCursor = world.FindUnitsAtMouse(mi.Location) .Where(a => a.Owner == world.LocalPlayer - && a.HasTrait()) - .FirstOrDefault(); + && a.HasTrait()).FirstOrDefault(); if (underCursor != null) - yield return new Order("PowerDown", underCursor, false); + yield return new Order(order, underCursor, false); } } @@ -46,8 +55,17 @@ namespace OpenRA.Mods.RA.Orders public string GetCursor(World world, int2 xy, MouseInput mi) { mi.Button = MouseButton.Left; - return OrderInner(world, xy, mi).Any() - ? "powerdown" : "powerdown-blocked"; + return cursor + (OrderInner(world, xy, mi).Any() ? "" : "-blocked"); } } + + public class PowerDownOrderGenerator : GlobalButtonOrderGenerator + { + public PowerDownOrderGenerator() : base( "powerdown", "PowerDown" ) { } + } + + public class SellOrderGenerator : GlobalButtonOrderGenerator + { + public SellOrderGenerator() : base( "sell", "Sell" ) { } + } } diff --git a/OpenRA.Mods.RA/Orders/SellOrderGenerator.cs b/OpenRA.Mods.RA/Orders/SellOrderGenerator.cs deleted file mode 100755 index 1a569ed604..0000000000 --- a/OpenRA.Mods.RA/Orders/SellOrderGenerator.cs +++ /dev/null @@ -1,53 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -using System.Collections.Generic; -using System.Linq; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Orders -{ - public class SellOrderGenerator : IOrderGenerator - { - public IEnumerable Order(World world, int2 xy, MouseInput mi) - { - if (mi.Button == MouseButton.Right) - world.CancelInputMode(); - - return OrderInner(world, xy, mi); - } - - IEnumerable OrderInner(World world, int2 xy, MouseInput mi) - { - if (mi.Button == MouseButton.Left) - { - var underCursor = world.FindUnitsAtMouse(mi.Location) - .Where(a => a.Owner == world.LocalPlayer - && a.HasTrait()).FirstOrDefault(); - - if (underCursor != null) - yield return new Order("Sell", underCursor, false); - } - } - - public void Tick( World world ) {} - public void RenderAfterWorld( WorldRenderer wr, World world ) { } - public void RenderBeforeWorld( WorldRenderer wr, World world ) { } - - public string GetCursor(World world, int2 xy, MouseInput mi) - { - mi.Button = MouseButton.Left; - return OrderInner(world, xy, mi).Any() - ? "sell" : "sell-blocked"; - } - } -} diff --git a/OpenRA.Mods.RA/Sellable.cs b/OpenRA.Mods.RA/Sellable.cs index db0fcca9eb..c5ea33da78 100644 --- a/OpenRA.Mods.RA/Sellable.cs +++ b/OpenRA.Mods.RA/Sellable.cs @@ -14,12 +14,12 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA { - class SellableInfo : TraitInfo + public class SellableInfo : TraitInfo { public readonly int RefundPercent = 50; } - class Sellable : IResolveOrder + public class Sellable : IResolveOrder { bool selling = false;