Settings tooltips
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user