diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs index d193421505..b63fd3096b 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs @@ -106,6 +106,9 @@ namespace OpenRA.Mods.Common.Traits public readonly string OrderName; + [Desc("Sort order for the support power palette. Smaller numbers are presented earlier.")] + public readonly int SupportPowerPaletteOrder = 9999; + public SupportPowerInfo() { OrderName = GetType().Name + "Order"; } } diff --git a/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs b/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs index ca545530eb..c151a692ba 100644 --- a/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs @@ -102,7 +102,9 @@ namespace OpenRA.Mods.Common.Widgets return; var powers = player.PlayerActor.Trait().Powers - .Where(x => !x.Value.Disabled).Select((a, i) => new { a, i }) + .Where(x => !x.Value.Disabled) + .OrderBy(p => p.Value.Info.SupportPowerPaletteOrder) + .Select((a, i) => new { a, i }) .ToList(); foreach (var power in powers) diff --git a/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs index e66e64a5d2..91a0d36424 100644 --- a/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs +++ b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs @@ -123,7 +123,8 @@ namespace OpenRA.Mods.Common.Widgets public void RefreshIcons() { icons = new Dictionary(); - var powers = spm.Powers.Values.Where(p => !p.Disabled); + var powers = spm.Powers.Values.Where(p => !p.Disabled) + .OrderBy(p => p.Info.SupportPowerPaletteOrder); var oldIconCount = IconCount; IconCount = 0;