Introduce Aircraft VTOL boolean
Rather than hard-linking vertical take-off/land to the CanHover = Helicopter assumption.
This commit is contained in:
committed by
Matthias Mailänder
parent
5d58374962
commit
3b01da737c
@@ -143,12 +143,12 @@ namespace OpenRA.Mods.Common.Scripting
|
||||
}
|
||||
else
|
||||
{
|
||||
var aircraftInfo = transport.TraitOrDefault<Aircraft>();
|
||||
var aircraftInfo = transport.Info.TraitInfoOrDefault<AircraftInfo>();
|
||||
if (aircraftInfo != null)
|
||||
{
|
||||
if (!aircraftInfo.IsPlane)
|
||||
if (aircraftInfo.VTOL)
|
||||
{
|
||||
transport.QueueActivity(new Turn(transport, aircraftInfo.Info.InitialFacing));
|
||||
transport.QueueActivity(new Turn(transport, aircraftInfo.InitialFacing));
|
||||
transport.QueueActivity(new HeliLand(transport, true));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -69,6 +69,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Desc("Can the actor hover in place mid-air? If not, then the actor will have to remain in motion (circle around).")]
|
||||
public readonly bool CanHover = false;
|
||||
|
||||
[Desc("Does the actor land and take off vertically?")]
|
||||
public readonly bool VTOL = false;
|
||||
|
||||
[Desc("Will this actor try to land after it has no more commands?")]
|
||||
public readonly bool LandWhenIdle = true;
|
||||
|
||||
@@ -620,7 +623,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
new CallFunc(() => SetVisualPosition(self, fromPos)),
|
||||
new Fly(self, Target.FromPos(toPos)));
|
||||
|
||||
return ActivityUtils.SequenceActivities(new CallFunc(() => SetVisualPosition(self, fromPos)),
|
||||
return ActivityUtils.SequenceActivities(
|
||||
new CallFunc(() => SetVisualPosition(self, fromPos)),
|
||||
new HeliFly(self, Target.FromPos(toPos)));
|
||||
}
|
||||
|
||||
@@ -757,7 +761,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
UnReserve();
|
||||
|
||||
// TODO: Implement INotifyBecomingIdle instead
|
||||
if (!IsPlane && Info.LandWhenIdle)
|
||||
if (Info.VTOL && Info.LandWhenIdle)
|
||||
{
|
||||
if (Info.TurnToLand)
|
||||
self.QueueActivity(new Turn(self, Info.InitialFacing));
|
||||
|
||||
Reference in New Issue
Block a user