From 4f98bc95a20c1f0be50b822cceb304baa6b6869a Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 12 Jul 2021 12:36:45 -0400 Subject: [PATCH] Better sliders --- core/assets-raw/sprites/ui/slider-back.9.png | Bin 0 -> 197 bytes .../sprites/ui/slider-knob-down.png | Bin 118 -> 117 bytes .../sprites/ui/slider-knob-over.png | Bin 123 -> 120 bytes core/assets-raw/sprites/ui/slider-knob.png | Bin 122 -> 120 bytes .../assets-raw/sprites/ui/slider-vertical.png | Bin 72 -> 0 bytes core/src/mindustry/content/UnitTypes.java | 1 - .../abilities/EnergyFieldAbility.java | 4 ++-- .../mindustry/maps/filters/FilterOption.java | 21 +++++++++++++----- core/src/mindustry/ui/Styles.java | 10 ++------- .../ui/dialogs/SettingsMenuDialog.java | 21 +++++++++--------- gradle.properties | 2 +- 11 files changed, 31 insertions(+), 28 deletions(-) create mode 100644 core/assets-raw/sprites/ui/slider-back.9.png delete mode 100644 core/assets-raw/sprites/ui/slider-vertical.png diff --git a/core/assets-raw/sprites/ui/slider-back.9.png b/core/assets-raw/sprites/ui/slider-back.9.png new file mode 100644 index 0000000000000000000000000000000000000000..71762a216384c9f8d41ed1f374acc675ea8138a7 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0y~yU{GUVV36ftV_;x7)*yF)fq{XsILO_JVcj{ImkbOH z^`0({ArY-_uP+olV!-2aG4xrK@ExOc|NY2u!%=AQs$I(u z+bc;PuBl;I@cp0gq?y{gm;GdT6cMFRFhh&s&SSr=*VauHoLR~Dd2g~&`%0N*MKew% yYQY$*6n=iGt-5;8|MjY>-48ErGvBsWKd4yY{n_1o%NZCL7(8A5T-G@yGywplA5d)o literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/ui/slider-knob-down.png b/core/assets-raw/sprites/ui/slider-knob-down.png index 7eac1c0f51aa97cc11b024fdf3e5d7be6ad84720..72ff323d0bc28a74d749159c4070c9e0dc21b77b 100644 GIT binary patch delta 99 zcmXRbogf~k#lgnFz~KKTK#GBZfw4Hq-HBn{IhmIX3=I07E{-7)t#8j7GBPl5Fe_}W ye;#@8G&k1;&!F?qtfzP_4O$tZH5Ep!7hCVi5^yu_%5(+>1_n=8KbLh*2~7YE93jvE delta 100 zcmXRdn;;&q#=*wGz+j;_A(4TB!Pe8oF{I+w+p8Nn84NfW9K}oi7YcbuMF-z_BA3Im z^U{ekFZ|v(N0F5it8=V$jkiXEmGWVHB^2Gnz267Ax3=E#GelF{r G5}E)DlO|sP diff --git a/core/assets-raw/sprites/ui/slider-knob-over.png b/core/assets-raw/sprites/ui/slider-knob-over.png index a4bb61170bfd8db0a3593fcf2ca8c0f0d3ad3b0b..d7ca8fb4eaf731b98a183d7a63fb32bb9fdb380a 100644 GIT binary patch delta 102 zcmb=fm>{00#lgnFz~KKTK#GBZfw4Hq-HBn{IhmIX3=Bq|E{-7)t#8j7GBOx&Ff7>l zsLfyUKye_)oW=Gj4H`yICYG9iKvYGJq88_22WQ%mvv4FO#r$6 BBlG|O delta 105 zcmb=Zo*7^FVdQ&MBb@01A640ssI2 diff --git a/core/assets-raw/sprites/ui/slider-knob.png b/core/assets-raw/sprites/ui/slider-knob.png index 6e643e0dc690a0a7a2d48938ed7df4646bfaad39..7c4e35233e6c2f47ac712e89c48c07aa25c435b5 100644 GIT binary patch delta 102 zcmb=bm>{00#lgnFz~KKTK#GBZfw4Hq-HBn{IhmIX3=Bq|E{-7)t#8j7GBPOeFmEu- z|EkZaQ}ES`=ZVVB;B9XMw5ED34O$rjqyBznxMj?wblc`iI0FL%gQu&X%Q~loCID@U BBH91| delta 104 zcmb=ZnjoI6#=*wGz+j;_A(4TB!O_#jF{I+w+pC6L3<^BV4))hK{;%(A(u*y9@rZSk z$e~`@nU;CcpEuoX@0bzW>a;N61*ZsCt5dC{h6vYR# all = new Seq<>(); - public float damage = 1, repair = 20f, reload = 100, range = 60; + public float damage = 1, reload = 100, range = 60; public Effect healEffect = Fx.heal, hitEffect = Fx.hitLaserBlast, damageEffect = Fx.chainLightning; public StatusEffect status = StatusEffects.electrified; public float statusDuration = 60f * 6f; public float x, y; public boolean hitBuildings = true; public int maxTargets = 25; - public float healPercent = 3f; + public float healPercent = 2.5f; public float layer = Layer.bullet - 0.001f, blinkScl = 20f; public float effectRadius = 5f, sectorRad = 0.14f, rotateSpeed = 0.5f; diff --git a/core/src/mindustry/maps/filters/FilterOption.java b/core/src/mindustry/maps/filters/FilterOption.java index ea97157abf..6b2e3aa1f1 100644 --- a/core/src/mindustry/maps/filters/FilterOption.java +++ b/core/src/mindustry/maps/filters/FilterOption.java @@ -3,12 +3,15 @@ package mindustry.maps.filters; import arc.*; import arc.func.*; +import arc.scene.event.*; import arc.scene.style.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; +import arc.util.*; import mindustry.*; import mindustry.content.*; import mindustry.gen.*; +import mindustry.ui.*; import mindustry.ui.dialogs.*; import mindustry.world.*; import mindustry.world.blocks.environment.*; @@ -35,7 +38,7 @@ public abstract class FilterOption{ final Floatc setter; final float min, max, step; - boolean display; + boolean display = true; SliderOption(String name, Floatp getter, Floatc setter, float min, float max){ this(name, getter, setter, min, max, (max - min) / 200); @@ -57,19 +60,27 @@ public abstract class FilterOption{ @Override public void build(Table table){ + Label label; if(!display){ - table.add("@filter.option." + name); + label = new Label("@filter.option." + name); }else{ - table.label(() -> Core.bundle.get("filter.option." + name) + ": " + (int)getter.get()); + label = new Label(() -> Core.bundle.get("filter.option." + name) + ": " + Strings.autoFixed(getter.get(), 2)); } - table.row(); - Slider slider = table.slider(min, max, step, setter).growX().get(); + label.setWrap(true); + label.setAlignment(Align.center); + label.touchable = Touchable.disabled; + label.setStyle(Styles.outlineLabel); + + Slider slider = new Slider(min, max, step, false); + slider.moved(setter); slider.setValue(getter.get()); if(updateEditorOnChange){ slider.changed(changed); }else{ slider.released(changed); } + + table.stack(slider, label).colspan(2).pad(3).growX().row(); } } diff --git a/core/src/mindustry/ui/Styles.java b/core/src/mindustry/ui/Styles.java index 4e7042fe80..36a3ace7d2 100644 --- a/core/src/mindustry/ui/Styles.java +++ b/core/src/mindustry/ui/Styles.java @@ -31,7 +31,7 @@ public class Styles{ public static ImageButtonStyle defaulti, nodei, righti, emptyi, emptytogglei, selecti, logici, geni, colori, accenti, cleari, clearFulli, clearPartiali, clearPartial2i, clearTogglei, clearTransi, clearToggleTransi, clearTogglePartiali; public static ScrollPaneStyle defaultPane, horizontalPane, smallPane, nonePane; public static KeybindDialog.KeybindDialogStyle defaultKeybindDialog; - public static SliderStyle defaultSlider, vSlider; + public static SliderStyle defaultSlider; public static LabelStyle defaultLabel, outlineLabel, techLabel; public static TextFieldStyle defaultField, nodeField, areaField, nodeArea; public static CheckBoxStyle defaultCheck; @@ -320,13 +320,7 @@ public class Styles{ }}; defaultSlider = new SliderStyle(){{ - background = slider; - knob = sliderKnob; - knobOver = sliderKnobOver; - knobDown = sliderKnobDown; - }}; - vSlider = new SliderStyle(){{ - background = sliderVertical; + background = sliderBack; knob = sliderKnob; knobOver = sliderKnobOver; knobDown = sliderKnobDown; diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index 168ae4b451..dccf2dadcb 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -6,6 +6,7 @@ import arc.func.*; import arc.graphics.*; import arc.graphics.Texture.*; import arc.input.*; +import arc.scene.event.*; import arc.scene.ui.*; import arc.scene.ui.TextButton.*; import arc.scene.ui.layout.*; @@ -686,23 +687,21 @@ public class SettingsMenuDialog extends Dialog{ slider.setValue(settings.getInt(name)); - Label label = new Label(title); + Label value = new Label(""); + value.setStyle(Styles.outlineLabel); + value.touchable = Touchable.disabled; + slider.changed(() -> { settings.put(name, (int)slider.getValue()); - label.setText(title + ": " + sp.get((int)slider.getValue())); + value.setText(title + ": " + sp.get((int)slider.getValue())); }); + value.setAlignment(Align.center); + value.setWrap(true); + slider.change(); - table.table(t -> { - t.left().defaults().left(); - t.add(label).minWidth(label.getPrefWidth() / Scl.scl(1f) + 50); - if(Core.graphics.isPortrait()){ - t.row(); - } - t.add(slider).width(180); - }).left().padTop(3); - + table.stack(slider, value).width(420f).left().padTop(4); table.row(); } } diff --git a/gradle.properties b/gradle.properties index d732f03f20..a0c542efe2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,4 +10,4 @@ kapt.include.compile.classpath=false kotlin.stdlib.default.dependency=false #needed for android compilation android.useAndroidX=true -archash=52cd02b71205949b68e9b620b6a02fed3622bac0 +archash=ca3a52e9571ff20f9dd6c43337740539f407d3dd