diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index f0481ab450..96b179f60e 100755 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -79,6 +79,7 @@ + diff --git a/OpenRA.Game/Orders/GenericSelectTarget.cs b/OpenRA.Game/Orders/GenericSelectTarget.cs new file mode 100644 index 0000000000..cecdcaf52c --- /dev/null +++ b/OpenRA.Game/Orders/GenericSelectTarget.cs @@ -0,0 +1,56 @@ +#region Copyright & License Information +/* + * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford. + * This file is part of OpenRA. + * + * OpenRA is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenRA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenRA. If not, see . + */ +#endregion + +using System.Collections.Generic; + +namespace OpenRA.Orders +{ + public class GenericSelectTarget : IOrderGenerator + { + readonly Actor subject; + readonly string order; + readonly string cursor; + + public GenericSelectTarget(Actor subject, string order, string cursor) + { + this.subject = subject; + this.order = order; + this.cursor = cursor; + } + + public IEnumerable Order(World world, int2 xy, MouseInput mi) + { + if (mi.Button == MouseButton.Right) + Game.controller.CancelInputMode(); + return OrderInner(world, xy, mi); + } + + IEnumerable OrderInner(World world, int2 xy, MouseInput mi) + { + if (mi.Button == MouseButton.Left) + yield return new Order(order, subject, xy); + } + + public void Tick(World world) { } + public void Render(World world) { } + + public string GetCursor(World world, int2 xy, MouseInput mi) { return cursor; } + } +} diff --git a/OpenRA.Mods.Cnc/AirstrikePower.cs b/OpenRA.Mods.Cnc/AirstrikePower.cs index 7666978e7b..ef40d63181 100644 --- a/OpenRA.Mods.Cnc/AirstrikePower.cs +++ b/OpenRA.Mods.Cnc/AirstrikePower.cs @@ -1,9 +1,27 @@ -using System; +#region Copyright & License Information +/* + * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford. + * This file is part of OpenRA. + * + * OpenRA is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenRA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenRA. If not, see . + */ +#endregion + using System.Collections.Generic; -using System.Linq; -using System.Text; using OpenRA.Traits; using OpenRA.Traits.Activities; +using OpenRA.Orders; namespace OpenRA.Mods.Cnc { @@ -18,33 +36,12 @@ namespace OpenRA.Mods.Cnc protected override void OnActivate() { - Game.controller.orderGenerator = new SelectTarget(); + Game.controller.orderGenerator = new GenericSelectTarget(Owner.PlayerActor, "Airstrike", "ability"); Sound.Play(Info.SelectTargetSound); } protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, Info.EndChargeSound); } - class SelectTarget : IOrderGenerator - { - public IEnumerable Order(World world, int2 xy, MouseInput mi) - { - if (mi.Button == MouseButton.Right) - Game.controller.CancelInputMode(); - return OrderInner(world, xy, mi); - } - - IEnumerable OrderInner(World world, int2 xy, MouseInput mi) - { - if (mi.Button == MouseButton.Left) - yield return new Order("Airstrike", world.LocalPlayer.PlayerActor, xy); - } - - public void Tick(World world) { } - public void Render(World world) { } - - public string GetCursor(World world, int2 xy, MouseInput mi) { return "ability"; } - } - public void ResolveOrder(Actor self, Order order) { if (order.OrderString == "Airstrike")