diff --git a/OpenRA.Mods.Common/Orders/EnterAlliedActorTargeter.cs b/OpenRA.Mods.Common/Orders/EnterAlliedActorTargeter.cs index 9e889b0f89..84a7d36993 100644 --- a/OpenRA.Mods.Common/Orders/EnterAlliedActorTargeter.cs +++ b/OpenRA.Mods.Common/Orders/EnterAlliedActorTargeter.cs @@ -16,13 +16,17 @@ namespace OpenRA.Mods.Common.Orders { public class EnterAlliedActorTargeter : UnitOrderTargeter where T : ITraitInfoInterface { + readonly string enterCursor; + readonly string enterBlockedCursor; readonly Func canTarget; readonly Func useEnterCursor; - public EnterAlliedActorTargeter(string order, int priority, + public EnterAlliedActorTargeter(string order, int priority, string enterCursor, string enterBlockedCursor, Func canTarget, Func useEnterCursor) - : base(order, priority, "enter", false, true) + : base(order, priority, enterCursor, false, true) { + this.enterCursor = enterCursor; + this.enterBlockedCursor = enterBlockedCursor; this.canTarget = canTarget; this.useEnterCursor = useEnterCursor; } @@ -32,7 +36,7 @@ namespace OpenRA.Mods.Common.Orders if (!self.Owner.IsAlliedWith(target.Owner) || !target.Info.HasTraitInfo() || !canTarget(target, modifiers)) return false; - cursor = useEnterCursor(target) ? "enter" : "enter-blocked"; + cursor = useEnterCursor(target) ? enterCursor : enterBlockedCursor; return true; } diff --git a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs index c7f8ccbdf6..4b9af207e8 100644 --- a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs +++ b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs @@ -139,6 +139,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Boolean expression defining the condition under which the regular (non-force) move cursor is disabled.")] public readonly BooleanExpression RequireForceMoveCondition = null; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public int GetInitialFacing() { return InitialFacing; } public WDist GetCruiseAltitude() { return CruiseAltitude; } @@ -937,11 +940,11 @@ namespace OpenRA.Mods.Common.Traits { get { - yield return new EnterAlliedActorTargeter("ForceEnter", 6, + yield return new EnterAlliedActorTargeter("ForceEnter", 6, Info.EnterCursor, Info.EnterBlockedCursor, (target, modifiers) => Info.CanForceLand && modifiers.HasModifier(TargetModifiers.ForceMove) && AircraftCanEnter(target), target => Reservable.IsAvailableFor(target, self) && AircraftCanResupplyAt(target, true)); - yield return new EnterAlliedActorTargeter("Enter", 5, + yield return new EnterAlliedActorTargeter("Enter", 5, Info.EnterCursor, Info.EnterBlockedCursor, AircraftCanEnter, target => Reservable.IsAvailableFor(target, self) && AircraftCanResupplyAt(target, !Info.TakeOffOnResupply)); diff --git a/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoAircraft.cs b/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoAircraft.cs index c871c9fe01..c1d423c0f3 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoAircraft.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoAircraft.cs @@ -36,6 +36,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Require the force-move modifier to display the move cursor.")] public readonly bool RequiresForceMove = false; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public override object Create(ActorInitializer init) { return new TransformsIntoAircraft(init, this); } } @@ -62,7 +65,7 @@ namespace OpenRA.Mods.Common.Traits { if (!IsTraitDisabled) { - yield return new EnterAlliedActorTargeter("Enter", 5, AircraftCanEnter, + yield return new EnterAlliedActorTargeter("Enter", 5, Info.EnterCursor, Info.EnterBlockedCursor, AircraftCanEnter, target => Reservable.IsAvailableFor(target, self)); yield return new AircraftMoveOrderTargeter(self, this); diff --git a/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoPassenger.cs b/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoPassenger.cs index 9b4bad85c0..27a1fea018 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoPassenger.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoPassenger.cs @@ -32,6 +32,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Require the force-move modifier to display the enter cursor.")] public readonly bool RequiresForceMove = false; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public override object Create(ActorInitializer init) { return new TransformsIntoPassenger(init.Self, this); } } @@ -57,7 +60,7 @@ namespace OpenRA.Mods.Common.Traits get { if (!IsTraitDisabled) - yield return new EnterAlliedActorTargeter("EnterTransport", 5, IsCorrectCargoType, CanEnter); + yield return new EnterAlliedActorTargeter("EnterTransport", 5, Info.EnterCursor, Info.EnterBlockedCursor, IsCorrectCargoType, CanEnter); } } diff --git a/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoRepairable.cs b/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoRepairable.cs index 14fd11942c..ffb78b22d0 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoRepairable.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/TransformsIntoRepairable.cs @@ -33,6 +33,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Require the force-move modifier to display the enter cursor.")] public readonly bool RequiresForceMove = false; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public override object Create(ActorInitializer init) { return new TransformsIntoRepairable(init.Self, this); } } @@ -60,7 +63,7 @@ namespace OpenRA.Mods.Common.Traits get { if (!IsTraitDisabled) - yield return new EnterAlliedActorTargeter("Repair", 5, CanRepairAt, _ => CanRepair()); + yield return new EnterAlliedActorTargeter("Repair", 5, Info.EnterCursor, Info.EnterBlockedCursor, CanRepairAt, _ => CanRepair()); } } diff --git a/OpenRA.Mods.Common/Traits/Harvester.cs b/OpenRA.Mods.Common/Traits/Harvester.cs index 725975780c..853cbf1c3d 100644 --- a/OpenRA.Mods.Common/Traits/Harvester.cs +++ b/OpenRA.Mods.Common/Traits/Harvester.cs @@ -84,6 +84,9 @@ namespace OpenRA.Mods.Common.Traits [VoiceReference] public readonly string DeliverVoice = "Action"; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public override object Create(ActorInitializer init) { return new Harvester(init.Self, this); } } @@ -278,7 +281,7 @@ namespace OpenRA.Mods.Common.Traits { get { - yield return new EnterAlliedActorTargeter("Deliver", 5, + yield return new EnterAlliedActorTargeter("Deliver", 5, Info.EnterCursor, Info.EnterBlockedCursor, (proc, _) => IsAcceptableProcType(proc), proc => proc.Trait().AllowDocking); yield return new HarvestOrderTargeter(); diff --git a/OpenRA.Mods.Common/Traits/Passenger.cs b/OpenRA.Mods.Common/Traits/Passenger.cs index c6ab2eb49e..9d61a76ff0 100644 --- a/OpenRA.Mods.Common/Traits/Passenger.cs +++ b/OpenRA.Mods.Common/Traits/Passenger.cs @@ -47,6 +47,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Boolean expression defining the condition under which the regular (non-force) enter cursor is disabled.")] public readonly BooleanExpression RequireForceMoveCondition = null; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public override object Create(ActorInitializer init) { return new Passenger(this); } } @@ -70,7 +73,7 @@ namespace OpenRA.Mods.Common.Traits { get { - yield return new EnterAlliedActorTargeter("EnterTransport", 5, IsCorrectCargoType, CanEnter); + yield return new EnterAlliedActorTargeter("EnterTransport", 5, Info.EnterCursor, Info.EnterBlockedCursor, IsCorrectCargoType, CanEnter); } } diff --git a/OpenRA.Mods.Common/Traits/Repairable.cs b/OpenRA.Mods.Common/Traits/Repairable.cs index fd9b0b1751..702b51a822 100644 --- a/OpenRA.Mods.Common/Traits/Repairable.cs +++ b/OpenRA.Mods.Common/Traits/Repairable.cs @@ -37,6 +37,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Boolean expression defining the condition under which the regular (non-force) enter cursor is disabled.")] public readonly BooleanExpression RequireForceMoveCondition = null; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public override object Create(ActorInitializer init) { return new Repairable(init.Self, this); } } @@ -65,7 +68,7 @@ namespace OpenRA.Mods.Common.Traits get { if (!isAircraft) - yield return new EnterAlliedActorTargeter("Repair", 5, CanRepairAt, _ => CanRepair() || CanRearm()); + yield return new EnterAlliedActorTargeter("Repair", 5, Info.EnterCursor, Info.EnterBlockedCursor, CanRepairAt, _ => CanRepair() || CanRearm()); } } diff --git a/OpenRA.Mods.Common/Traits/RepairableNear.cs b/OpenRA.Mods.Common/Traits/RepairableNear.cs index c2d72581c5..8f0922e7f3 100644 --- a/OpenRA.Mods.Common/Traits/RepairableNear.cs +++ b/OpenRA.Mods.Common/Traits/RepairableNear.cs @@ -34,6 +34,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Boolean expression defining the condition under which the regular (non-force) enter cursor is disabled.")] public readonly BooleanExpression RequireForceMoveCondition = null; + public readonly string EnterCursor = "enter"; + public readonly string EnterBlockedCursor = "enter-blocked"; + public override object Create(ActorInitializer init) { return new RepairableNear(init.Self, this); } } @@ -53,7 +56,7 @@ namespace OpenRA.Mods.Common.Traits { get { - yield return new EnterAlliedActorTargeter("RepairNear", 5, + yield return new EnterAlliedActorTargeter("RepairNear", 5, Info.EnterCursor, Info.EnterBlockedCursor, CanRepairAt, _ => ShouldRepair()); } }