From d3994bf198f6785fbd8a28da9c20c0852228cffb Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 24 Jan 2010 23:15:40 +1300 Subject: [PATCH] Use an inner class for Iron Curtain ordergenerator --- .../Orders/IronCurtainOrderGenerator.cs | 60 ------------------- OpenRa.Game/Traits/IronCurtainPower.cs | 50 +++++++++++++++- 2 files changed, 49 insertions(+), 61 deletions(-) delete mode 100644 OpenRa.Game/Orders/IronCurtainOrderGenerator.cs diff --git a/OpenRa.Game/Orders/IronCurtainOrderGenerator.cs b/OpenRa.Game/Orders/IronCurtainOrderGenerator.cs deleted file mode 100644 index 61ec4433e6..0000000000 --- a/OpenRa.Game/Orders/IronCurtainOrderGenerator.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using OpenRa.GameRules; -using OpenRa.Traits; - -namespace OpenRa.Orders -{ - class IronCurtainOrderGenerator : IOrderGenerator - { - SupportPower power; - public IronCurtainOrderGenerator(SupportPower power) - { - this.power = power; - } - - 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) - { - var loc = mi.Location + Game.viewport.Location; - var underCursor = world.FindUnits(loc, loc) - .Where(a => a.Owner == world.LocalPlayer - && a.traits.Contains() - && a.traits.Contains()).FirstOrDefault(); - - if (underCursor != null) - yield return new Order("IronCurtain", underCursor.Owner.PlayerActor, underCursor); - } - - yield break; - } - - public void Tick( World world ) - { - var hasStructure = world.Actors - .Any(a => a.Owner == world.LocalPlayer && a.traits.Contains()); - - if (!hasStructure) - Game.controller.CancelInputMode(); - } - - public void Render( World world ) { } - - public Cursor GetCursor(World world, int2 xy, MouseInput mi) - { - mi.Button = MouseButton.Left; - return OrderInner(world, xy, mi).Any() - ? Cursor.Ability : Cursor.MoveBlocked; - } - } -} diff --git a/OpenRa.Game/Traits/IronCurtainPower.cs b/OpenRa.Game/Traits/IronCurtainPower.cs index 8607691e8a..6ad02378ce 100644 --- a/OpenRa.Game/Traits/IronCurtainPower.cs +++ b/OpenRa.Game/Traits/IronCurtainPower.cs @@ -20,7 +20,7 @@ namespace OpenRa.Traits protected override void OnFinishCharging() { Sound.Play("ironrdy1.aud"); } protected override void OnActivate() { - Game.controller.orderGenerator = new IronCurtainOrderGenerator(this); + Game.controller.orderGenerator = new SelectTarget(); Sound.Play("slcttgt1.aud"); } @@ -41,6 +41,54 @@ namespace OpenRa.Traits FinishActivate(); } } + + class SelectTarget : IOrderGenerator + { + public SelectTarget() { } + + 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) + { + var loc = mi.Location + Game.viewport.Location; + var underCursor = world.FindUnits(loc, loc) + .Where(a => a.Owner == world.LocalPlayer + && a.traits.Contains() + && a.traits.Contains()).FirstOrDefault(); + + if (underCursor != null) + yield return new Order("IronCurtain", underCursor.Owner.PlayerActor, underCursor); + } + + yield break; + } + + public void Tick(World world) + { + var hasStructure = world.Actors + .Any(a => a.Owner == world.LocalPlayer && a.traits.Contains()); + + if (!hasStructure) + Game.controller.CancelInputMode(); + } + + public void Render(World world) { } + + public Cursor GetCursor(World world, int2 xy, MouseInput mi) + { + mi.Button = MouseButton.Left; + return OrderInner(world, xy, mi).Any() + ? Cursor.Ability : Cursor.MoveBlocked; + } + } } // tag trait for the building