diff --git a/OpenRA.Mods.Cnc/Widgets/CncLobbyLogic.cs b/OpenRA.Mods.Cnc/Widgets/CncLobbyLogic.cs index 7e578d6072..785dada658 100755 --- a/OpenRA.Mods.Cnc/Widgets/CncLobbyLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/CncLobbyLogic.cs @@ -594,39 +594,45 @@ namespace OpenRA.Mods.Cnc.Widgets [ObjectCreator.Param] WorldRenderer worldRenderer) { var panel = widget.GetWidget("COLOR_CHOOSER"); + ramp = initialRamp; var hueSlider = panel.GetWidget("HUE_SLIDER"); - hueSlider.SetOffset(initialRamp.H / 255f); - var satSlider = panel.GetWidget("SAT_SLIDER"); - satSlider.SetOffset(initialRamp.S / 255f); - var lumSlider = panel.GetWidget("LUM_SLIDER"); - lumSlider.SetOffset(initialRamp.L / 255f); - - var rangeSlider = panel.GetWidget("RANGE_SLIDER"); - rangeSlider.SetOffset(initialRamp.R / 255f); - - panel.GetWidget("SAVE_BUTTON").OnClick = () => - { - onSelect(ramp); - }; Action sliderChanged = () => { ramp = new ColorRamp((byte)(255*hueSlider.GetOffset()), (byte)(255*satSlider.GetOffset()), (byte)(255*lumSlider.GetOffset()), - (byte)(255*rangeSlider.GetOffset())); + 10); onChange(ramp); }; hueSlider.OnChange += _ => sliderChanged(); satSlider.OnChange += _ => sliderChanged(); lumSlider.OnChange += _ => sliderChanged(); - rangeSlider.OnChange += _ => sliderChanged(); + Action updateSliders = () => + { + hueSlider.SetOffset(ramp.H / 255f); + satSlider.SetOffset(ramp.S / 255f); + lumSlider.SetOffset(ramp.L / 255f); + }; + + panel.GetWidget("SAVE_BUTTON").OnClick = () => onSelect(ramp); + panel.GetWidget("RANDOM_BUTTON").OnClick = () => + { + var hue = (byte)Game.CosmeticRandom.Next(255); + var sat = (byte)Game.CosmeticRandom.Next(255); + var lum = (byte)Game.CosmeticRandom.Next(51,255); + + ramp = new ColorRamp(hue, sat, lum, 10); + updateSliders(); + sliderChanged(); + }; + // Set the initial state - sliderChanged(); + updateSliders(); } } } diff --git a/mods/cnc/chrome/lobby.yaml b/mods/cnc/chrome/lobby.yaml index 5da3d83262..1f1c3f6403 100644 --- a/mods/cnc/chrome/lobby.yaml +++ b/mods/cnc/chrome/lobby.yaml @@ -380,16 +380,24 @@ Background@COLOR_CHOOSER: Delegate:CncColorPickerLogic Background:panel-black Width:315 - Height:120 + Height:130 Children: CncMenuButton@SAVE_BUTTON: Id:SAVE_BUTTON X:210 - Y:80 + Y:90 Width:90 Height:25 Text:Save Bold:True + CncMenuButton@RANDOM_BUTTON: + Id:RANDOM_BUTTON + X:15 + Y:90 + Width:90 + Height:25 + Text:Random + Bold:True ShpImage@FACT: Id:FACT X:220 @@ -441,20 +449,4 @@ Background@COLOR_CHOOSER: Width:160 Height:20 Ticks:5 - Range:0.2,1 - Label@RANGE_LABEL: - X:5 - Y:80 - Width:40 - Height:20 - Align:Right - Text:Ran: - Font:Bold - CncSlider@RANGE: - Id:RANGE_SLIDER - X:43 - Y:85 - Width:160 - Height:20 - Ticks:5 - Range:0,0.25 + Range:0.2,1 \ No newline at end of file