Data clearing / Bugfixes

This commit is contained in:
Anuken 2018-09-05 10:24:47 -04:00
parent bf5055f944
commit 9c36026991
5 changed files with 64 additions and 6 deletions

View File

@ -27,7 +27,7 @@ allprojects {
appName = 'Mindustry'
gdxVersion = '1.9.8'
roboVMVersion = '2.3.0'
uCoreVersion = 'e8b535aa79075670c3478c7d24cacec8c58e8fc2'
uCoreVersion = '367f0b0bab5936ce47155f17a74150451a0cddea'
getVersionString = {
String buildVersion = getBuildVersion()

View File

@ -254,18 +254,23 @@ text.fps=FPS: {0}
text.tps=TPS: {0}
text.ping=Ping: {0}ms
text.language.restart=Please restart your game for the language settings to take effect.
text.settings.language=Language
text.settings=Settings
text.tutorial=Tutorial
text.editor=Editor
text.mapeditor=Map Editor
text.donate=Donate
text.settings.language=Language
text.settings.reset=Reset to Defaults
text.settings.rebind=Rebind
text.settings.controls=Controls
text.settings.game=Game
text.settings.sound=Sound
text.settings.graphics=Graphics
text.settings.cleardata=Clear Game Data...
text.settings.clear.confirm=Are you sure you want to clear your data?\nThis cannot be undone!
text.settings.clearsectors=Clear Sectors
text.settings.clearunlocks=Clear Unlocks
text.settings.clearall=Clear All
text.paused=Paused
text.yes=Yes
text.no=No

View File

@ -151,7 +151,7 @@ public class JoinDialog extends FloatingDialog{
String versionString;
if(host.version == -1){
versionString = Bundles.format("text.server.version", Bundles.get("text.server.custombuild"));
versionString = Bundles.format("text.server.version", Bundles.get("text.server.custombuild"), "");
}else if(host.version == 0){
versionString = Bundles.get("text.server.outdated");
}else if(host.version < Version.build && Version.build != -1){

View File

@ -5,6 +5,7 @@ import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.utils.Align;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.Saves.SaveSlot;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.net.Net;
import io.anuke.ucore.core.Core;
@ -16,6 +17,7 @@ import io.anuke.ucore.scene.event.InputListener;
import io.anuke.ucore.scene.ui.Image;
import io.anuke.ucore.scene.ui.ScrollPane;
import io.anuke.ucore.scene.ui.SettingsDialog;
import io.anuke.ucore.scene.ui.SettingsDialog.SettingsTable.Setting;
import io.anuke.ucore.scene.ui.Slider;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Bundles;
@ -133,6 +135,44 @@ public class SettingsMenuDialog extends SettingsDialog{
game.checkPref("effects", true);
//game.sliderPref("sensitivity", 100, 10, 300, i -> i + "%");
game.sliderPref("saveinterval", 60, 10, 5 * 120, i -> Bundles.format("setting.seconds", i));
game.pref(new Setting(){
@Override
public void add(SettingsTable table){
table.addButton("$text.settings.cleardata", () -> {
FloatingDialog dialog = new FloatingDialog("$text.settings.cleardata");
dialog.setFillParent(false);
dialog.content().defaults().size(230f, 50f).pad(3);
dialog.addCloseButton();
dialog.content().addButton("$text.settings.clearsectors", () -> {
ui.showConfirm("$text.confirm", "$text.settings.clear.confirm", () -> {
Settings.putString("sectors", "{}");
Settings.save();
});
});
dialog.content().row();
dialog.content().addButton("$text.settings.clearunlocks", () -> {
ui.showConfirm("$text.confirm", "$text.settings.clear.confirm", () -> {
Settings.putString("unlocks", "{}");
Settings.save();
});
});
dialog.content().row();
dialog.content().addButton("$text.settings.clearall", () -> {
ui.showConfirm("$text.confirm", "$text.settings.clear.confirm", () -> {
for(SaveSlot slot : control.getSaves().getSaveSlots()){
slot.delete();
}
Settings.prefs().clear();
Settings.save();
});
});
dialog.content().row();
dialog.show();
}).size(220f, 60f).pad(6).left();
table.add();
table.row();
}
});
if(!gwt){
graphics.sliderPref("fpscap", 125, 5, 125, 5, s -> (s > 120 ? Bundles.get("setting.fpscap.none") : Bundles.format("setting.fpscap.text", s)));

View File

@ -2,6 +2,8 @@ package io.anuke.mindustry.server;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.utils.Timer.Task;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.game.Difficulty;
@ -43,6 +45,7 @@ public class ServerControl extends Module{
private int gameOvers;
private boolean inExtraRound;
private Team winnerTeam;
private Task lastTask;
public ServerControl(String[] args){
Settings.defaultList(
@ -161,7 +164,7 @@ public class ServerControl extends Module{
handler.register("stop", "Stop hosting the server.", arg -> {
Net.closeServer();
Timers.clear();
if(lastTask != null) lastTask.cancel();
state.set(State.menu);
netServer.reset();
Log.info("Stopped server.");
@ -173,6 +176,8 @@ public class ServerControl extends Module{
return;
}
if(lastTask != null) lastTask.cancel();
Map result = null;
if(arg.length > 0){
@ -636,6 +641,7 @@ public class ServerControl extends Module{
}
info("&lyCore destroyed.");
inExtraRound = false;
Events.fire(new GameOverEvent());
});
@ -849,7 +855,14 @@ public class ServerControl extends Module{
};
if(wait){
Timers.run(60f * roundExtraTime, r);
lastTask = new Task(){
@Override
public void run(){
r.run();
}
};
Timer.schedule(lastTask, roundExtraTime);
}else{
r.run();
}
@ -886,7 +899,7 @@ public class ServerControl extends Module{
@Override
public void update(){
if(!inExtraRound){
if(!inExtraRound && state.mode.isPvp){
checkPvPGameOver();
}