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;
}
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);
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)
@@ -101,7 +101,7 @@ namespace OpenRA.Mods.Common.Traits
});
}
class SelectTarget : IOrderGenerator
class SelectUpgradeTarget : IOrderGenerator
{
readonly GrantUpgradePower power;
readonly int range;
@@ -109,7 +109,7 @@ namespace OpenRA.Mods.Common.Traits
readonly SupportPowerManager manager;
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
if (Game.Settings.Game.UseClassicMouseStyle)

View File

@@ -81,6 +81,12 @@ namespace OpenRA.Mods.Common.Traits
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)
{
if (Info.DisplayRadarPing && manager.RadarPings != null)
@@ -92,11 +98,5 @@ namespace OpenRA.Mods.Common.Traits
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)
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)

View File

@@ -35,10 +35,10 @@ namespace OpenRA.Mods.RA.Traits
{
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);
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)
@@ -94,7 +94,7 @@ namespace OpenRA.Mods.RA.Traits
return true;
}
class SelectTarget : IOrderGenerator
class SelectChronoshiftTarget : IOrderGenerator
{
readonly ChronoshiftPower power;
readonly int range;
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.RA.Traits
readonly SupportPowerManager manager;
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
if (Game.Settings.Game.UseClassicMouseStyle)