Improve customisation of support power targeting.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user