diff --git a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs index f31cbbbf89..4d286e8e48 100644 --- a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs +++ b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs @@ -22,7 +22,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { public class AircraftInfo : ITraitInfo, IPositionableInfo, IFacingInfo, IMoveInfo, ICruiseAltitudeInfo, - UsesInit, UsesInit + UsesInit, UsesInit, IActorPreviewInitInfo { public readonly WDist CruiseAltitude = new WDist(1280); public readonly WDist IdealSeparation = new WDist(1706); @@ -92,6 +92,14 @@ namespace OpenRA.Mods.Common.Traits [Desc("The number of ticks that a airplane will wait to make a new search for an available airport.")] public readonly int NumberOfTicksToVerifyAvailableAirport = 150; + [Desc("Facing to use for actor previews (map editor, color picker, etc)")] + public readonly int PreviewFacing = 92; + + IEnumerable IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type) + { + yield return new FacingInit(PreviewFacing); + } + public IReadOnlyDictionary OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any) { return new ReadOnlyDictionary(); } bool IOccupySpaceInfo.SharesCell { get { return false; } } diff --git a/OpenRA.Mods.Common/Traits/Husk.cs b/OpenRA.Mods.Common/Traits/Husk.cs index e0ac3912e3..174ff9e7f4 100644 --- a/OpenRA.Mods.Common/Traits/Husk.cs +++ b/OpenRA.Mods.Common/Traits/Husk.cs @@ -18,10 +18,18 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Spawns remains of a husk actor with the correct facing.")] - public class HuskInfo : ITraitInfo, IOccupySpaceInfo, IFacingInfo + public class HuskInfo : ITraitInfo, IOccupySpaceInfo, IFacingInfo, IActorPreviewInitInfo { public readonly HashSet AllowedTerrain = new HashSet(); + [Desc("Facing to use for actor previews (map editor, color picker, etc)")] + public readonly int PreviewFacing = 92; + + IEnumerable IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type) + { + yield return new FacingInit(PreviewFacing); + } + public object Create(ActorInitializer init) { return new Husk(init, this); } public int GetInitialFacing() { return 128; } diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index c2e7f630a8..d09e49367b 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Unit is able to move.")] public class MobileInfo : ConditionalTraitInfo, IMoveInfo, IPositionableInfo, IFacingInfo, - UsesInit, UsesInit, UsesInit + UsesInit, UsesInit, UsesInit, IActorPreviewInitInfo { [FieldLoader.LoadUsing("LoadSpeeds", true)] [Desc("Set Water: 0 for ground units and lower the value on rough terrain.")] @@ -134,6 +134,14 @@ namespace OpenRA.Mods.Common.Traits [Desc("Can this actor transition on slopes?")] public readonly bool JumpjetTransitionOnRamps = true; + [Desc("Facing to use for actor previews (map editor, color picker, etc)")] + public readonly int PreviewFacing = 92; + + IEnumerable IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type) + { + yield return new FacingInit(PreviewFacing); + } + public override object Create(ActorInitializer init) { return new Mobile(init, this); } static object LoadSpeeds(MiniYaml y) diff --git a/OpenRA.Mods.Common/Traits/Turreted.cs b/OpenRA.Mods.Common/Traits/Turreted.cs index 20de835ebe..77e9fa8a74 100644 --- a/OpenRA.Mods.Common/Traits/Turreted.cs +++ b/OpenRA.Mods.Common/Traits/Turreted.cs @@ -16,7 +16,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { - public class TurretedInfo : ITraitInfo, UsesInit, Requires + public class TurretedInfo : ITraitInfo, UsesInit, Requires, IActorPreviewInitInfo { public readonly string Turret = "primary"; [Desc("Speed at which the turret turns.")] @@ -29,6 +29,14 @@ namespace OpenRA.Mods.Common.Traits [Desc("Muzzle position relative to turret or body. (forward, right, up) triples")] public readonly WVec Offset = WVec.Zero; + [Desc("Facing to use for actor previews (map editor, color picker, etc)")] + public readonly int PreviewFacing = 92; + + IEnumerable IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type) + { + yield return new TurretFacingInit(PreviewFacing); + } + public virtual object Create(ActorInitializer init) { return new Turreted(init, this); } } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs index 41d77c62e6..f488a21411 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs @@ -104,8 +104,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic } var td = new TypeDictionary(); - td.Add(new FacingInit(92)); - td.Add(new TurretFacingInit(92)); td.Add(new OwnerInit(selectedOwner.Name)); td.Add(new FactionInit(selectedOwner.Faction)); foreach (var api in actor.TraitInfos())