Improve customisation of support power targeting.

This commit is contained in:
Paul Chote
2015-10-03 14:36:08 +01:00
parent 36b7524d37
commit 9b6dba02a8
4 changed files with 19 additions and 15 deletions

View File

@@ -46,10 +46,10 @@ namespace OpenRA.Mods.Common.Traits
this.info = info; this.info = info;
} }
public override IOrderGenerator OrderGenerator(string order, SupportPowerManager manager) public override void SelectTarget(Actor self, string order, SupportPowerManager manager)
{ {
Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound); Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound);
return new SelectTarget(Self.World, order, manager, this); self.World.OrderGenerator = new SelectUpgradeTarget(Self.World, order, manager, this);
} }
public override void Activate(Actor self, Order order, SupportPowerManager manager) public override void Activate(Actor self, Order order, SupportPowerManager manager)
@@ -101,7 +101,7 @@ namespace OpenRA.Mods.Common.Traits
}); });
} }
class SelectTarget : IOrderGenerator class SelectUpgradeTarget : IOrderGenerator
{ {
readonly GrantUpgradePower power; readonly GrantUpgradePower power;
readonly int range; readonly int range;
@@ -109,7 +109,7 @@ namespace OpenRA.Mods.Common.Traits
readonly SupportPowerManager manager; readonly SupportPowerManager manager;
readonly string order; readonly string order;
public SelectTarget(World world, string order, SupportPowerManager manager, GrantUpgradePower power) public SelectUpgradeTarget(World world, string order, SupportPowerManager manager, GrantUpgradePower power)
{ {
// Clear selection if using Left-Click Orders // Clear selection if using Left-Click Orders
if (Game.Settings.Game.UseClassicMouseStyle) if (Game.Settings.Game.UseClassicMouseStyle)

View File

@@ -81,6 +81,12 @@ namespace OpenRA.Mods.Common.Traits
Game.Sound.PlayToPlayer(self.Owner, Info.EndChargeSound); Game.Sound.PlayToPlayer(self.Owner, Info.EndChargeSound);
} }
public virtual void SelectTarget(Actor self, string order, SupportPowerManager manager)
{
Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound);
self.World.OrderGenerator = new SelectGenericPowerTarget(order, manager, info.Cursor, MouseButton.Left);
}
public virtual void Activate(Actor self, Order order, SupportPowerManager manager) public virtual void Activate(Actor self, Order order, SupportPowerManager manager)
{ {
if (Info.DisplayRadarPing && manager.RadarPings != null) if (Info.DisplayRadarPing && manager.RadarPings != null)
@@ -92,11 +98,5 @@ namespace OpenRA.Mods.Common.Traits
Info.RadarPingDuration); Info.RadarPingDuration);
} }
} }
public virtual IOrderGenerator OrderGenerator(string order, SupportPowerManager manager)
{
Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound);
return new SelectGenericPowerTarget(order, manager, info.Cursor, MouseButton.Left);
}
} }
} }

View File

@@ -222,7 +222,11 @@ namespace OpenRA.Mods.Common.Traits
if (!Ready) if (!Ready)
return; return;
manager.Self.World.OrderGenerator = Instances.First().OrderGenerator(key, manager); var power = Instances.FirstOrDefault();
if (power == null)
return;
power.SelectTarget(power.Self, key, manager);
} }
public void Activate(Order order) public void Activate(Order order)

View File

@@ -35,10 +35,10 @@ namespace OpenRA.Mods.RA.Traits
{ {
public ChronoshiftPower(Actor self, ChronoshiftPowerInfo info) : base(self, info) { } public ChronoshiftPower(Actor self, ChronoshiftPowerInfo info) : base(self, info) { }
public override IOrderGenerator OrderGenerator(string order, SupportPowerManager manager) public override void SelectTarget(Actor self, string order, SupportPowerManager manager)
{ {
Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound); Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound);
return new SelectTarget(Self.World, order, manager, this); self.World.OrderGenerator = new SelectChronoshiftTarget(Self.World, order, manager, this);
} }
public override void Activate(Actor self, Order order, SupportPowerManager manager) public override void Activate(Actor self, Order order, SupportPowerManager manager)
@@ -94,7 +94,7 @@ namespace OpenRA.Mods.RA.Traits
return true; return true;
} }
class SelectTarget : IOrderGenerator class SelectChronoshiftTarget : IOrderGenerator
{ {
readonly ChronoshiftPower power; readonly ChronoshiftPower power;
readonly int range; readonly int range;
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.RA.Traits
readonly SupportPowerManager manager; readonly SupportPowerManager manager;
readonly string order; readonly string order;
public SelectTarget(World world, string order, SupportPowerManager manager, ChronoshiftPower power) public SelectChronoshiftTarget(World world, string order, SupportPowerManager manager, ChronoshiftPower power)
{ {
// Clear selection if using Left-Click Orders // Clear selection if using Left-Click Orders
if (Game.Settings.Game.UseClassicMouseStyle) if (Game.Settings.Game.UseClassicMouseStyle)