diff --git a/OpenRA.Game/Effects/Explosion.cs b/OpenRA.Game/Effects/Explosion.cs
index 7691396bf9..89b516cfd5 100755
--- a/OpenRA.Game/Effects/Explosion.cs
+++ b/OpenRA.Game/Effects/Explosion.cs
@@ -29,13 +29,13 @@ namespace OpenRA.Effects
Animation anim;
int2 pos;
- public Explosion( World world, int2 pixelPos, int style, bool isWater)
+ public Explosion(World world, int2 pixelPos, int style, bool isWater)
{
this.pos = pixelPos;
var variantSuffix = isWater ? "w" : "";
anim = new Animation("explosion");
- anim.PlayThen(style.ToString() + variantSuffix,
- () => world.AddFrameEndTask(w => w.Remove(this)));
+ anim.PlayThen(style.ToString() + variantSuffix,
+ () => world.AddFrameEndTask(w => w.Remove(this)));
}
public void Tick( World world ) { anim.Tick(); }
diff --git a/OpenRA.Game/Traits/SupportPowers/NukePower.cs b/OpenRA.Game/Traits/SupportPowers/NukePower.cs
index ba9d3079de..5e7c30599a 100644
--- a/OpenRA.Game/Traits/SupportPowers/NukePower.cs
+++ b/OpenRA.Game/Traits/SupportPowers/NukePower.cs
@@ -38,7 +38,7 @@ namespace OpenRA.Traits
protected override void OnActivate()
{
Game.controller.orderGenerator = new SelectTarget();
- Sound.Play(Info.SelectTargetSound);
+ Sound.PlayToPlayer(Owner, Info.SelectTargetSound);
}
public void ResolveOrder(Actor self, Order order)
@@ -82,8 +82,6 @@ namespace OpenRA.Traits
{
if (mi.Button == MouseButton.Left)
yield return new Order("NuclearMissile", world.LocalPlayer.PlayerActor, xy);
-
- yield break;
}
public void Tick(World world)
diff --git a/OpenRA.Mods.Cnc/Effects/IonCannon.cs b/OpenRA.Mods.Cnc/Effects/IonCannon.cs
new file mode 100644
index 0000000000..5988deb1a6
--- /dev/null
+++ b/OpenRA.Mods.Cnc/Effects/IonCannon.cs
@@ -0,0 +1,54 @@
+#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;
+using System.Collections.Generic;
+using OpenRA.Effects;
+using OpenRA.Graphics;
+using OpenRA.Traits;
+
+namespace OpenRA.Mods.Cnc.Effects
+{
+ class IonCannon : IEffect
+ {
+ int2 Target;
+ Animation anim;
+
+ public IonCannon(World world, int2 location)
+ {
+ Target = location;
+ anim = new Animation("ionsfx");
+ anim.PlayThen("idle",
+ () => world.AddFrameEndTask(w => w.Remove(this)));
+ }
+
+ public void Tick(World world)
+ {
+ throw new NotImplementedException();
+ }
+
+ public IEnumerable Render()
+ {
+ yield return new Renderable(anim.Image,
+ Target - new float2(.5f * anim.Image.size.X, anim.Image.size.Y - Game.CellSize),
+ "effect");
+ }
+ }
+}
diff --git a/OpenRA.Mods.Cnc/IonCannonPower.cs b/OpenRA.Mods.Cnc/IonCannonPower.cs
new file mode 100644
index 0000000000..c952678d2d
--- /dev/null
+++ b/OpenRA.Mods.Cnc/IonCannonPower.cs
@@ -0,0 +1,94 @@
+#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 OpenRA.Mods.Cnc.Effects;
+using OpenRA.Traits;
+
+namespace OpenRA.Mods.Cnc
+{
+ class IonCannonPowerInfo : SupportPowerInfo
+ {
+ public override object Create(Actor self) { return new IonCannonPower(self, this); }
+ }
+
+ class IonCannonPower : SupportPower, IResolveOrder
+ {
+ public IonCannonPower(Actor self, IonCannonPowerInfo info) : base(self, info) { }
+
+ 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("IonCannon", world.LocalPlayer.PlayerActor, xy);
+ }
+
+ public void Tick(World world)
+ {
+ var hasStructure = world.Queries.OwnedBy[world.LocalPlayer]
+ .WithTrait()
+ .Any();
+
+ if (!hasStructure)
+ Game.controller.CancelInputMode();
+ }
+
+ 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 == "IonCannon")
+ {
+ Owner.World.AddFrameEndTask(w =>
+ {
+ Sound.Play(Info.LaunchSound);
+ w.Add(new IonCannon(w, order.TargetLocation));
+ });
+
+ Game.controller.CancelInputMode();
+ FinishActivate();
+ }
+ }
+
+ protected override void OnBeginCharging() { Sound.PlayToPlayer(Owner, Info.BeginChargeSound); }
+ protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, Info.EndChargeSound); }
+
+ protected override void OnActivate()
+ {
+ Game.controller.orderGenerator = new SelectTarget();
+ Sound.PlayToPlayer(Owner, Info.SelectTargetSound);
+ }
+ }
+
+ class IonControlInfo : StatelessTraitInfo { }
+ class IonControl { }
+}
diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
index 892e9b38a5..359a56950f 100644
--- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
+++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
@@ -1,4 +1,4 @@
-
+
Debug
@@ -45,6 +45,8 @@
+
+