mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-02-11 11:17:11 +07:00
Added UI scale slider
This commit is contained in:
parent
7b09548261
commit
029f801159
@ -459,6 +459,7 @@ setting.keyboard.name = Mouse+Keyboard Controls
|
||||
setting.fpscap.name = Max FPS
|
||||
setting.fpscap.none = None
|
||||
setting.fpscap.text = {0} FPS
|
||||
setting.uiscale.name = UI Scaling[lightgray] (require restart)[]
|
||||
setting.swapdiagonal.name = Always Diagonal Placement
|
||||
setting.difficulty.training = Training
|
||||
setting.difficulty.easy = Easy
|
||||
@ -485,6 +486,8 @@ setting.mutesound.name = Mute Sound
|
||||
setting.crashreport.name = Send Anonymous Crash Reports
|
||||
setting.chatopacity.name = Chat Opacity
|
||||
setting.playerchat.name = Display In-Game Chat
|
||||
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
|
||||
uiscale.cancel = Cancel & Exit
|
||||
keybind.title = Rebind Keys
|
||||
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
|
||||
category.general.name = General
|
||||
|
@ -1,29 +1,28 @@
|
||||
package io.anuke.mindustry.core;
|
||||
|
||||
import io.anuke.arc.*;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.*;
|
||||
import io.anuke.arc.graphics.g2d.*;
|
||||
import io.anuke.arc.input.KeyCode;
|
||||
import io.anuke.arc.scene.ui.Dialog;
|
||||
import io.anuke.arc.scene.ui.TextField;
|
||||
import io.anuke.arc.input.*;
|
||||
import io.anuke.arc.scene.ui.*;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
import io.anuke.arc.util.*;
|
||||
import io.anuke.mindustry.core.GameState.State;
|
||||
import io.anuke.mindustry.entities.Effects;
|
||||
import io.anuke.mindustry.entities.type.Player;
|
||||
import io.anuke.mindustry.core.GameState.*;
|
||||
import io.anuke.mindustry.entities.*;
|
||||
import io.anuke.mindustry.entities.type.*;
|
||||
import io.anuke.mindustry.game.*;
|
||||
import io.anuke.mindustry.game.EventType.*;
|
||||
import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.mindustry.gen.*;
|
||||
import io.anuke.mindustry.input.*;
|
||||
import io.anuke.mindustry.maps.Map;
|
||||
import io.anuke.mindustry.maps.*;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.type.*;
|
||||
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.ui.dialogs.*;
|
||||
import io.anuke.mindustry.world.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.*;
|
||||
|
||||
import static io.anuke.arc.Core.batch;
|
||||
import static io.anuke.arc.Core.scene;
|
||||
import static io.anuke.arc.Core.*;
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
|
||||
/**
|
||||
@ -45,9 +44,9 @@ public class Control implements ApplicationListener{
|
||||
saves = new Saves();
|
||||
data = new GlobalData();
|
||||
|
||||
Core.input.setCatch(KeyCode.BACK, true);
|
||||
Unit.dp.product = settings.getInt("uiscale", 100) / 100f;
|
||||
|
||||
Effects.setShakeFalloff(10000f);
|
||||
Core.input.setCatch(KeyCode.BACK, true);
|
||||
|
||||
content.initialize(Content::init);
|
||||
Core.atlas = new TextureAtlas("sprites/sprites.atlas");
|
||||
@ -265,6 +264,37 @@ public class Control implements ApplicationListener{
|
||||
dialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
if(Core.settings.getBool("uiscalechanged", false)){
|
||||
FloatingDialog dialog = new FloatingDialog("$confirm");
|
||||
|
||||
float[] countdown = {60 * 11};
|
||||
Runnable exit = () -> {
|
||||
Core.settings.put("uiscale", 100);
|
||||
Core.settings.put("uiscalechanged", false);
|
||||
settings.save();
|
||||
dialog.hide();
|
||||
Core.app.exit();
|
||||
};
|
||||
|
||||
dialog.setFillParent(false);
|
||||
dialog.cont.label(() -> {
|
||||
if(countdown[0] <= 0){
|
||||
exit.run();
|
||||
}
|
||||
return Core.bundle.format("uiscale.reset", (int)((countdown[0] -= Time.delta()) / 60f));
|
||||
}).pad(10f).expand().left();
|
||||
|
||||
dialog.buttons.defaults().size(200f, 60f);
|
||||
dialog.buttons.addButton("$uiscale.cancel", exit);
|
||||
|
||||
dialog.buttons.addButton("$ok", () -> {
|
||||
Core.settings.put("uiscalechanged", false);
|
||||
dialog.hide();
|
||||
});
|
||||
|
||||
Core.app.post(dialog::show);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -14,7 +14,7 @@ public class Effects{
|
||||
private static final EffectContainer container = new EffectContainer();
|
||||
private static Array<Effect> effects = new Array<>();
|
||||
private static ScreenshakeProvider shakeProvider;
|
||||
private static float shakeFalloff = 1000f;
|
||||
private static float shakeFalloff = 10000f;
|
||||
private static EffectProvider provider = (effect, color, x, y, rotation, data) -> {
|
||||
EffectEntity entity = Pools.obtain(EffectEntity.class, EffectEntity::new);
|
||||
entity.effect = effect;
|
||||
|
@ -184,6 +184,10 @@ public class SettingsMenuDialog extends SettingsDialog{
|
||||
}
|
||||
});
|
||||
|
||||
graphics.sliderPref("uiscale", 100, 25, 400, 25, s -> {
|
||||
Core.settings.put("uiscalechanged", true);
|
||||
return s + "%";
|
||||
});
|
||||
graphics.sliderPref("fpscap", 241, 5, 241, 5, s -> (s > 240 ? Core.bundle.get("setting.fpscap.none") : Core.bundle.format("setting.fpscap.text", s)));
|
||||
graphics.sliderPref("chatopacity", 100, 0, 100, 5, s -> s + "%");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user