Let docking angle be determined by the host building.

This commit is contained in:
tovl
2020-08-02 13:56:51 +02:00
committed by reaperrr
parent 2e8c85ff0b
commit 92189e4b50
13 changed files with 71 additions and 16 deletions

View File

@@ -111,9 +111,12 @@ namespace OpenRA.Mods.Common.Activities
if (ShouldLandAtBuilding(self, dest))
{
var exit = dest.FirstExitOrDefault();
var offset = exit != null ? exit.Info.SpawnOffset : WVec.Zero;
if (aircraft.Info.TurnToDock || !aircraft.Info.VTOL)
facing = aircraft.Info.InitialFacing;
var offset = WVec.Zero;
if (exit != null)
{
offset = exit.Info.SpawnOffset;
facing = exit.Info.Facing;
}
aircraft.MakeReservation(dest);
QueueChild(new Land(self, Target.FromActor(dest), offset, facing, Color.Green));

View File

@@ -114,9 +114,6 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Does this VTOL actor need to turn before landing (on terrain)?")]
public readonly bool TurnToLand = false;
[Desc("Does this VTOL actor need to turn before landing on a resupplier?")]
public readonly bool TurnToDock = true;
[Desc("Does this actor automatically take off after resupplying?")]
public readonly bool TakeOffOnResupply = false;

View File

@@ -0,0 +1,61 @@
#region Copyright & License Information
/*
* Copyright 2007-2020 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
namespace OpenRA.Mods.Common.UpdateRules.Rules
{
public class RemoveTurnToDock : UpdateRule
{
public override string Name { get { return "TurnToDock is removed from the Aircraft trait."; } }
public override string Description
{
get
{
return "TurnToDock is removed from the Aircraft trait in favor of letting the Exit trait on the host" +
"building determine whether or not turning is required and to what facing the aircraft must turn.";
}
}
readonly List<Tuple<string, string>> turningAircraft = new List<Tuple<string, string>>();
public override IEnumerable<string> AfterUpdate(ModData modData)
{
var message = "TurnToDock is now deprecated. The following actors had TurnToDock enabled:\n"
+ UpdateUtils.FormatMessageList(turningAircraft.Select(n => n.Item1 + " (" + n.Item2 + ")"))
+ "\n If you wish these units to keep their turning behaviour when docking with a host building" +
"you will need to define a 'Facing' parameter on the 'Exit' trait of the host building. This change" +
"does not affect the behaviour for landing on terrain which is governed by TurnToLand.";
if (turningAircraft.Any())
yield return message;
turningAircraft.Clear();
}
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNode actorNode)
{
var aircraft = actorNode.LastChildMatching("Aircraft");
if (aircraft != null)
{
var turnToDock = aircraft.LastChildMatching("TurnToDock");
if (turnToDock != null || turnToDock.NodeValue<bool>())
yield break;
turningAircraft.Add(Tuple.Create(actorNode.Key, actorNode.Location.Filename));
}
yield break;
}
}
}

View File

@@ -73,6 +73,7 @@ namespace OpenRA.Mods.Common.UpdateRules
new RenameSelfHealing(),
new ReplaceBurns(),
new RemoveMuzzleSplitFacings(),
new RemoveTurnToDock(),
})
};

View File

@@ -329,7 +329,6 @@
VTOL: true
LandableTerrainTypes: Clear, Rough, Road, Beach, Tiberium, BlueTiberium
Crushes: crate, infantry
InitialFacing: 896
CanSlide: True
HiddenUnderFog:
Type: GroundPosition

View File

@@ -545,6 +545,7 @@ HPAD:
Range: 5c0
Exit@1:
SpawnOffset: 0,-256,0
Facing: 896
Production:
Produces: Aircraft.GDI, Aircraft.Nod
Reservable:

View File

@@ -13,7 +13,6 @@ carryall.reinforce:
Aircraft:
CruiseAltitude: 2160
CruisingCondition: cruising
InitialFacing: 0
Speed: 144
TurnSpeed: 16
LandableTerrainTypes: Sand, Rock, Transition, Spice, SpiceSand, Dune, Concrete

View File

@@ -84,7 +84,6 @@ MIG:
OpportunityFire: False
Aircraft:
CruiseAltitude: 2560
InitialFacing: 768
TurnSpeed: 16
Speed: 223
RepulsionSpeed: 40
@@ -158,7 +157,6 @@ YAK:
OpportunityFire: False
Aircraft:
CruiseAltitude: 2560
InitialFacing: 768
TurnSpeed: 16
Speed: 178
RepulsionSpeed: 40

View File

@@ -617,7 +617,6 @@
VTOL: true
LandableTerrainTypes: Clear, Rough, Road, Ore, Beach, Gems
Crushes: crate, mine, infantry
InitialFacing: 896
CanSlide: True
GpsDot:
String: Helicopter

View File

@@ -12,7 +12,6 @@ DPOD:
Roll: 0
TurnSpeed: 20
Speed: 149
InitialFacing: 0
Health:
HP: 6000
Armor:
@@ -98,7 +97,6 @@ DSHP:
Roll: 0
TurnSpeed: 20
Speed: 168
InitialFacing: 0
TakeoffSounds: dropup1.aud
LandingSounds: dropdwn1.aud
IdealSeparation: 1275
@@ -266,7 +264,6 @@ ORCATRAN:
Aircraft:
TurnSpeed: 20
Speed: 84
InitialFacing: 0
LandableTerrainTypes: Clear, Road, Rail, DirtRoad, Rough, Tiberium, BlueTiberium, Veins
Crushes: crate, infantry
TakeoffSounds: orcaup1.aud
@@ -308,7 +305,6 @@ TRNSPORT:
Aircraft:
TurnSpeed: 20
Speed: 149
InitialFacing: 0
Pitch: 0
Roll: 0
TakeoffSounds: dropup1.aud

View File

@@ -875,7 +875,6 @@
RepairActors: gadept
Voice: Move
Aircraft:
InitialFacing: 896
AirborneCondition: airborne
CruisingCondition: cruising
CruiseAltitude: 4c704

View File

@@ -266,6 +266,7 @@ GAHPAD:
MaxHeightDelta: 3
Exit@1:
SpawnOffset: 0,-256,0
Facing: 896
ExitsDebugOverlay:
RallyPoint:
Palette: mouse

View File

@@ -241,6 +241,7 @@ NAHPAD:
MaxHeightDelta: 3
Exit@1:
SpawnOffset: 0,-256,0
Facing: 896
ExitsDebugOverlay:
RallyPoint:
Palette: mouse