diff --git a/core/src/mindustry/game/Saves.java b/core/src/mindustry/game/Saves.java index ee7989711f..6927813008 100644 --- a/core/src/mindustry/game/Saves.java +++ b/core/src/mindustry/game/Saves.java @@ -17,6 +17,7 @@ import mindustry.type.*; import java.io.*; import java.text.*; import java.util.*; +import java.util.concurrent.*; import static mindustry.Vars.*; @@ -47,11 +48,24 @@ public class Saves{ public void load(){ saves.clear(); + //read saves in parallel + Seq> futures = new Seq<>(); + for(Fi file : saveDirectory.list()){ if(!file.name().contains("backup") && SaveIO.isSaveValid(file)){ - SaveSlot slot = new SaveSlot(file); - saves.add(slot); - slot.meta = SaveIO.getMeta(file); + futures.add(mainExecutor.submit(() -> { + SaveSlot slot = new SaveSlot(file); + slot.meta = SaveIO.getMeta(file); + return slot; + })); + } + } + + for(var future : futures){ + try{ + saves.add(future.get()); + }catch(Exception e){ + Log.err(e); } } diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 8a88370704..f24d4cba74 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -772,8 +772,10 @@ public class DesktopInput extends InputHandler{ @Override public void panCamera(Vec2 position){ - panning = true; - camera.position.set(position); + if(!locked()){ + panning = true; + camera.position.set(position); + } } protected void updateMovement(Unit unit){ diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index ad9dc9c09c..11877512e5 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1484,7 +1484,9 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ /** Forces the camera to a position and enables panning on desktop. */ public void panCamera(Vec2 position){ - camera.position.set(position); + if(!locked()){ + camera.position.set(position); + } } public boolean selectedBlock(){ diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index cd8b50aa3c..aa70d5e6f1 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -224,13 +224,13 @@ public class JoinDialog extends BaseDialog{ server.content.background(Tex.whitePane).setColor(Pal.gray); - server.content.label(() -> Core.bundle.get("server.refreshing") + Strings.animated(Time.time, 4, 11, ".")).padBottom(4); + server.content.label(() -> Core.bundle.get("server.refreshing") + Strings.animated(Time.time, 4, 11, ".")).grow().center().labelAlign(Align.center).padBottom(4); net.pingHost(server.ip, server.port, host -> setupServer(server, host), e -> { server.content.clear(); server.content.background(Tex.whitePane).setColor(Pal.gray); - server.content.add("@host.invalid"); + server.content.add("@host.invalid").grow().center().labelAlign(Align.center); }); }