diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index a6efcff4cb..692b44a457 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -95,6 +95,8 @@ namespace OpenRA.Traits public interface ITick { void Tick(Actor self); } public interface ITickRender { void TickRender(WorldRenderer wr, Actor self); } public interface IRender { IEnumerable Render(Actor self, WorldRenderer wr); } + + public interface IAutoSelectionSizeInfo : ITraitInfoInterface { } public interface IAutoSelectionSize { int2 SelectionSize(Actor self); } public interface IIssueOrder diff --git a/OpenRA.Mods.Cnc/Traits/Render/WithVoxelUnloadBody.cs b/OpenRA.Mods.Cnc/Traits/Render/WithVoxelUnloadBody.cs index e84e213691..6c81d55017 100644 --- a/OpenRA.Mods.Cnc/Traits/Render/WithVoxelUnloadBody.cs +++ b/OpenRA.Mods.Cnc/Traits/Render/WithVoxelUnloadBody.cs @@ -20,7 +20,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Cnc.Traits.Render { - public class WithVoxelUnloadBodyInfo : ITraitInfo, IRenderActorPreviewVoxelsInfo, Requires + public class WithVoxelUnloadBodyInfo : ITraitInfo, IRenderActorPreviewVoxelsInfo, Requires, IAutoSelectionSizeInfo { [Desc("Voxel sequence name to use when docked to a refinery.")] public readonly string UnloadSequence = "unload"; diff --git a/OpenRA.Mods.Cnc/Traits/Render/WithVoxelWalkerBody.cs b/OpenRA.Mods.Cnc/Traits/Render/WithVoxelWalkerBody.cs index 4ec6be8199..2ba41825b7 100644 --- a/OpenRA.Mods.Cnc/Traits/Render/WithVoxelWalkerBody.cs +++ b/OpenRA.Mods.Cnc/Traits/Render/WithVoxelWalkerBody.cs @@ -22,7 +22,8 @@ using OpenRA.Traits; namespace OpenRA.Mods.Cnc.Traits.Render { - public class WithVoxelWalkerBodyInfo : ITraitInfo, IRenderActorPreviewVoxelsInfo, Requires, Requires, Requires + public class WithVoxelWalkerBodyInfo : ITraitInfo, IRenderActorPreviewVoxelsInfo, Requires, Requires, Requires, + IAutoSelectionSizeInfo { public readonly string Sequence = "idle"; diff --git a/OpenRA.Mods.Common/Traits/CustomSelectionSize.cs b/OpenRA.Mods.Common/Traits/CustomSelectionSize.cs index 4f4f4d952c..6e1f8b528b 100644 --- a/OpenRA.Mods.Common/Traits/CustomSelectionSize.cs +++ b/OpenRA.Mods.Common/Traits/CustomSelectionSize.cs @@ -14,7 +14,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Special case trait for actors that need to define targetable area and screen map bounds manually.")] - public class CustomSelectionSizeInfo : ITraitInfo + public class CustomSelectionSizeInfo : ITraitInfo, IAutoSelectionSizeInfo { [FieldLoader.Require] public readonly int[] CustomBounds = null; diff --git a/OpenRA.Mods.Common/Traits/Render/AutoSelectionSize.cs b/OpenRA.Mods.Common/Traits/Render/AutoSelectionSize.cs index 6ddf821d4d..876172b23f 100644 --- a/OpenRA.Mods.Common/Traits/Render/AutoSelectionSize.cs +++ b/OpenRA.Mods.Common/Traits/Render/AutoSelectionSize.cs @@ -14,7 +14,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Render { [Desc("Automatically calculates the targetable area and screen map boundaries from the sprite size.")] - public class AutoSelectionSizeInfo : ITraitInfo, Requires + public class AutoSelectionSizeInfo : ITraitInfo, Requires, IAutoSelectionSizeInfo { public object Create(ActorInitializer init) { return new AutoSelectionSize(this); } } diff --git a/OpenRA.Mods.Common/Traits/Render/WithVoxelBody.cs b/OpenRA.Mods.Common/Traits/Render/WithVoxelBody.cs index d898595357..c1469ea193 100644 --- a/OpenRA.Mods.Common/Traits/Render/WithVoxelBody.cs +++ b/OpenRA.Mods.Common/Traits/Render/WithVoxelBody.cs @@ -19,7 +19,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Render { [Desc("Also returns a default selection size that is calculated automatically from the voxel dimensions.")] - public class WithVoxelBodyInfo : ConditionalTraitInfo, IRenderActorPreviewVoxelsInfo, Requires + public class WithVoxelBodyInfo : ConditionalTraitInfo, IRenderActorPreviewVoxelsInfo, Requires, IAutoSelectionSizeInfo { public readonly string Sequence = "idle";