Add IdleTurnSpeed to Aircraft

Instead of hardcoding 1/3 of normal TurnSpeed on HeliFlyCircle.
This commit is contained in:
reaperrr
2018-11-18 17:30:08 +01:00
committed by Paul Chote
parent 1553a8a5cb
commit d8220b390a
9 changed files with 79 additions and 10 deletions

View File

@@ -37,14 +37,15 @@ namespace OpenRA.Mods.Common.Activities
this.minRange = minRange;
}
public static void FlyToward(Actor self, Aircraft aircraft, int desiredFacing, WDist desiredAltitude)
public static void FlyToward(Actor self, Aircraft aircraft, int desiredFacing, WDist desiredAltitude, int turnSpeedOverride = -1)
{
desiredAltitude = new WDist(aircraft.CenterPosition.Z) + desiredAltitude - self.World.Map.DistanceAboveTerrain(aircraft.CenterPosition);
var move = aircraft.FlyStep(aircraft.Facing);
var altitude = aircraft.CenterPosition.Z;
aircraft.Facing = Util.TickFacing(aircraft.Facing, desiredFacing, aircraft.TurnSpeed);
var turnSpeed = turnSpeedOverride > -1 ? turnSpeedOverride : aircraft.TurnSpeed;
aircraft.Facing = Util.TickFacing(aircraft.Facing, desiredFacing, turnSpeed);
if (altitude != desiredAltitude.Length)
{

View File

@@ -17,14 +17,14 @@ namespace OpenRA.Mods.Common.Activities
public class FlyCircle : Activity
{
readonly Aircraft aircraft;
readonly WDist cruiseAltitude;
readonly int turnSpeedOverride;
int remainingTicks;
public FlyCircle(Actor self, int ticks = -1)
public FlyCircle(Actor self, int ticks = -1, int turnSpeedOverride = -1)
{
aircraft = self.Trait<Aircraft>();
cruiseAltitude = aircraft.Info.CruiseAltitude;
remainingTicks = ticks;
this.turnSpeedOverride = turnSpeedOverride;
}
public override Activity Tick(Actor self)
@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Common.Activities
// We can't possibly turn this fast
var desiredFacing = aircraft.Facing + 64;
Fly.FlyToward(self, aircraft, desiredFacing, cruiseAltitude);
Fly.FlyToward(self, aircraft, desiredFacing, aircraft.Info.CruiseAltitude, turnSpeedOverride);
return this;
}

View File

@@ -17,10 +17,12 @@ namespace OpenRA.Mods.Common.Activities
public class HeliFlyCircle : Activity
{
readonly Aircraft aircraft;
readonly int turnSpeedOverride;
public HeliFlyCircle(Actor self)
public HeliFlyCircle(Actor self, int turnSpeedOverride = -1)
{
aircraft = self.Trait<Aircraft>();
this.turnSpeedOverride = turnSpeedOverride;
}
public override Activity Tick(Actor self)
@@ -42,7 +44,8 @@ namespace OpenRA.Mods.Common.Activities
aircraft.SetPosition(self, aircraft.CenterPosition + move);
var desiredFacing = aircraft.Facing + 64;
aircraft.Facing = Util.TickFacing(aircraft.Facing, desiredFacing, aircraft.TurnSpeed / 3);
var turnSpeed = turnSpeedOverride > -1 ? turnSpeedOverride : aircraft.TurnSpeed;
aircraft.Facing = Util.TickFacing(aircraft.Facing, desiredFacing, turnSpeed);
return this;
}