Clamp, scroll, scrollspeed, sliders
Reduced clamp duplication Fixed scrolling speed issue Modified scrollspeed slider to use a range Fixed scrollspeed, volume, and sound sliders not showing current setting.
This commit is contained in:
committed by
Chris Forbes
parent
ab431fe9ee
commit
c85503811c
@@ -67,15 +67,5 @@ namespace OpenRA
|
|||||||
Log.Write("perf", text, x, dt * 1000, Game.LocalTick);
|
Log.Write("perf", text, x, dt * 1000, Game.LocalTick);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T>
|
|
||||||
{
|
|
||||||
if (val.CompareTo(min) < 0)
|
|
||||||
return min;
|
|
||||||
else if (val.CompareTo(max) > 0)
|
|
||||||
return max;
|
|
||||||
else
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,15 +33,5 @@ namespace OpenRA.Server
|
|||||||
{
|
{
|
||||||
return ts.Except( new[] { t } );
|
return ts.Except( new[] { t } );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T>
|
|
||||||
{
|
|
||||||
if (val.CompareTo(min) < 0)
|
|
||||||
return min;
|
|
||||||
else if (val.CompareTo(max) > 0)
|
|
||||||
return max;
|
|
||||||
else
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,9 +57,10 @@ namespace OpenRA.Widgets.Delegates
|
|||||||
// Added scroll sensitivity - Gecko
|
// Added scroll sensitivity - Gecko
|
||||||
var edgeScrollSlider = general.GetWidget<SliderWidget>("EDGE_SCROLL_AMOUNT");
|
var edgeScrollSlider = general.GetWidget<SliderWidget>("EDGE_SCROLL_AMOUNT");
|
||||||
if (edgeScrollSlider != null) // Backwards compatible - Gecko
|
if (edgeScrollSlider != null) // Backwards compatible - Gecko
|
||||||
{
|
{
|
||||||
edgeScrollSlider.OnChange += x => { x += 0.1f; Game.Settings.Game.ViewportEdgeScrollStep = x; };
|
edgeScrollSlider.SetOffset(Game.Settings.Game.ViewportEdgeScrollStep);
|
||||||
edgeScrollSlider.GetOffset = () => { return Game.Settings.Game.ViewportEdgeScrollStep - 0.1f; };
|
edgeScrollSlider.OnChange += _ => { Game.Settings.Game.ViewportEdgeScrollStep = edgeScrollSlider.GetOffset(); };
|
||||||
|
Game.Settings.Game.ViewportEdgeScrollStep = edgeScrollSlider.GetOffset();
|
||||||
}
|
}
|
||||||
|
|
||||||
var inverseScroll = general.GetWidget<CheckboxWidget>("INVERSE_SCROLL");
|
var inverseScroll = general.GetWidget<CheckboxWidget>("INVERSE_SCROLL");
|
||||||
@@ -76,10 +77,12 @@ namespace OpenRA.Widgets.Delegates
|
|||||||
var soundslider = audio.GetWidget<SliderWidget>("SOUND_VOLUME");
|
var soundslider = audio.GetWidget<SliderWidget>("SOUND_VOLUME");
|
||||||
soundslider.OnChange += x => { Sound.SoundVolume = x; };
|
soundslider.OnChange += x => { Sound.SoundVolume = x; };
|
||||||
soundslider.GetOffset = () => { return Sound.SoundVolume; };
|
soundslider.GetOffset = () => { return Sound.SoundVolume; };
|
||||||
|
soundslider.SetOffset(Sound.SoundVolume);
|
||||||
|
|
||||||
var musicslider = audio.GetWidget<SliderWidget>("MUSIC_VOLUME");
|
var musicslider = audio.GetWidget<SliderWidget>("MUSIC_VOLUME");
|
||||||
musicslider.OnChange += x => { Sound.MusicVolume = x; };
|
musicslider.OnChange += x => { Sound.MusicVolume = x; };
|
||||||
musicslider.GetOffset = () => { return Sound.MusicVolume; };
|
musicslider.GetOffset = () => { return Sound.MusicVolume; };
|
||||||
|
musicslider.SetOffset(Sound.MusicVolume);
|
||||||
|
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
return Spread * Offset + Little;
|
return Spread * Offset + Little;
|
||||||
};
|
};
|
||||||
OnChange = x => Offset = x;
|
OnChange = x => Offset = x.Clamp(0f, 1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SliderWidget(SliderWidget other)
|
public SliderWidget(SliderWidget other)
|
||||||
@@ -45,8 +45,9 @@ namespace OpenRA.Widgets
|
|||||||
{
|
{
|
||||||
OnChange = other.OnChange;
|
OnChange = other.OnChange;
|
||||||
GetOffset = other.GetOffset;
|
GetOffset = other.GetOffset;
|
||||||
Offset = other.Offset;
|
|
||||||
Ticks = other.Ticks;
|
Ticks = other.Ticks;
|
||||||
|
Range = other.Range;
|
||||||
|
Offset = GetOffset();
|
||||||
TrackHeight = other.TrackHeight;
|
TrackHeight = other.TrackHeight;
|
||||||
lastMouseLocation = other.lastMouseLocation;
|
lastMouseLocation = other.lastMouseLocation;
|
||||||
isMoving = other.isMoving;
|
isMoving = other.isMoving;
|
||||||
@@ -58,7 +59,7 @@ namespace OpenRA.Widgets
|
|||||||
var Little = Math.Min(Range.X, Range.Y);
|
var Little = Math.Min(Range.X, Range.Y);
|
||||||
var Spread = Big - Little;
|
var Spread = Big - Little;
|
||||||
|
|
||||||
Offset = (newOffset - Little) / Spread;
|
Offset = ((newOffset - Little) / Spread).Clamp(0f, 1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool HandleInputInner(MouseInput mi)
|
public override bool HandleInputInner(MouseInput mi)
|
||||||
|
|||||||
@@ -144,14 +144,18 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
// Modified to use the ViewportEdgeScrollStep setting - Gecko
|
// Modified to use the ViewportEdgeScrollStep setting - Gecko
|
||||||
if (Keyboard.Includes(ScrollDirection.Up) || Edge.Includes(ScrollDirection.Up))
|
if (Keyboard.Includes(ScrollDirection.Up) || Edge.Includes(ScrollDirection.Up))
|
||||||
scroll += new float2(0, -(Game.Settings.Game.ViewportEdgeScrollStep * 100));
|
scroll += new float2(0, -1);
|
||||||
if (Keyboard.Includes(ScrollDirection.Right) || Edge.Includes(ScrollDirection.Right))
|
if (Keyboard.Includes(ScrollDirection.Right) || Edge.Includes(ScrollDirection.Right))
|
||||||
scroll += new float2((Game.Settings.Game.ViewportEdgeScrollStep * 100), 0);
|
scroll += new float2(1, 0);
|
||||||
if (Keyboard.Includes(ScrollDirection.Down) || Edge.Includes(ScrollDirection.Down))
|
if (Keyboard.Includes(ScrollDirection.Down) || Edge.Includes(ScrollDirection.Down))
|
||||||
scroll += new float2(0, (Game.Settings.Game.ViewportEdgeScrollStep * 100));
|
scroll += new float2(0, 1);
|
||||||
if (Keyboard.Includes(ScrollDirection.Left) || Edge.Includes(ScrollDirection.Left))
|
if (Keyboard.Includes(ScrollDirection.Left) || Edge.Includes(ScrollDirection.Left))
|
||||||
scroll += new float2(-(Game.Settings.Game.ViewportEdgeScrollStep * 100), 0);
|
scroll += new float2(-1, 0);
|
||||||
|
|
||||||
|
float length = scroll.Length;
|
||||||
|
scroll.X = (scroll.X / length) * Game.Settings.Game.ViewportEdgeScrollStep;
|
||||||
|
scroll.Y = (scroll.Y / length) * Game.Settings.Game.ViewportEdgeScrollStep;
|
||||||
|
|
||||||
Game.viewport.Scroll(scroll);
|
Game.viewport.Scroll(scroll);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ Background@SETTINGS_MENU:
|
|||||||
Width:250
|
Width:250
|
||||||
Height:20
|
Height:20
|
||||||
Ticks:5
|
Ticks:5
|
||||||
|
Range:10,50
|
||||||
Checkbox@INVERSE_SCROLL:
|
Checkbox@INVERSE_SCROLL:
|
||||||
Id:INVERSE_SCROLL
|
Id:INVERSE_SCROLL
|
||||||
X:0
|
X:0
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ Background@SETTINGS_MENU:
|
|||||||
Width:250
|
Width:250
|
||||||
Height:20
|
Height:20
|
||||||
Ticks:5
|
Ticks:5
|
||||||
|
Range:10,50
|
||||||
Checkbox@INVERSE_SCROLL:
|
Checkbox@INVERSE_SCROLL:
|
||||||
Id:INVERSE_SCROLL
|
Id:INVERSE_SCROLL
|
||||||
X:0
|
X:0
|
||||||
|
|||||||
Reference in New Issue
Block a user