diff --git a/src/main/resources/ocelot/desktop/colorscheme.txt b/src/main/resources/ocelot/desktop/colorscheme.txt index aa6091d..034f9d5 100644 --- a/src/main/resources/ocelot/desktop/colorscheme.txt +++ b/src/main/resources/ocelot/desktop/colorscheme.txt @@ -80,6 +80,7 @@ VerticalMenuBorder = #dfdfdf SliderBackground = #aaaaaa SliderBorder = #888888 +SliderTick = #989898 SliderHandler = #bbbbbb SliderForeground = #333333 diff --git a/src/main/scala/ocelot/desktop/graphics/Graphics.scala b/src/main/scala/ocelot/desktop/graphics/Graphics.scala index a0c41b5..686f162 100644 --- a/src/main/scala/ocelot/desktop/graphics/Graphics.scala +++ b/src/main/scala/ocelot/desktop/graphics/Graphics.scala @@ -13,13 +13,12 @@ import scala.collection.mutable import scala.util.control.Breaks._ //noinspection ScalaWeakerAccess,ScalaUnusedSymbol -class Graphics(initialScalingFactor: Float) extends Logging with Resource { +class Graphics(private var scalingFactor: Float) extends Logging with Resource { private var time = 0f private var projection = Transform2D.viewport(800, 600) private var width = 800 private var height = 600 - private var scalingFactor = initialScalingFactor private val shaderProgram = new ShaderProgram("general") private val renderer = new InstanceRenderer(Mesh.quad, shaderProgram) diff --git a/src/main/scala/ocelot/desktop/ui/widget/Slider.scala b/src/main/scala/ocelot/desktop/ui/widget/Slider.scala index d1fadef..a0da399 100644 --- a/src/main/scala/ocelot/desktop/ui/widget/Slider.scala +++ b/src/main/scala/ocelot/desktop/ui/widget/Slider.scala @@ -64,7 +64,7 @@ class Slider(var value: Float, val text: String, val snapPoints: Int = 0) extend DrawUtils.ring(g, position.x, position.y, width, height, 2, ColorScheme("SliderBorder")) for (i <- 1 until snapPoints - 1) { - DrawUtils.ring(g, position.x + (i / (snapPoints.toFloat - 1)) * (bounds.w - handleWidth / 2), position.y + 6, handleWidth / 2, height - 12, 2, ColorScheme("SliderBorder")) + g.rect(position.x + (i / (snapPoints.toFloat - 1)) * (bounds.w - handleWidth / 2), position.y + 6, handleWidth / 2, height - 12, ColorScheme("SliderTick")) } g.rect(position.x + value * (bounds.w - handleWidth), position.y, handleWidth, height, ColorScheme("SliderHandler")) diff --git a/src/main/scala/ocelot/desktop/ui/widget/settings/UISettingsTab.scala b/src/main/scala/ocelot/desktop/ui/widget/settings/UISettingsTab.scala index 520f97d..1de80ff 100644 --- a/src/main/scala/ocelot/desktop/ui/widget/settings/UISettingsTab.scala +++ b/src/main/scala/ocelot/desktop/ui/widget/settings/UISettingsTab.scala @@ -56,10 +56,13 @@ class UISettingsTab extends SettingsTab { children :+= new PaddingBox(new Slider((Settings.get.scaleFactor - 1) / 2, "Interface scale", 5) { override def minimumSize: Size2D = Size2D(512, 24) - override def formatText: String = f"$text: ${(value * 4 + 2).round.max(2).min(6) / 2.0f}%.1fx" + // Interpolates [0; 1] as [1; 3] rounded to nearest 0.5 + private def convertToScale(slider: Float): Float = (slider * 4 + 2).round.max(2).min(6) / 2.0f + + override def formatText: String = f"$text: ${convertToScale(value)}%.1fx" override def onValueFinal(value: Float): Unit = { - Settings.get.scaleFactor = (value * 4 + 2).round.max(2).min(6) / 2.0f + Settings.get.scaleFactor = convertToScale(value) applySettings() } }, Padding2D(bottom = 8))