Settings tooltips

This commit is contained in:
Anuken
2021-07-18 11:11:28 -04:00
parent 1804111f88
commit 974d3498c1
5 changed files with 59 additions and 57 deletions
+4 -3
View File
@@ -846,7 +846,6 @@ setting.doubletapmine.name = Double-Tap to Mine
setting.modcrashdisable.name = Disable Mods On Startup Crash setting.modcrashdisable.name = Disable Mods On Startup Crash
setting.animatedwater.name = Animated Surfaces setting.animatedwater.name = Animated Surfaces
setting.animatedshields.name = Animated Shields setting.animatedshields.name = Animated Shields
setting.antialias.name = Antialias[lightgray] (requires restart)[]
setting.playerindicators.name = Player Indicators setting.playerindicators.name = Player Indicators
setting.indicators.name = Enemy Indicators setting.indicators.name = Enemy Indicators
setting.autotarget.name = Auto-Target setting.autotarget.name = Auto-Target
@@ -855,7 +854,8 @@ setting.touchscreen.name = Touchscreen Controls
setting.fpscap.name = Max FPS setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = UI Scaling[lightgray] (restart required)[] setting.uiscale.name = UI Scaling
setting.uiscale.description = Restart required to apply changes.
setting.swapdiagonal.name = Always Diagonal Placement setting.swapdiagonal.name = Always Diagonal Placement
setting.difficulty.training = Training setting.difficulty.training = Training
setting.difficulty.easy = Easy setting.difficulty.easy = Easy
@@ -873,7 +873,8 @@ setting.saveinterval.name = Save Interval
setting.seconds = {0} seconds setting.seconds = {0} seconds
setting.milliseconds = {0} milliseconds setting.milliseconds = {0} milliseconds
setting.fullscreen.name = Fullscreen setting.fullscreen.name = Fullscreen
setting.borderlesswindow.name = Borderless Window[lightgray] (restart may be required) setting.borderlesswindow.name = Borderless Window
setting.borderlesswindow.description = Restart may be required to apply changes.
setting.fps.name = Show FPS & Ping setting.fps.name = Show FPS & Ping
setting.smoothcamera.name = Smooth Camera setting.smoothcamera.name = Smooth Camera
setting.vsync.name = VSync setting.vsync.name = VSync
+2 -3
View File
@@ -845,7 +845,6 @@ setting.doubletapmine.name = Добыча руды двойным нажатие
setting.modcrashdisable.name = Отключение модификаций после вылета при запуске setting.modcrashdisable.name = Отключение модификаций после вылета при запуске
setting.animatedwater.name = Анимированные поверхности setting.animatedwater.name = Анимированные поверхности
setting.animatedshields.name = Анимированные щиты setting.animatedshields.name = Анимированные щиты
setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[]
setting.playerindicators.name = Индикаторы направления игроков setting.playerindicators.name = Индикаторы направления игроков
setting.indicators.name = Индикаторы направления врагов setting.indicators.name = Индикаторы направления врагов
setting.autotarget.name = Автозахват цели setting.autotarget.name = Автозахват цели
@@ -854,7 +853,7 @@ setting.touchscreen.name = Сенсорное управление
setting.fpscap.name = Максимальный FPS setting.fpscap.name = Максимальный FPS
setting.fpscap.none = Неограниченный setting.fpscap.none = Неограниченный
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = Масштаб пользовательского интерфейса[lightgray] (необходим перезапуск)[] setting.uiscale.name = Масштаб пользовательского интерфейса
setting.swapdiagonal.name = Всегда диагональное размещение setting.swapdiagonal.name = Всегда диагональное размещение
setting.difficulty.training = Обучение setting.difficulty.training = Обучение
setting.difficulty.easy = Лёгкая setting.difficulty.easy = Лёгкая
@@ -872,7 +871,7 @@ setting.saveinterval.name = Интервал сохранения
setting.seconds = {0} секунд setting.seconds = {0} секунд
setting.milliseconds = {0} миллисекунд setting.milliseconds = {0} миллисекунд
setting.fullscreen.name = Полноэкранный режим setting.fullscreen.name = Полноэкранный режим
setting.borderlesswindow.name = Безрамочное окно[lightgray] (может потребоваться перезапуск) setting.borderlesswindow.name = Безрамочное окно
setting.fps.name = Показывать FPS и пинг setting.fps.name = Показывать FPS и пинг
setting.smoothcamera.name = Плавная камера setting.smoothcamera.name = Плавная камера
setting.vsync.name = Вертикальная синхронизация setting.vsync.name = Вертикальная синхронизация
@@ -3,6 +3,7 @@ package mindustry.maps.filters;
import arc.*; import arc.*;
import arc.func.*; import arc.func.*;
import arc.scene.*;
import arc.scene.event.*; import arc.scene.event.*;
import arc.scene.style.*; import arc.scene.style.*;
import arc.scene.ui.*; import arc.scene.ui.*;
@@ -60,16 +61,19 @@ public abstract class FilterOption{
@Override @Override
public void build(Table table){ public void build(Table table){
Label label; Element base;
if(!display){ if(!display){
label = new Label("@filter.option." + name); Label l = new Label("@filter.option." + name);
l.setWrap(true);
l.setStyle(Styles.outlineLabel);
base = l;
}else{ }else{
label = new Label(() -> Core.bundle.get("filter.option." + name) + ": " + Strings.autoFixed(getter.get(), 2)); Table t = new Table().marginLeft(11f).marginRight(11f);
base = t;
t.add("@filter.option." + name).growX().wrap().style(Styles.outlineLabel);
t.label(() -> Strings.autoFixed(getter.get(), 2)).style(Styles.outlineLabel).right().labelAlign(Align.right).padLeft(6);
} }
label.setWrap(true); base.touchable = Touchable.disabled;
label.setAlignment(Align.center);
label.touchable = Touchable.disabled;
label.setStyle(Styles.outlineLabel);
Slider slider = new Slider(min, max, step, false); Slider slider = new Slider(min, max, step, false);
slider.moved(setter); slider.moved(setter);
@@ -80,7 +84,7 @@ public abstract class FilterOption{
slider.released(changed); slider.released(changed);
} }
table.stack(slider, label).colspan(2).pad(3).growX().row(); table.stack(slider, base).colspan(2).pad(3).growX().row();
} }
} }
@@ -6,6 +6,8 @@ import arc.func.*;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.Texture.*; import arc.graphics.Texture.*;
import arc.input.*; import arc.input.*;
import arc.math.geom.*;
import arc.scene.*;
import arc.scene.event.*; import arc.scene.event.*;
import arc.scene.ui.*; import arc.scene.ui.*;
import arc.scene.ui.TextButton.*; import arc.scene.ui.TextButton.*;
@@ -28,7 +30,6 @@ import java.io.*;
import java.util.zip.*; import java.util.zip.*;
import static arc.Core.*; import static arc.Core.*;
import static mindustry.Vars.net;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class SettingsMenuDialog extends Dialog{ public class SettingsMenuDialog extends Dialog{
@@ -283,9 +284,9 @@ public class SettingsMenuDialog extends Dialog{
} }
void addSettings(){ void addSettings(){
sound.sliderPref("musicvol", bundle.get("setting.musicvol.name", "Music Volume"), 100, 0, 100, 1, i -> i + "%"); sound.sliderPref("musicvol", 100, 0, 100, 1, i -> i + "%");
sound.sliderPref("sfxvol", bundle.get("setting.sfxvol.name", "SFX Volume"), 100, 0, 100, 1, i -> i + "%"); sound.sliderPref("sfxvol", 100, 0, 100, 1, i -> i + "%");
sound.sliderPref("ambientvol", bundle.get("setting.ambientvol.name", "Ambient Volume"), 100, 0, 100, 1, i -> i + "%"); sound.sliderPref("ambientvol", 100, 0, 100, 1, i -> i + "%");
game.sliderPref("saveinterval", 60, 10, 5 * 120, 10, i -> Core.bundle.format("setting.seconds", i)); game.sliderPref("saveinterval", 60, 10, 5 * 120, 10, i -> Core.bundle.format("setting.seconds", i));
@@ -562,52 +563,26 @@ public class SettingsMenuDialog extends Dialog{
rebuild(); rebuild();
} }
public SliderSetting sliderPref(String name, String title, int def, int min, int max, StringProcessor s){
return sliderPref(name, title, def, min, max, 1, s);
}
public SliderSetting sliderPref(String name, String title, int def, int min, int max, int step, StringProcessor s){
SliderSetting res;
list.add(res = new SliderSetting(name, title, def, min, max, step, s));
settings.defaults(name, def);
rebuild();
return res;
}
public SliderSetting sliderPref(String name, int def, int min, int max, StringProcessor s){ public SliderSetting sliderPref(String name, int def, int min, int max, StringProcessor s){
return sliderPref(name, def, min, max, 1, s); return sliderPref(name, def, min, max, 1, s);
} }
public SliderSetting sliderPref(String name, int def, int min, int max, int step, StringProcessor s){ public SliderSetting sliderPref(String name, int def, int min, int max, int step, StringProcessor s){
SliderSetting res; SliderSetting res;
list.add(res = new SliderSetting(name, bundle.get("setting." + name + ".name"), def, min, max, step, s)); list.add(res = new SliderSetting(name, def, min, max, step, s));
settings.defaults(name, def); settings.defaults(name, def);
rebuild(); rebuild();
return res; return res;
} }
public void checkPref(String name, String title, boolean def){
list.add(new CheckSetting(name, title, def, null));
settings.defaults(name, def);
rebuild();
}
public void checkPref(String name, String title, boolean def, Boolc changed){
list.add(new CheckSetting(name, title, def, changed));
settings.defaults(name, def);
rebuild();
}
/** Localized title. */
public void checkPref(String name, boolean def){ public void checkPref(String name, boolean def){
list.add(new CheckSetting(name, bundle.get("setting." + name + ".name"), def, null)); list.add(new CheckSetting(name, def, null));
settings.defaults(name, def); settings.defaults(name, def);
rebuild(); rebuild();
} }
/** Localized title. */
public void checkPref(String name, boolean def, Boolc changed){ public void checkPref(String name, boolean def, Boolc changed){
list.add(new CheckSetting(name, bundle.get("setting." + name + ".name"), def, changed)); list.add(new CheckSetting(name, def, changed));
settings.defaults(name, def); settings.defaults(name, def);
rebuild(); rebuild();
} }
@@ -631,17 +606,41 @@ public class SettingsMenuDialog extends Dialog{
public abstract static class Setting{ public abstract static class Setting{
public String name; public String name;
public String title; public String title;
public @Nullable String description;
Setting(String name){
this.name = name;
title = bundle.get("setting." + name + ".name");
description = bundle.getOrNull("setting." + name + ".description");
}
public abstract void add(SettingsTable table); public abstract void add(SettingsTable table);
public void addDesc(Element elem){
if(description == null) return;
elem.addListener(new Tooltip(t -> t.background(Styles.black8).margin(4f).add(description).color(Color.lightGray)){
{
allowMobile = true;
}
@Override
protected void setContainerPosition(Element element, float x, float y){
this.targetActor = element;
Vec2 pos = element.localToStageCoordinates(Tmp.v1.set(0, 0));
container.pack();
container.setPosition(pos.x, pos.y, Align.topLeft);
container.setOrigin(0, element.getHeight());
}
});
}
} }
public static class CheckSetting extends Setting{ public static class CheckSetting extends Setting{
boolean def; boolean def;
Boolc changed; Boolc changed;
CheckSetting(String name, String title, boolean def, Boolc changed){ CheckSetting(String name, boolean def, Boolc changed){
this.name = name; super(name);
this.title = title;
this.def = def; this.def = def;
this.changed = changed; this.changed = changed;
} }
@@ -660,7 +659,7 @@ public class SettingsMenuDialog extends Dialog{
}); });
box.left(); box.left();
table.add(box).left().padTop(3f); addDesc(table.add(box).left().padTop(3f).get());
table.row(); table.row();
} }
} }
@@ -669,9 +668,8 @@ public class SettingsMenuDialog extends Dialog{
int def, min, max, step; int def, min, max, step;
StringProcessor sp; StringProcessor sp;
SliderSetting(String name, String title, int def, int min, int max, int step, StringProcessor s){ SliderSetting(String name, int def, int min, int max, int step, StringProcessor s){
this.name = name; super(name);
this.title = title;
this.def = def; this.def = def;
this.min = min; this.min = min;
this.max = max; this.max = max;
@@ -689,7 +687,7 @@ public class SettingsMenuDialog extends Dialog{
Table content = new Table(); Table content = new Table();
content.add(title, Styles.outlineLabel).left().growX().wrap(); content.add(title, Styles.outlineLabel).left().growX().wrap();
content.add(value).padLeft(10f).right(); content.add(value).padLeft(10f).right();
content.margin(3f, 33.5f, 3f, 33.5f); content.margin(3f, 33f, 3f, 33f);
content.touchable = Touchable.disabled; content.touchable = Touchable.disabled;
slider.changed(() -> { slider.changed(() -> {
@@ -699,7 +697,7 @@ public class SettingsMenuDialog extends Dialog{
slider.change(); slider.change();
table.stack(slider, content).width(Math.min(Core.graphics.getWidth() / 1.2f, 460f)).left().padTop(4f); addDesc(table.stack(slider, content).width(Math.min(Core.graphics.getWidth() / 1.2f, 460f)).left().padTop(4f).get());
table.row(); table.row();
} }
} }
+1 -1
View File
@@ -10,4 +10,4 @@ kapt.include.compile.classpath=false
kotlin.stdlib.default.dependency=false kotlin.stdlib.default.dependency=false
#needed for android compilation #needed for android compilation
android.useAndroidX=true android.useAndroidX=true
archash=65939d39bd6b20ddcfa85cb76cb1ceb815d91aec archash=e52908cb23da2dead7ac049a1f395bacda64007c