From 90ac642aa90b1af77899957ad50ae6a16e923a95 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 25 Apr 2013 21:21:58 +1200 Subject: [PATCH 1/4] Split HSLColor out from ColorRamp. --- OpenRA.FileFormats/ColorRamp.cs | 50 +++------- OpenRA.FileFormats/HSLColor.cs | 99 +++++++++++++++++++ OpenRA.FileFormats/OpenRA.FileFormats.csproj | 1 + .../Widgets/Logic/ColorPickerLogic.cs | 6 +- 4 files changed, 119 insertions(+), 37 deletions(-) create mode 100644 OpenRA.FileFormats/HSLColor.cs diff --git a/OpenRA.FileFormats/ColorRamp.cs b/OpenRA.FileFormats/ColorRamp.cs index 36929d7c6a..5f0d9f74cd 100644 --- a/OpenRA.FileFormats/ColorRamp.cs +++ b/OpenRA.FileFormats/ColorRamp.cs @@ -14,59 +14,41 @@ namespace OpenRA.FileFormats { public struct ColorRamp { - public byte H,S,L,R; + public readonly HSLColor Color; + public byte Ramp; + + public ColorRamp(HSLColor color, byte ramp) + { + Color = color; + Ramp = ramp; + } public ColorRamp(byte h, byte s, byte l, byte r) { - H = h; S = s; L = l; R = r; + Color = new HSLColor(h, s, l); + Ramp = r; } /* returns a color along the Lum ramp */ - public Color GetColor( float t ) + public Color GetColor(float t) { - return ColorFromHSL( H / 255f, S / 255f, float2.Lerp( L / 255f, L*R / (255f * 255f), t ) ); + var l = float2.Lerp(Color.L, Color.L*Ramp/255f, t); + return HSLColor.RGBFromHSL(Color.H/255f, Color.S/255f, l/255f); } public override string ToString() { - return "{0},{1},{2},{3}".F(H, S, L, R); - } - - // hk is hue in the range [0,1] instead of [0,360] - static Color ColorFromHSL(float hk, float s, float l) - { - // Convert from HSL to RGB - var q = (l < 0.5f) ? l * (1 + s) : l + s - (l * s); - var p = 2 * l - q; - - float[] trgb = { hk + 1 / 3.0f, hk, hk - 1/3.0f }; - float[] rgb = { 0, 0, 0 }; - - for (int k = 0; k < 3; k++) - { - while (trgb[k] < 0) trgb[k] += 1.0f; - while (trgb[k] > 1) trgb[k] -= 1.0f; - } - - for (int k = 0; k < 3; k++) - { - if (trgb[k] < 1 / 6.0f) { rgb[k] = (p + ((q - p) * 6 * trgb[k])); } - else if (trgb[k] >= 1 / 6.0f && trgb[k] < 0.5) { rgb[k] = q; } - else if (trgb[k] >= 0.5f && trgb[k] < 2.0f / 3) { rgb[k] = (p + ((q - p) * 6 * (2.0f / 3 - trgb[k]))); } - else { rgb[k] = p; } - } - - return Color.FromArgb((int)(rgb[0] * 255), (int)(rgb[1] * 255), (int)(rgb[2] * 255)); + return "{0},{1}".F(Color.ToString(), Ramp); } public static bool operator ==(ColorRamp me, ColorRamp other) { - return (me.H == other.H && me.S == other.S && me.L == other.L && me.R == other.R ); + return (me.Color == other.Color && me.Ramp == other.Ramp); } public static bool operator !=(ColorRamp me, ColorRamp other) { return !(me == other); } - public override int GetHashCode() { return H.GetHashCode() ^ S.GetHashCode() ^ L.GetHashCode() ^ R.GetHashCode(); } + public override int GetHashCode() { return Color.GetHashCode() ^ Ramp.GetHashCode(); } public override bool Equals(object obj) { diff --git a/OpenRA.FileFormats/HSLColor.cs b/OpenRA.FileFormats/HSLColor.cs new file mode 100644 index 0000000000..3b3eab81dd --- /dev/null +++ b/OpenRA.FileFormats/HSLColor.cs @@ -0,0 +1,99 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 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. For more information, + * see COPYING. + */ +#endregion + +using System.Drawing; + +namespace OpenRA.FileFormats +{ + public struct HSLColor + { + public readonly byte H; + public readonly byte S; + public readonly byte L; + + public HSLColor(byte h, byte s, byte l) + { + H = h; + S = s; + L = l; + } + + public Color ToColor() + { + return RGBFromHSL(H / 255f, S / 255f, L / 255f); + } + + public void ToHSV(out float h, out float s, out float v) + { + var ll = 2*L / 255f; + var ss = S / 255f * ((ll <= 1) ? ll : 2 - ll); + + h = H / 255f; + s = (2 * ss) / (ll + ss); + v = (ll + ss) / 2; + } + + public static HSLColor FromHSV(float h, float s, float v) + { + var ll = 0.5f*(2 - s)*v; + var ss = (ll >= 1 || v <= 0) ? 0 : 0.5f*s*v / (ll <= 0.5f ? ll : 1 - ll); + return new HSLColor((byte)(255*h), (byte)(255*ss), (byte)(255*ll)); + } + + public static Color RGBFromHSL(float h, float s, float l) + { + // Convert from HSL to RGB + var q = (l < 0.5f) ? l * (1 + s) : l + s - (l * s); + var p = 2 * l - q; + + float[] trgb = { h + 1 / 3.0f, h, h - 1/3.0f }; + float[] rgb = { 0, 0, 0 }; + + for (int k = 0; k < 3; k++) + { + while (trgb[k] < 0) trgb[k] += 1.0f; + while (trgb[k] > 1) trgb[k] -= 1.0f; + } + + for (int k = 0; k < 3; k++) + { + if (trgb[k] < 1 / 6.0f) { rgb[k] = (p + ((q - p) * 6 * trgb[k])); } + else if (trgb[k] >= 1 / 6.0f && trgb[k] < 0.5) { rgb[k] = q; } + else if (trgb[k] >= 0.5f && trgb[k] < 2.0f / 3) { rgb[k] = (p + ((q - p) * 6 * (2.0f / 3 - trgb[k]))); } + else { rgb[k] = p; } + } + + return Color.FromArgb((int)(rgb[0] * 255), (int)(rgb[1] * 255), (int)(rgb[2] * 255)); + } + + public override string ToString() + { + return "{0},{1},{2}".F(H, S, L); + } + + public static bool operator ==(HSLColor me, HSLColor other) + { + return (me.H == other.H && me.S == other.S && me.L == other.L); + } + + public static bool operator !=(HSLColor me, HSLColor other) { return !(me == other); } + + public override int GetHashCode() { return H.GetHashCode() ^ S.GetHashCode() ^ L.GetHashCode(); } + + public override bool Equals(object obj) + { + if (obj == null) + return false; + + HSLColor o = (HSLColor)obj; + return o == this; + } + } +} diff --git a/OpenRA.FileFormats/OpenRA.FileFormats.csproj b/OpenRA.FileFormats/OpenRA.FileFormats.csproj index fe0f50fbca..e2835f3e54 100644 --- a/OpenRA.FileFormats/OpenRA.FileFormats.csproj +++ b/OpenRA.FileFormats/OpenRA.FileFormats.csproj @@ -137,6 +137,7 @@ + diff --git a/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs index b539e8b8e9..f373e37a8e 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs @@ -44,9 +44,9 @@ namespace OpenRA.Mods.RA.Widgets.Logic Action updateSliders = () => { - hueSlider.Value = ramp.H / 255f; - satSlider.Value = ramp.S / 255f; - lumSlider.Value = ramp.L / 255f; + hueSlider.Value = ramp.Color.H / 255f; + satSlider.Value = ramp.Color.S / 255f; + lumSlider.Value = ramp.Color.L / 255f; }; panel.Get("SAVE_BUTTON").OnClick = () => onSelect(ramp); From 2c0b7d2111df6901fb8905648793841c0cddc991 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 26 Apr 2013 20:26:14 +1200 Subject: [PATCH 2/4] Add a ColorMixer widget for selecting sat/lum. --- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs | 228 +++++++++++++++++++++ 2 files changed, 229 insertions(+) create mode 100755 OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index d19315ef96..3a75b5d1e9 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -432,6 +432,7 @@ + diff --git a/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs b/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs new file mode 100755 index 0000000000..f95a477399 --- /dev/null +++ b/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs @@ -0,0 +1,228 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 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. For more information, + * see COPYING. + */ +#endregion + +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Linq; +using System.Threading; +using OpenRA.FileFormats; +using OpenRA.Graphics; +using OpenRA.Widgets; + +namespace OpenRA.Mods.RA.Widgets +{ + public class ColorMixerWidget : Widget + { + public float[] SRange = {0.2f, 1.0f}; + public float[] VRange = {0.2f, 1.0f}; + public event Action OnChange = () => {}; + + float H, S, V; + Bitmap frontBitmap, swapBitmap, backBitmap; + Sprite mixerSprite; + bool isMoving; + + bool updateFront, updateBack; + object syncWorker = new object(); + Thread workerThread; + bool workerAlive; + + public ColorMixerWidget() : base() {} + public ColorMixerWidget(ColorMixerWidget other) + : base(other) + { + OnChange = other.OnChange; + H = other.H; + S = other.S; + V = other.V; + } + + public override void Initialize(WidgetArgs args) + { + base.Initialize(args); + + // Bitmap data is generated in a background thread and then flipped + frontBitmap = new Bitmap(256, 256); + swapBitmap = new Bitmap(256, 256); + backBitmap = new Bitmap(256, 256); + + var rect = new Rectangle((int)(255*SRange[0]), (int)(255*(1 - VRange[1])), (int)(255*(SRange[1] - SRange[0]))+1, (int)(255*(VRange[1] - VRange[0])) + 1); + mixerSprite = new Sprite(new Sheet(new Size(256, 256)), rect, TextureChannel.Alpha); + mixerSprite.sheet.Texture.SetData(frontBitmap); + } + + void GenerateBitmap() + { + // Generating the selection bitmap is slow, + // so we do it in a background thread + lock (syncWorker) + { + updateBack = true; + + if (workerThread == null || !workerAlive) + { + workerThread = new Thread(GenerateBitmapWorker); + workerThread.Start(); + } + } + } + + void GenerateBitmapWorker() + { + lock (syncWorker) + workerAlive = true; + + for (;;) + { + float hue; + lock (syncWorker) + { + if (!updateBack) + { + workerAlive = false; + break; + } + updateBack = false; + + // Take a local copy of the hue to generate to avoid tearing + hue = H; + } + + var bitmapData = backBitmap.LockBits(backBitmap.Bounds(), + ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); + + unsafe + { + int* c = (int*)bitmapData.Scan0; + + // Generate palette in HSV + for (var v = 0; v < 256; v++) + for (var s = 0; s < 256; s++) + *(c + (v * bitmapData.Stride >> 2) + s) = HSLColor.FromHSV(hue, s / 255f, (255 - v) / 255f).ToColor().ToArgb(); + } + + backBitmap.UnlockBits(bitmapData); + lock (syncWorker) + { + var swap = swapBitmap; + swapBitmap = backBitmap; + backBitmap = swap; + updateFront = true; + } + } + } + + public override void Draw() + { + lock (syncWorker) + { + if (updateFront) + { + var swap = swapBitmap; + swapBitmap = frontBitmap; + frontBitmap = swap; + + mixerSprite.sheet.Texture.SetData(frontBitmap); + updateFront = false; + } + } + + Game.Renderer.RgbaSpriteRenderer.DrawSprite(mixerSprite, RenderOrigin, new float2(RenderBounds.Size)); + + var sprite = ChromeProvider.GetImage("lobby-bits", "colorpicker"); + var pos = RenderOrigin + PxFromValue() - new int2(sprite.bounds.Width/2, sprite.bounds.Height/2); + WidgetUtils.FillRectWithColor(new Rectangle(pos.X + 3, pos.Y + 3, 10, 10), Color.ToColor()); + Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos); + } + + void SetValueFromPx(int2 xy) + { + var rb = RenderBounds; + var s = SRange[0] + xy.X*(SRange[1] - SRange[0])/rb.Width; + var v = SRange[1] - xy.Y*(VRange[1] - VRange[0])/rb.Height; + S = s.Clamp(SRange[0], SRange[1]); + V = v.Clamp(VRange[0], VRange[1]); + } + + int2 PxFromValue() + { + var rb = RenderBounds; + var x = RenderBounds.Width*(S - SRange[0])/(SRange[1] - SRange[0]); + var y = RenderBounds.Height*(1 - (V - VRange[0])/(VRange[1] - VRange[0])); + return new int2((int)x.Clamp(0, rb.Width), (int)y.Clamp(0, rb.Height)); + } + + public override bool HandleMouseInput(MouseInput mi) + { + if (mi.Button != MouseButton.Left) + return false; + if (mi.Event == MouseInputEvent.Down && !TakeFocus(mi)) + return false; + if (!Focused) + return false; + + switch (mi.Event) + { + case MouseInputEvent.Up: + isMoving = false; + LoseFocus(mi); + break; + + case MouseInputEvent.Down: + isMoving = true; + SetValueFromPx(mi.Location - RenderOrigin); + OnChange(); + break; + + case MouseInputEvent.Move: + if (isMoving) + { + SetValueFromPx(mi.Location - RenderOrigin); + OnChange(); + } + break; + } + + return true; + } + + public HSLColor Color { get { return HSLColor.FromHSV(H, S, V); } } + + public void Set(float hue) + { + if (H != hue) + { + H = hue; + GenerateBitmap(); + OnChange(); + } + } + + public void Set(HSLColor color) + { + float h,s,v; + color.ToHSV(out h, out s, out v); + + if (H != h || S != s || V != v) + { + if (H != h) + { + H = h; + GenerateBitmap(); + } + + S = s.Clamp(SRange[0], SRange[1]); + V = v.Clamp(VRange[0], VRange[1]); + OnChange(); + } + } + } +} From e240b9ca3d9e9f26c6fb7d9dbf683c46bdf86d31 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 26 Apr 2013 23:06:23 +1200 Subject: [PATCH 3/4] Add a hue selector widget. --- OpenRA.Game/Widgets/SliderWidget.cs | 2 +- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + OpenRA.Mods.RA/Widgets/HueSliderWidget.cs | 63 +++++++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100755 OpenRA.Mods.RA/Widgets/HueSliderWidget.cs diff --git a/OpenRA.Game/Widgets/SliderWidget.cs b/OpenRA.Game/Widgets/SliderWidget.cs index 9383bbe52c..545cfd161f 100755 --- a/OpenRA.Game/Widgets/SliderWidget.cs +++ b/OpenRA.Game/Widgets/SliderWidget.cs @@ -77,7 +77,7 @@ namespace OpenRA.Widgets } float ValueFromPx(int x) { return MinimumValue + (MaximumValue - MinimumValue) * (1f * x / RenderBounds.Width); } - int PxFromValue(float x) { return (int)(RenderBounds.Width * (x - MinimumValue) / (MaximumValue - MinimumValue)); } + protected int PxFromValue(float x) { return (int)(RenderBounds.Width * (x - MinimumValue) / (MaximumValue - MinimumValue)); } public override Widget Clone() { return new SliderWidget(this); } diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 3a75b5d1e9..e1483f4e5d 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -433,6 +433,7 @@ + diff --git a/OpenRA.Mods.RA/Widgets/HueSliderWidget.cs b/OpenRA.Mods.RA/Widgets/HueSliderWidget.cs new file mode 100755 index 0000000000..43fed4c232 --- /dev/null +++ b/OpenRA.Mods.RA/Widgets/HueSliderWidget.cs @@ -0,0 +1,63 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 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. For more information, + * see COPYING. + */ +#endregion + +using System; +using System.Drawing; +using System.Drawing.Imaging; +using OpenRA.FileFormats; +using OpenRA.Graphics; +using OpenRA.Widgets; + +namespace OpenRA.Mods.RA.Widgets +{ + public class HueSliderWidget : SliderWidget + { + Bitmap hueBitmap; + Sprite hueSprite; + + public HueSliderWidget() : base() {} + public HueSliderWidget(HueSliderWidget other) : base(other) {} + + public override void Initialize(WidgetArgs args) + { + base.Initialize(args); + + hueBitmap = new Bitmap(256, 256); + hueSprite = new Sprite(new Sheet(new Size(256, 256)), new Rectangle(0, 0, 256, 1), TextureChannel.Alpha); + + var bitmapData = hueBitmap.LockBits(hueBitmap.Bounds(), + ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); + unsafe + { + int* c = (int*)bitmapData.Scan0; + for (var h = 0; h < 256; h++) + *(c + h) = HSLColor.FromHSV(h/255f, 1, 1).ToColor().ToArgb(); + } + hueBitmap.UnlockBits(bitmapData); + + hueSprite.sheet.Texture.SetData(hueBitmap); + } + + public override void Draw() + { + if (!IsVisible()) + return; + + var ro = RenderOrigin; + var rb = RenderBounds; + Game.Renderer.RgbaSpriteRenderer.DrawSprite(hueSprite, ro, new float2(rb.Size)); + + var sprite = ChromeProvider.GetImage("lobby-bits", "huepicker"); + var pos = RenderOrigin + new int2(PxFromValue(Value).Clamp(0, rb.Width-1) - sprite.bounds.Width/2, (rb.Height-sprite.bounds.Height)/2); + Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos); + } + } +} + From 70f705bdc783823909daa98de4c7659e767c5433 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 27 Apr 2013 01:28:35 +1200 Subject: [PATCH 4/4] Implement the new color picker. --- OpenRA.Game/Widgets/DropDownButtonWidget.cs | 10 +- .../Widgets/Logic/CncSettingsLogic.cs | 4 +- .../Widgets/Logic/ColorPickerLogic.cs | 52 +++------ OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs | 13 ++- artsrc/cnc/chrome.svg | 20 +++- mods/cnc/chrome.yaml | 2 + mods/cnc/chrome/dialogs.yaml | 97 +++++++---------- mods/cnc/uibits/chrome.png | Bin 45870 -> 45968 bytes mods/d2k/chrome.yaml | 2 + mods/d2k/chrome/color-picker.yaml | 100 +++++++----------- mods/ra/chrome.yaml | 2 + mods/ra/chrome/color-picker.yaml | 95 +++++++---------- mods/ra/uibits/spawnpoints.png | Bin 5654 -> 5756 bytes 13 files changed, 162 insertions(+), 235 deletions(-) diff --git a/OpenRA.Game/Widgets/DropDownButtonWidget.cs b/OpenRA.Game/Widgets/DropDownButtonWidget.cs index 21fd88d1ab..4bd5ef4e3b 100644 --- a/OpenRA.Game/Widgets/DropDownButtonWidget.cs +++ b/OpenRA.Game/Widgets/DropDownButtonWidget.cs @@ -62,7 +62,8 @@ namespace OpenRA.Widgets panel = fullscreenMask = null; } - public void AttachPanel(Widget p) + public void AttachPanel(Widget p) { AttachPanel(p, null); } + public void AttachPanel(Widget p, Action onCancel) { if (panel != null) throw new InvalidOperationException("Attempted to attach a panel to an open dropdown"); @@ -71,7 +72,10 @@ namespace OpenRA.Widgets // Mask to prevent any clicks from being sent to other widgets fullscreenMask = new MaskWidget(); fullscreenMask.Bounds = new Rectangle(0, 0, Game.viewport.Width, Game.viewport.Height); - fullscreenMask.OnMouseDown = mi => RemovePanel(); + fullscreenMask.OnMouseDown += mi => RemovePanel(); + if (onCancel != null) + fullscreenMask.OnMouseDown += _ => onCancel(); + Ui.Root.AddChild(fullscreenMask); var oldBounds = panel.Bounds; @@ -105,7 +109,7 @@ namespace OpenRA.Widgets public class MaskWidget : Widget { - public Action OnMouseDown = _ => {}; + public event Action OnMouseDown = _ => {}; public MaskWidget() : base() { } public MaskWidget(MaskWidget other) : base(other) diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs index 413ce4b5aa..57a9d266b2 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs @@ -155,12 +155,12 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic bool ShowColorPicker(DropDownButtonWidget color, PlayerSettings s) { - Action onSelect = c => {s.ColorRamp = c; color.RemovePanel();}; + Action onExit = c => {s.ColorRamp = c; color.RemovePanel();}; Action onChange = c => {colorPreview.Ramp = c;}; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { - { "onSelect", onSelect }, + { "onExit", onExit }, { "onChange", onChange }, { "initialRamp", s.ColorRamp } }); diff --git a/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs index f373e37a8e..9ebb8231b1 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/ColorPickerLogic.cs @@ -17,56 +17,32 @@ namespace OpenRA.Mods.RA.Widgets.Logic { public class ColorPickerLogic { - ColorRamp ramp; - [ObjectCreator.UseCtor] - public ColorPickerLogic(Widget widget, ColorRamp initialRamp, Action onChange, - Action onSelect, WorldRenderer worldRenderer) + public ColorPickerLogic(Widget widget, HSLColor initialColor, Action onChange, WorldRenderer worldRenderer) { - var panel = widget; - ramp = initialRamp; - var hueSlider = panel.Get("HUE"); - var satSlider = panel.Get("SAT"); - var lumSlider = panel.Get("LUM"); + var hueSlider = widget.Get("HUE"); + var mixer = widget.Get("MIXER"); + var randomButton = widget.GetOrNull("RANDOM_BUTTON"); - Action sliderChanged = () => - { - ramp = new ColorRamp((byte)(255*hueSlider.Value), - (byte)(255*satSlider.Value), - (byte)(255*lumSlider.Value), - 10); - onChange(ramp); - }; + hueSlider.OnChange += _ => mixer.Set(hueSlider.Value); + mixer.OnChange += () => onChange(mixer.Color); - hueSlider.OnChange += _ => sliderChanged(); - satSlider.OnChange += _ => sliderChanged(); - lumSlider.OnChange += _ => sliderChanged(); - - Action updateSliders = () => - { - hueSlider.Value = ramp.Color.H / 255f; - satSlider.Value = ramp.Color.S / 255f; - lumSlider.Value = ramp.Color.L / 255f; - }; - - panel.Get("SAVE_BUTTON").OnClick = () => onSelect(ramp); - - var randomButton = panel.Get("RANDOM_BUTTON"); if (randomButton != null) randomButton.OnClick = () => { + // Avoid colors with low sat or lum var hue = (byte)Game.CosmeticRandom.Next(255); - var sat = (byte)Game.CosmeticRandom.Next(255); - var lum = (byte)Game.CosmeticRandom.Next(51,255); + var sat = (byte)Game.CosmeticRandom.Next(70, 255); + var lum = (byte)Game.CosmeticRandom.Next(70, 255); - ramp = new ColorRamp(hue, sat, lum, 10); - updateSliders(); - sliderChanged(); + mixer.Set(new HSLColor(hue, sat, lum)); + hueSlider.Value = hue / 255f; }; // Set the initial state - updateSliders(); - onChange(ramp); + mixer.Set(initialColor); + hueSlider.Value = initialColor.H / 255f; + onChange(mixer.Color); } } } diff --git a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs index 09659d261e..378162fa7a 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs @@ -103,28 +103,27 @@ namespace OpenRA.Mods.RA.Widgets.Logic public static void ShowColorDropDown(DropDownButtonWidget color, Session.Client client, OrderManager orderManager, ColorPreviewManagerWidget preview) { - Action onSelect = c => + Action onExit = () => { if (client.Bot == null) { - Game.Settings.Player.ColorRamp = c; + Game.Settings.Player.ColorRamp = preview.Ramp; Game.Settings.Save(); } color.RemovePanel(); - orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, c))); + orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, preview.Ramp))); }; - Action onChange = c => preview.Ramp = c; + Action onChange = c => preview.Ramp = new ColorRamp(c, 10); var colorChooser = Game.LoadWidget(orderManager.world, "COLOR_CHOOSER", null, new WidgetArgs() { - { "onSelect", onSelect }, { "onChange", onChange }, - { "initialRamp", client.ColorRamp } + { "initialColor", client.ColorRamp.Color } }); - color.AttachPanel(colorChooser); + color.AttachPanel(colorChooser, onExit); } public static Dictionary GetSpawnClients(OrderManager orderManager, Map map) diff --git a/artsrc/cnc/chrome.svg b/artsrc/cnc/chrome.svg index 6ee015901a..ddf793e3ac 100644 --- a/artsrc/cnc/chrome.svg +++ b/artsrc/cnc/chrome.svg @@ -61,9 +61,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="11.313708" - inkscape:cx="352.22285" - inkscape:cy="474.91804" + inkscape:zoom="5.656854" + inkscape:cx="366.7043" + inkscape:cy="471.90817" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" @@ -1276,11 +1276,23 @@ inkscape:export-ydpi="90" /> + + diff --git a/mods/cnc/chrome.yaml b/mods/cnc/chrome.yaml index 32f97902ac..077ca66bff 100644 --- a/mods/cnc/chrome.yaml +++ b/mods/cnc/chrome.yaml @@ -390,6 +390,8 @@ lobby-bits: chrome.png spawn-claimed: 256,32,16,16 spawn-unclaimed: 256,48,16,16 admin: 340,39,7,5 + colorpicker: 256,32,16,16 + huepicker: 388,96,7,15 checkbox-bits: chrome.png checked: 272,32,16,16 diff --git a/mods/cnc/chrome/dialogs.yaml b/mods/cnc/chrome/dialogs.yaml index 8465d33fc7..44925da0ee 100644 --- a/mods/cnc/chrome/dialogs.yaml +++ b/mods/cnc/chrome/dialogs.yaml @@ -1,71 +1,46 @@ Background@COLOR_CHOOSER: Logic:ColorPickerLogic Background:panel-black - Width:315 - Height:130 + Width:234 + Height:105 Children: - Button@SAVE_BUTTON: - Key:return - X:210 - Y:90 - Width:90 - Height:25 - Text:Save - Button@RANDOM_BUTTON: - X:15 - Y:90 - Width:90 - Height:25 - Text:Random - ShpImage@FACT: - X:220 - Y:15 - Image:fact - Palette:colorpicker - Label@HUE_LABEL: + Background@HUEBG: + Background:panel-black X:5 Y:5 - Width:40 - Height:20 - Align:Right - Text:Hue: - Font:Bold - Slider@HUE: - X:43 - Y:10 - Width:160 - Height:20 - Ticks:5 - Label@SAT_LABEL: + Width:148 + Height:13 + Children: + HueSlider@HUE: + X:2 + Y:2 + Width:144 + Height:9 + Ticks:5 + Background@MIXERBG: + Background:panel-black X:5 - Y:30 - Width:40 - Height:20 - Align:Right - Text:Sat: - Font:Bold - Slider@SAT: - X:43 - Y:35 - Width:160 - Height:20 - Ticks:5 - Label@LUM_LABEL: - X:5 - Y:55 - Width:40 - Height:20 - Align:Right - Text:Lum: - Font:Bold - Slider@LUM: - X:43 - Y:60 - Width:160 - Height:20 - Ticks:5 - MinimumValue: 0.2 - MaximumValue: 1 + Y:23 + Width:148 + Height:76 + Children: + ColorMixer@MIXER: + X:2 + Y:2 + Width:144 + Height:72 + ShpImage@FACT: + X:160 + Y:13 + Image:fact + Palette:colorpicker + Button@RANDOM_BUTTON: + Key:tab + X:158 + Y:74 + Width:70 + Height:25 + Text:Random ScrollPanel@LABEL_DROPDOWN_TEMPLATE: Width:DROPDOWN_WIDTH diff --git a/mods/cnc/uibits/chrome.png b/mods/cnc/uibits/chrome.png index 5a0df4224e06d72860c36bf85f41c22e330a958f..09e23d92d47c120ced10287e23d5fffaf690a4d1 100644 GIT binary patch literal 45968 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