diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java index 31ffae453a..0a0adb4a59 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java @@ -3,14 +3,21 @@ package io.anuke.mindustry.ui.dialogs; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.utils.Align; +import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.game.EventType.ResizeEvent; import io.anuke.mindustry.graphics.Palette; +import io.anuke.mindustry.net.Net; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Events; import io.anuke.ucore.scene.ui.Dialog; import io.anuke.ucore.scene.ui.ScrollPane; +import static io.anuke.mindustry.Vars.state; +import static io.anuke.mindustry.Vars.ui; + public class FloatingDialog extends Dialog{ + private boolean wasPaused; + protected boolean shouldPause; public FloatingDialog(String title){ super(title, "dialog"); @@ -20,6 +27,24 @@ public class FloatingDialog extends Dialog{ getTitleTable().addImage("white", Palette.accent) .growX().height(3f).pad(4f); + hidden(() -> { + if(shouldPause && !state.is(State.menu)){ + if(!wasPaused || Net.active()) + state.set(State.playing); + } + }); + + shown(() -> { + if(shouldPause && !state.is(State.menu)){ + wasPaused = state.is(State.paused); + if(ui.paused.getScene() != null){ + wasPaused = ui.paused.wasPaused; + } + if(!Net.active()) state.set(State.paused); + ui.paused.hide(); + } + }); + boolean[] done = {false}; shown(() -> Gdx.app.postRunnable(() -> diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index 8789fc7785..b24de852f4 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -23,6 +23,9 @@ import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; +import java.util.HashMap; +import java.util.Map; + import static io.anuke.mindustry.Vars.*; public class SettingsMenuDialog extends SettingsDialog{ @@ -162,7 +165,14 @@ public class SettingsMenuDialog extends SettingsDialog{ dialog.content().row(); dialog.content().addButton("$text.settings.clearall", "clear", () -> { ui.showConfirm("$text.confirm", "$text.settings.clearall.confirm", () -> { + Map map = new HashMap<>(); + for(String value : Settings.prefs().get().keySet()){ + if(value.contains("usid") || value.contains("uuid")){ + map.put(value, Settings.prefs().getString(value)); + } + } Settings.prefs().clear(); + Settings.prefs().put(map); Settings.save(); if(!gwt){ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java index 0b765eafba..5120404cb2 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java @@ -22,6 +22,7 @@ public class UnlocksDialog extends FloatingDialog{ super("$text.unlocks"); addCloseButton(); + shouldPause = true; shown(this::rebuild); onResize(this::rebuild); } diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index eafa7ead7b..d8639ddb13 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -90,13 +90,13 @@ public class HudFragment extends Fragment{ ui.chatfrag.toggle(); } }else{ - ui.settings.show(); + ui.unlocks.show(); } }).update(i -> { if(Net.active() && mobile){ i.getStyle().imageUp = Core.skin.getDrawable("icon-chat"); }else{ - i.getStyle().imageUp = Core.skin.getDrawable("icon-settings"); + i.getStyle().imageUp = Core.skin.getDrawable("icon-unlocks"); } }).get(); });