Add IdleTurnSpeed to Aircraft
Instead of hardcoding 1/3 of normal TurnSpeed on HeliFlyCircle.
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user