Fix slider ticks drawing, other feedback on !44

This commit is contained in:
Saphire 2023-06-04 22:31:25 +06:00
parent e891cdd116
commit 835ffd53af
No known key found for this signature in database
GPG Key ID: B26EB7A1F07044C4
4 changed files with 8 additions and 5 deletions

View File

@ -80,6 +80,7 @@ VerticalMenuBorder = #dfdfdf
SliderBackground = #aaaaaa
SliderBorder = #888888
SliderTick = #989898
SliderHandler = #bbbbbb
SliderForeground = #333333

View File

@ -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)

View File

@ -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"))

View File

@ -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))