mirror of
https://github.com/yawaflua/Informatis.git
synced 2025-12-10 03:59:26 +02:00
303 lines
14 KiB
Java
303 lines
14 KiB
Java
package UnitInfo.core;
|
|
|
|
import arc.*;
|
|
import arc.graphics.*;
|
|
import arc.scene.event.Touchable;
|
|
import arc.scene.ui.*;
|
|
import arc.scene.ui.layout.*;
|
|
import arc.struct.Seq;
|
|
import arc.util.*;
|
|
import mindustry.*;
|
|
import mindustry.core.Version;
|
|
import mindustry.gen.*;
|
|
import mindustry.ui.Styles;
|
|
import mindustry.ui.dialogs.*;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import static arc.Core.bundle;
|
|
import static arc.Core.settings;
|
|
import static mindustry.Vars.*;
|
|
|
|
public class Setting {
|
|
public static SettingsMenuDialog.SettingsTable waveTable = new SettingsMenuDialog.SettingsTable();
|
|
public static SettingsMenuDialog.SettingsTable opacityTable = new SettingsMenuDialog.SettingsTable();
|
|
public static SettingsMenuDialog.SettingsTable scanTable = new SettingsMenuDialog.SettingsTable();
|
|
|
|
public void addGraphicCheckSetting(String key, boolean def){
|
|
ui.settings.graphics.checkPref(key, def);
|
|
}
|
|
public void addGraphicSlideSetting(String key, int def, int min, int max, int step, SettingsMenuDialog.StringProcessor s, Seq<SettingsMenuDialog.SettingsTable.Setting> list){
|
|
list.add(new SettingsMenuDialog.SettingsTable.Setting() {
|
|
{
|
|
name = key;
|
|
title = bundle.get("setting." + key + ".name");
|
|
|
|
Core.settings.defaults(name, def);
|
|
}
|
|
|
|
@Override
|
|
public void add(SettingsMenuDialog.SettingsTable table){
|
|
Slider slider = new Slider(min, max, step, false);
|
|
|
|
if(Version.build <= 128) slider.addListener(new Tooltip(t -> t.background(Tex.button).table(to -> to.add("[lightgray]" + Core.bundle.get("setting." + key + ".description") + "[]"))));
|
|
slider.setValue(settings.getInt(name));
|
|
|
|
Label value = new Label("");
|
|
value.setStyle(Styles.outlineLabel);
|
|
value.touchable = Touchable.disabled;
|
|
|
|
slider.changed(() -> {
|
|
settings.put(name, (int)slider.getValue());
|
|
value.setText(title + ": " + s.get((int)slider.getValue()));
|
|
});
|
|
|
|
value.setAlignment(Align.center);
|
|
value.setWrap(true);
|
|
|
|
slider.change();
|
|
|
|
table.stack(slider, value).width(Math.min(Core.graphics.getWidth() / 1.2f, 460f)).left().padTop(4);
|
|
table.row();
|
|
}
|
|
});
|
|
}
|
|
public void addGraphicCheckSetting(String key, boolean def, Seq<SettingsMenuDialog.SettingsTable.Setting> list){
|
|
list.add(new SettingsMenuDialog.SettingsTable.Setting() {
|
|
{
|
|
name = key;
|
|
title = bundle.get("setting." + key + ".name");
|
|
|
|
Core.settings.defaults(name, def);
|
|
}
|
|
|
|
@Override
|
|
public void add(SettingsMenuDialog.SettingsTable table) {
|
|
CheckBox box = new CheckBox(title);
|
|
if(Version.build <= 128) box.addListener(new Tooltip(t -> t.background(Tex.button).table(to -> to.add("[lightgray]" + Core.bundle.get("setting." + key + ".description") + "[]"))));
|
|
|
|
box.update(() -> box.setChecked(settings.getBool(name)));
|
|
|
|
box.changed(() -> {
|
|
settings.put(name, box.isChecked());
|
|
});
|
|
|
|
box.left();
|
|
table.add(box).left().padTop(3f);
|
|
table.row();
|
|
}
|
|
});
|
|
}
|
|
|
|
public void addGraphicTypeSetting(String key, int defs, String dialogs, String invalid, int warnMax, Seq<SettingsMenuDialog.SettingsTable.Setting> list){
|
|
list.add(new SettingsMenuDialog.SettingsTable.Setting() {
|
|
public final int def;
|
|
{
|
|
def = defs;
|
|
name = key;
|
|
title = Core.bundle.get("setting." + key + ".name");
|
|
|
|
Core.settings.defaults(name, def);
|
|
}
|
|
|
|
public final StringBuilder message = new StringBuilder();
|
|
|
|
@Override
|
|
public void add(SettingsMenuDialog.SettingsTable settingsTable) {
|
|
String settingTitle = title;
|
|
String settingName = name;
|
|
Label label = new Label(title + ": " + def);
|
|
|
|
Table button = new Table(t -> t.button(Icon.pencil, () -> {
|
|
if(Vars.mobile){
|
|
Core.input.getTextInput(new Input.TextInput(){{
|
|
text = message.toString();
|
|
multiline = false;
|
|
maxLength = String.valueOf(Integer.MAX_VALUE).length();
|
|
accepted = str -> {
|
|
|
|
try {
|
|
int number = Integer.parseInt(str);
|
|
if(number >= warnMax){
|
|
new Dialog(""){{
|
|
setFillParent(true);
|
|
cont.margin(15f);
|
|
cont.add("@warn");
|
|
cont.row();
|
|
cont.image().width(300f).pad(2).height(4f).color(Color.scarlet);
|
|
cont.row();
|
|
cont.add("@warning").pad(2f).growX().wrap().get().setAlignment(Align.center);
|
|
cont.row();
|
|
cont.table(t -> {
|
|
t.button("@yes", () -> {
|
|
this.hide();
|
|
Core.settings.put(settingName, number);
|
|
label.setText(settingTitle + ": " + number);
|
|
}).size(120, 50);
|
|
t.button("@no", () -> {
|
|
this.hide();
|
|
Core.settings.put(settingName, def);
|
|
label.setText(settingTitle + ": " + Core.settings.getInt(settingName));
|
|
}).size(120, 50);
|
|
}).pad(5);
|
|
closeOnBack();
|
|
}}.show();
|
|
}
|
|
else {
|
|
Core.settings.put(settingName, number);
|
|
label.setText(settingTitle + ": " + number);
|
|
}
|
|
} catch(Throwable e) {
|
|
Log.info(e);
|
|
ui.showErrorMessage("@invalid");
|
|
|
|
Core.settings.put(settingName, def);
|
|
label.setText(settingTitle + ": " + def);
|
|
}
|
|
};
|
|
}});
|
|
}else{
|
|
BaseDialog dialog = new BaseDialog(dialogs);
|
|
dialog.setFillParent(false);
|
|
TextArea a = dialog.cont.add(new TextArea(message.toString().replace("\r", "\n"))).size(140f, 80f).get();
|
|
a.setMaxLength(String.valueOf(Integer.MAX_VALUE).length());
|
|
dialog.buttons.button("@ok", () -> {
|
|
try {
|
|
int number = Integer.parseInt(a.getText());
|
|
if(number >= warnMax){
|
|
String name1 = name;
|
|
String title1 = title;
|
|
new Dialog(""){{
|
|
setFillParent(true);
|
|
cont.margin(15f);
|
|
cont.add("@warn");
|
|
cont.row();
|
|
cont.image().width(300f).pad(2).height(4f).color(Color.scarlet);
|
|
cont.row();
|
|
cont.add("@warning").pad(2f).growX().wrap().get().setAlignment(Align.center);
|
|
cont.row();
|
|
cont.table(t -> {
|
|
t.button("@yes", () -> {
|
|
this.hide();
|
|
Core.settings.put(name1, number);
|
|
label.setText(title1 + ": " + number);
|
|
}).size(120, 50);
|
|
t.button("@no", () -> {
|
|
this.hide();
|
|
Core.settings.put(name1, def);
|
|
label.setText(title1 + ": " + Core.settings.getInt(name1));
|
|
}).size(120, 50);
|
|
}).pad(5);
|
|
closeOnBack();
|
|
}}.show();
|
|
}else {
|
|
Core.settings.put(name, number);
|
|
label.setText(title + ": " + number);
|
|
}
|
|
} catch(Throwable e) {
|
|
Log.info(e);
|
|
ui.showErrorMessage(invalid);
|
|
|
|
Core.settings.put(name, def);
|
|
label.setText(title + ": " + def);
|
|
}
|
|
|
|
dialog.hide();
|
|
}).size(70f, 50f);
|
|
|
|
dialog.show();
|
|
}
|
|
}).size(40f));
|
|
|
|
settingsTable.table(t -> {
|
|
t.left().defaults().left();
|
|
t.add(label).minWidth(label.getPrefWidth() / Scl.scl(1.0F) + 50.0F);
|
|
t.add(button).size(40F);
|
|
if(Version.build <= 128) t.addListener(new Tooltip(tt -> tt.background(Tex.button).table(to -> to.add("[lightgray]" + Core.bundle.get("setting." + key + ".description") + "[]"))));
|
|
}).left().padTop(3.0F);
|
|
settingsTable.row();
|
|
}
|
|
});
|
|
}
|
|
|
|
public void addGraphicDialogSetting(String key, Seq<SettingsMenuDialog.SettingsTable.Setting> list, SettingsMenuDialog.SettingsTable table){
|
|
ui.settings.graphics.pref(new SettingsMenuDialog.SettingsTable.Setting() {
|
|
{
|
|
name = key;
|
|
title = Core.bundle.get("setting." + key + ".name");
|
|
|
|
Core.settings.defaults(name, 1);
|
|
}
|
|
|
|
public Table rebuild() {
|
|
table.clearChildren();
|
|
|
|
Iterator var1 = list.iterator();
|
|
|
|
while(var1.hasNext()) {
|
|
SettingsMenuDialog.SettingsTable.Setting setting = (SettingsMenuDialog.SettingsTable.Setting)var1.next();
|
|
setting.add(table);
|
|
}
|
|
table.button(Core.bundle.get("settings.reset", "Reset to Defaults"), () -> {
|
|
Iterator var2 = list.iterator();
|
|
|
|
while(var2.hasNext()) {
|
|
SettingsMenuDialog.SettingsTable.Setting setting = (SettingsMenuDialog.SettingsTable.Setting)var1.next();
|
|
if (setting.name != null && setting.title != null) {
|
|
Core.settings.put(setting.name, Core.settings.getDefault(setting.name));
|
|
}
|
|
}
|
|
rebuild();
|
|
}).margin(14.0F).width(240.0F).pad(6.0F);
|
|
|
|
return table;
|
|
}
|
|
|
|
@Override
|
|
public void add(SettingsMenuDialog.SettingsTable settingsTable) {
|
|
settingsTable.table(Core.scene.getStyle(Button.ButtonStyle.class).up, t->{
|
|
t.add(rebuild());
|
|
t.row();
|
|
});
|
|
settingsTable.row();
|
|
}
|
|
});
|
|
}
|
|
|
|
public void init(){
|
|
Seq<SettingsMenuDialog.SettingsTable.Setting> waveSeq = new Seq<>();
|
|
addGraphicCheckSetting("pastwave", false, waveSeq);
|
|
addGraphicCheckSetting("emptywave", true, waveSeq);
|
|
addGraphicTypeSetting("wavemax", 100, "@editmaxwave","@invalid", 200, waveSeq);
|
|
addGraphicDialogSetting("wavesetting", waveSeq, waveTable);
|
|
|
|
Seq<SettingsMenuDialog.SettingsTable.Setting> scanSeq = new Seq<>();
|
|
addGraphicCheckSetting("scan", false, scanSeq);
|
|
addGraphicTypeSetting("rangemax", 10, "@editrange","@invalid", 100, scanSeq);
|
|
addGraphicCheckSetting("rangeNearby", true, scanSeq);
|
|
addGraphicCheckSetting("allTeamRange", false, scanSeq);
|
|
addGraphicCheckSetting("allTargetRange", false, scanSeq);
|
|
addGraphicSlideSetting("rangeRadius", 5, 0, 20, 1, s -> s + "tiles", scanSeq);
|
|
addGraphicDialogSetting("wavesetting", scanSeq, scanTable);
|
|
|
|
Seq<SettingsMenuDialog.SettingsTable.Setting> opacitySeq = new Seq<>();
|
|
addGraphicSlideSetting("selectopacity", 50, 0, 100, 5, s -> s + "%", opacitySeq);
|
|
addGraphicSlideSetting("baropacity", 50, 0, 100, 5, s -> s + "%", opacitySeq);
|
|
addGraphicSlideSetting("uiopacity", 50, 0, 100, 5, s -> s + "%", opacitySeq);
|
|
addGraphicDialogSetting("opacitysetting", opacitySeq, opacityTable);
|
|
|
|
addGraphicCheckSetting("autoShooting", false);
|
|
addGraphicCheckSetting("infoui", true);
|
|
addGraphicCheckSetting("weaponui", true);
|
|
addGraphicCheckSetting("select", true);
|
|
addGraphicCheckSetting("unithealthui", true);
|
|
addGraphicCheckSetting("ssim", false);
|
|
addGraphicCheckSetting("shar", false);
|
|
addGraphicCheckSetting("shar1", false);
|
|
addGraphicCheckSetting("shar2", false);
|
|
addGraphicCheckSetting("shar3", false);
|
|
addGraphicCheckSetting("gaycursor", false);
|
|
addGraphicCheckSetting("allTeam", false);
|
|
}
|
|
}
|