Merge branches 'master' and 'uiscale' of https://github.com/Anuken/Mindustry
This commit is contained in:
@@ -459,6 +459,7 @@ setting.keyboard.name = Mouse+Keyboard 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] (require restart)[]
|
||||||
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
|
||||||
@@ -485,6 +486,8 @@ setting.mutesound.name = Mute Sound
|
|||||||
setting.crashreport.name = Send Anonymous Crash Reports
|
setting.crashreport.name = Send Anonymous Crash Reports
|
||||||
setting.chatopacity.name = Chat Opacity
|
setting.chatopacity.name = Chat Opacity
|
||||||
setting.playerchat.name = Display In-Game Chat
|
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
|
keybind.title = Rebind Keys
|
||||||
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
|
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
|
||||||
category.general.name = General
|
category.general.name = General
|
||||||
|
|||||||
@@ -1,29 +1,28 @@
|
|||||||
package io.anuke.mindustry.core;
|
package io.anuke.mindustry.core;
|
||||||
|
|
||||||
import io.anuke.arc.*;
|
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.graphics.g2d.*;
|
||||||
import io.anuke.arc.input.KeyCode;
|
import io.anuke.arc.input.*;
|
||||||
import io.anuke.arc.scene.ui.Dialog;
|
import io.anuke.arc.scene.ui.*;
|
||||||
import io.anuke.arc.scene.ui.TextField;
|
import io.anuke.arc.scene.ui.layout.Unit;
|
||||||
import io.anuke.arc.util.*;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.*;
|
||||||
import io.anuke.mindustry.entities.Effects;
|
import io.anuke.mindustry.entities.*;
|
||||||
import io.anuke.mindustry.entities.type.Player;
|
import io.anuke.mindustry.entities.type.*;
|
||||||
import io.anuke.mindustry.game.*;
|
import io.anuke.mindustry.game.*;
|
||||||
import io.anuke.mindustry.game.EventType.*;
|
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.input.*;
|
||||||
import io.anuke.mindustry.maps.Map;
|
import io.anuke.mindustry.maps.*;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.type.*;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
import io.anuke.mindustry.ui.dialogs.*;
|
||||||
import io.anuke.mindustry.world.Tile;
|
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.*;
|
||||||
import static io.anuke.arc.Core.scene;
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,9 +44,9 @@ public class Control implements ApplicationListener{
|
|||||||
saves = new Saves();
|
saves = new Saves();
|
||||||
data = new GlobalData();
|
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);
|
content.initialize(Content::init);
|
||||||
Core.atlas = new TextureAtlas("sprites/sprites.atlas");
|
Core.atlas = new TextureAtlas("sprites/sprites.atlas");
|
||||||
@@ -265,6 +264,37 @@ public class Control implements ApplicationListener{
|
|||||||
dialog.show();
|
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
|
@Override
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class Effects{
|
|||||||
private static final EffectContainer container = new EffectContainer();
|
private static final EffectContainer container = new EffectContainer();
|
||||||
private static Array<Effect> effects = new Array<>();
|
private static Array<Effect> effects = new Array<>();
|
||||||
private static ScreenshakeProvider shakeProvider;
|
private static ScreenshakeProvider shakeProvider;
|
||||||
private static float shakeFalloff = 1000f;
|
private static float shakeFalloff = 10000f;
|
||||||
private static EffectProvider provider = (effect, color, x, y, rotation, data) -> {
|
private static EffectProvider provider = (effect, color, x, y, rotation, data) -> {
|
||||||
EffectEntity entity = Pools.obtain(EffectEntity.class, EffectEntity::new);
|
EffectEntity entity = Pools.obtain(EffectEntity.class, EffectEntity::new);
|
||||||
entity.effect = effect;
|
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("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 + "%");
|
graphics.sliderPref("chatopacity", 100, 0, 100, 5, s -> s + "%");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user