diff --git a/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs b/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs index a4ed10ab87..475c9575ae 100644 --- a/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs +++ b/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs @@ -27,6 +27,10 @@ namespace OpenRA.Mods.Common.Widgets protected readonly World World; readonly WorldRenderer worldRenderer; + readonly Color normalSelectionColor; + readonly Color altSelectionColor; + readonly Color ctrlSelectionColor; + int2 dragStart, mousePos; bool isDragging = false; @@ -43,6 +47,14 @@ namespace OpenRA.Mods.Common.Widgets { World = world; this.worldRenderer = worldRenderer; + if (!ChromeMetrics.TryGet("AltSelectionColor", out altSelectionColor)) + altSelectionColor = Color.White; + + if (!ChromeMetrics.TryGet("CtrlSelectionColor", out ctrlSelectionColor)) + ctrlSelectionColor = Color.White; + + if (!ChromeMetrics.TryGet("NormalSelectionColor", out normalSelectionColor)) + normalSelectionColor = Color.White; } void DrawRollover(Actor unit) @@ -61,7 +73,14 @@ namespace OpenRA.Mods.Common.Widgets { var a = worldRenderer.Viewport.WorldToViewPx(dragStart); var b = worldRenderer.Viewport.WorldToViewPx(mousePos); - Game.Renderer.RgbaColorRenderer.DrawRect(a, b, 1, Color.White); + + var color = normalSelectionColor; + if (modifiers.HasFlag(Modifiers.Alt) && !modifiers.HasFlag(Modifiers.Ctrl)) + color = altSelectionColor; + else if (modifiers.HasFlag(Modifiers.Ctrl) && !modifiers.HasFlag(Modifiers.Alt)) + color = ctrlSelectionColor; + + Game.Renderer.RgbaColorRenderer.DrawRect(a, b, 1, color); // Render actors in the dragbox foreach (var u in SelectActorsInBoxWithDeadzone(World, dragStart, mousePos, modifiers)) diff --git a/mods/cnc/metrics.yaml b/mods/cnc/metrics.yaml index 98e12977dd..3b81599c32 100644 --- a/mods/cnc/metrics.yaml +++ b/mods/cnc/metrics.yaml @@ -12,3 +12,6 @@ Metrics: ClickSound: ClickSound ChatMessageColor: FFFFFF SystemMessageColor: FFFF00 + NormalSelectionColor: FFFFFF + AltSelectionColor: 00FFFF + CtrlSelectionColor: FFFF00 diff --git a/mods/d2k/metrics.yaml b/mods/d2k/metrics.yaml index d438f51505..27501ec37c 100644 --- a/mods/d2k/metrics.yaml +++ b/mods/d2k/metrics.yaml @@ -12,3 +12,6 @@ Metrics: ClickSound: ClickSound ChatMessageColor: FFFFFF SystemMessageColor: FFFF00 + NormalSelectionColor: FFFFFF + AltSelectionColor: 00FFFF + CtrlSelectionColor: FFFF00 diff --git a/mods/ra/metrics.yaml b/mods/ra/metrics.yaml index a4eafcd2f8..c6a03c8562 100644 --- a/mods/ra/metrics.yaml +++ b/mods/ra/metrics.yaml @@ -21,3 +21,6 @@ Metrics: ClickSound: ClickSound ChatMessageColor: FFFFFF SystemMessageColor: FFFF00 + NormalSelectionColor: FFFFFF + AltSelectionColor: 00FFFF + CtrlSelectionColor: FFFF00 diff --git a/mods/ts/metrics.yaml b/mods/ts/metrics.yaml index 569a98ac41..0445bce6de 100644 --- a/mods/ts/metrics.yaml +++ b/mods/ts/metrics.yaml @@ -8,3 +8,6 @@ Metrics: ClickSound: ClickSound ChatMessageColor: FFFFFF SystemMessageColor: FFFF00 + NormalSelectionColor: FFFFFF + AltSelectionColor: 00FFFF + CtrlSelectionColor: FFFF00