diff --git a/OpenRA.Game/Widgets/SliderWidget.cs b/OpenRA.Game/Widgets/SliderWidget.cs index bb81add601..d682a3d84a 100755 --- a/OpenRA.Game/Widgets/SliderWidget.cs +++ b/OpenRA.Game/Widgets/SliderWidget.cs @@ -10,16 +10,19 @@ using System; using System.Drawing; +using OpenRA.Graphics; namespace OpenRA.Widgets { public class SliderWidget : Widget { + public Func IsDisabled = () => false; public event Action OnChange; public Func GetOffset; public int Ticks = 0; public int TrackHeight = 5; - + + // TODO: Changing this breaks the semantics of Get/SetOffset // This is bogus public float2 Range = new float2(0f, 1f); @@ -177,8 +180,9 @@ namespace OpenRA.Widgets if (!IsVisible()) return; - var trackWidth = RenderBounds.Width - thumbRect.Width; - var trackOrigin = RenderBounds.X + thumbRect.Width / 2; + var tr = thumbRect; + var trackWidth = RenderBounds.Width - tr.Width; + var trackOrigin = RenderBounds.X + tr.Width / 2; var trackRect = new Rectangle(trackOrigin - 1, RenderBounds.Y + (RenderBounds.Height - TrackHeight) / 2, trackWidth + 2, TrackHeight); // Tickmarks (hacked until we have real art) @@ -186,13 +190,19 @@ namespace OpenRA.Widgets { var tickRect = new Rectangle(trackOrigin - 1 + (int)(i * trackWidth * 1f / (Ticks - 1)), RenderBounds.Y + RenderBounds.Height / 2, 2, RenderBounds.Height / 2); - WidgetUtils.DrawPanel("dialog2", tickRect); + WidgetUtils.DrawPanel("slider-tick", tickRect); } + // Track - WidgetUtils.DrawPanel("dialog3", trackRect); + WidgetUtils.DrawPanel("slider-track", trackRect); // Thumb - WidgetUtils.DrawPanel("dialog2", thumbRect); + var state = IsDisabled() ? "button-disabled" : + isMoving ? "button-pressed" : + tr.Contains(Viewport.LastMousePos) ? "button-hover" : + "button"; + + WidgetUtils.DrawPanel(state, tr); } } } diff --git a/OpenRA.Mods.Cnc/Widgets/CncMenuButton.cs b/OpenRA.Mods.Cnc/Widgets/CncMenuButton.cs index 14ce32272e..624a28ac8b 100644 --- a/OpenRA.Mods.Cnc/Widgets/CncMenuButton.cs +++ b/OpenRA.Mods.Cnc/Widgets/CncMenuButton.cs @@ -49,45 +49,6 @@ namespace OpenRA.Mods.Cnc.Widgets public override Widget Clone() { return new CncCheckboxWidget(this); } } - - public class CncSliderWidget : SliderWidget - { - public Func IsDisabled = () => false; - - public CncSliderWidget() : base() { } - public CncSliderWidget(CncSliderWidget other) : base(other) { } - - public override Widget Clone() { return new CncSliderWidget(this); } - public override void DrawInner() - { - if (!IsVisible()) - return; - - var tr = thumbRect; - var trackWidth = RenderBounds.Width - tr.Width; - var trackOrigin = RenderBounds.X + tr.Width / 2; - var trackRect = new Rectangle(trackOrigin - 1, RenderBounds.Y + (RenderBounds.Height - TrackHeight) / 2, trackWidth + 2, TrackHeight); - - // Tickmarks (hacked until we have real art) - for (int i = 0; i < Ticks; i++) - { - var tickRect = new Rectangle(trackOrigin - 1 + (int)(i * trackWidth * 1f / (Ticks - 1)), - RenderBounds.Y + RenderBounds.Height / 2, 2, RenderBounds.Height / 2); - WidgetUtils.DrawPanel("panel-gray", tickRect); - } - - // Track - WidgetUtils.DrawPanel("panel-gray", trackRect); - - // Thumb - var state = IsDisabled() ? "button-disabled" : - isMoving ? "button-pressed" : - tr.Contains(Viewport.LastMousePos) ? "button-hover" : - "button"; - - WidgetUtils.DrawPanel(state, tr); - } - } public class CncDropDownButtonWidget : DropDownButtonWidget { diff --git a/mods/cnc/chrome.yaml b/mods/cnc/chrome.yaml index a115467b7c..a668ea97e7 100644 --- a/mods/cnc/chrome.yaml +++ b/mods/cnc/chrome.yaml @@ -157,6 +157,30 @@ scrollitem-selected: chrome.png corner-bl: 64,254,2,2 corner-br: 126,254,2,2 +# A copy of panel-gray +slider-tick: chrome.png + background: 66,66,60,60 + border-r: 126,66,2,60 + border-l: 64,66,2,60 + border-b: 66,126,60,2 + border-t: 66,64,60,2 + corner-tl: 64,64,2,2 + corner-tr: 126,64,2,2 + corner-bl: 64,126,2,2 + corner-br: 126,126,2,2 + +# A copy of panel-gray +slider-track: chrome.png + background: 66,66,60,60 + border-r: 126,66,2,60 + border-l: 64,66,2,60 + border-b: 66,126,60,2 + border-t: 66,64,60,2 + corner-tl: 64,64,2,2 + corner-tr: 126,64,2,2 + corner-bl: 64,126,2,2 + corner-br: 126,126,2,2 + panel-black: chrome.png background: 66,2,60,60 border-r: 126,2,2,60 diff --git a/mods/cnc/chrome/lobby.yaml b/mods/cnc/chrome/lobby.yaml index a7400d5ac9..1359d5d115 100644 --- a/mods/cnc/chrome/lobby.yaml +++ b/mods/cnc/chrome/lobby.yaml @@ -416,7 +416,7 @@ Background@COLOR_CHOOSER: Align:Right Text:Hue: Font:Bold - CncSlider@HUE: + Slider@HUE: Id:HUE_SLIDER X:43 Y:10 @@ -431,7 +431,7 @@ Background@COLOR_CHOOSER: Align:Right Text:Sat: Font:Bold - CncSlider@SAT: + Slider@SAT: Id:SAT_SLIDER X:43 Y:35 @@ -446,7 +446,7 @@ Background@COLOR_CHOOSER: Align:Right Text:Lum: Font:Bold - CncSlider@LUM: + Slider@LUM: Id:LUM_SLIDER X:43 Y:60 diff --git a/mods/cnc/chrome/preferences.yaml b/mods/cnc/chrome/preferences.yaml index ba5b6045b8..29693f3ec8 100644 --- a/mods/cnc/chrome/preferences.yaml +++ b/mods/cnc/chrome/preferences.yaml @@ -169,7 +169,7 @@ Container@SETTINGS_PANEL: Height:25 Align:Right Text:Sound Volume: - CncSlider@SOUND_SLIDER: + Slider@SOUND_SLIDER: Id:SOUND_SLIDER X:475 Y:140 @@ -183,7 +183,7 @@ Container@SETTINGS_PANEL: Height:25 Align:Right Text:Music Volume: - CncSlider@MUSIC_SLIDER: + Slider@MUSIC_SLIDER: Id:MUSIC_SLIDER X:475 Y:170 @@ -233,7 +233,7 @@ Container@SETTINGS_PANEL: Width:95 Height:25 Text:Scroll Speed: - CncSlider@SCROLLSPEED_SLIDER: + Slider@SCROLLSPEED_SLIDER: Id:SCROLLSPEED_SLIDER X:100 Y:120 diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index 0b177630f8..98cd35924f 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -345,3 +345,28 @@ scrollpanel-bg: dialog.png corner-tr: 722,0,1,1 corner-bl: 640,82,1,1 corner-br: 722,82,1,1 + + +# A copy of dialog2 +slider-tick: dialog.png + background: 513,1,126,126 + border-r: 639,1,1,126 + border-l: 512,1,1,126 + border-b: 513,127,126,1 + border-t: 513,0,126,1 + corner-tl: 512,0,1,1 + corner-tr: 594,0,1,1 + corner-bl: 512,82,1,1 + corner-br: 594,82,1,1 + +# A copy of dialog3 +slider-track: dialog.png + background: 641,1,126,126 + border-r: 767,1,1,126 + border-l: 640,1,1,126 + border-b: 641,127,126,1 + border-t: 641,0,126,1 + corner-tl: 640,0,1,1 + corner-tr: 722,0,1,1 + corner-bl: 640,82,1,1 + corner-br: 722,82,1,1 \ No newline at end of file