diff --git a/core/assets-raw/sprites/blocks/drills/laser-drill-rotator.png b/core/assets-raw/sprites/blocks/drills/laser-drill-rotator.png index 44aa88d6b8..e2e1189386 100644 Binary files a/core/assets-raw/sprites/blocks/drills/laser-drill-rotator.png and b/core/assets-raw/sprites/blocks/drills/laser-drill-rotator.png differ diff --git a/core/assets-raw/sprites/blocks/drills/laser-drill.png b/core/assets-raw/sprites/blocks/drills/laser-drill.png index 95cbc0a8e0..f80542e411 100644 Binary files a/core/assets-raw/sprites/blocks/drills/laser-drill.png and b/core/assets-raw/sprites/blocks/drills/laser-drill.png differ diff --git a/core/assets/sprites/block_colors.png b/core/assets/sprites/block_colors.png index 2f74fd7633..5798f3aa23 100644 Binary files a/core/assets/sprites/block_colors.png and b/core/assets/sprites/block_colors.png differ diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index ff21c9b274..af7586c1ec 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index fa9dfedede..a73f66b3ca 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/assets/sprites/sprites4.png b/core/assets/sprites/sprites4.png index 948bddb50d..241e98b1c7 100644 Binary files a/core/assets/sprites/sprites4.png and b/core/assets/sprites/sprites4.png differ diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 2946dce679..ce3eb793e4 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -208,6 +208,7 @@ public class Control implements ApplicationListener{ public void playZone(Zone zone){ ui.loadAnd(() -> { logic.reset(); + Net.reset(); world.loadGenerator(zone.generator); zone.rules.accept(state.rules); state.rules.zone = zone; diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index f873e5d1f5..ba23997804 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -45,6 +45,8 @@ public class NetClient implements ApplicationListener{ private boolean connecting = false; /** If true, no message will be shown on disconnect. */ private boolean quiet = false; + /** Whether to supress disconnect events completely.*/ + private boolean quietReset = false; /** Counter for data timeout. */ private float timeoutTime = 0f; /** Last sent client snapshot ID. */ @@ -94,8 +96,10 @@ public class NetClient implements ApplicationListener{ }); Net.handleClient(Disconnect.class, packet -> { - state.set(State.menu); + if(quietReset) return; + connecting = false; + state.set(State.menu); logic.reset(); Platform.instance.updateRPC(); @@ -325,11 +329,11 @@ public class NetClient implements ApplicationListener{ private void finishConnecting(){ state.set(State.playing); connecting = false; - ui.loadfrag.hide(); ui.join.hide(); Net.setClientLoaded(true); Core.app.post(Call::connectConfirm); Time.runTask(40f, Platform.instance::updateRPC); + Core.app.post(() -> ui.loadfrag.hide()); } private void reset(){ @@ -337,6 +341,7 @@ public class NetClient implements ApplicationListener{ removed.clear(); timeoutTime = 0f; connecting = true; + quietReset = false; quiet = false; lastSent = 0; @@ -348,11 +353,18 @@ public class NetClient implements ApplicationListener{ connecting = true; } + /** Disconnects, resetting state to the menu. */ public void disconnectQuietly(){ quiet = true; Net.disconnect(); } + /** Disconnects, causing no further changes or reset.*/ + public void disconnectNoReset(){ + quiet = quietReset = true; + Net.disconnect(); + } + /** When set, any disconnects will be ignored and no dialogs will be shown. */ public void setQuiet(){ quiet = true; diff --git a/core/src/io/anuke/mindustry/input/Binding.java b/core/src/io/anuke/mindustry/input/Binding.java index 8b2fd227bf..a2953a0dea 100644 --- a/core/src/io/anuke/mindustry/input/Binding.java +++ b/core/src/io/anuke/mindustry/input/Binding.java @@ -16,7 +16,7 @@ public enum Binding implements KeyBind{ diagonal_placement(KeyCode.CONTROL_LEFT), pick(KeyCode.MOUSE_MIDDLE), dash(KeyCode.SHIFT_LEFT), - gridMode(KeyCode.GRAVE), + gridMode(KeyCode.BACKTICK), gridModeShift(KeyCode.ALT_LEFT), zoom_hold(KeyCode.CONTROL_LEFT, "view"), zoom(new Axis(KeyCode.SCROLL)), diff --git a/core/src/io/anuke/mindustry/net/Net.java b/core/src/io/anuke/mindustry/net/Net.java index 3943e8a4e2..d0965c3cb8 100644 --- a/core/src/io/anuke/mindustry/net/Net.java +++ b/core/src/io/anuke/mindustry/net/Net.java @@ -132,6 +132,11 @@ public class Net{ active = false; } + public static void reset(){ + closeServer(); + netClient.disconnectNoReset(); + } + public static void disconnect(){ clientProvider.disconnect(); server = false; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java index db28b6b2da..edf883e3bb 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java @@ -17,6 +17,7 @@ import io.anuke.mindustry.core.GameState.*; import io.anuke.mindustry.game.Saves.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.io.SaveIO.*; +import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.*; import io.anuke.mindustry.type.Zone.*; import io.anuke.mindustry.ui.*; @@ -95,6 +96,8 @@ public class DeployDialog extends FloatingDialog{ hide(); ui.loadAnd(() -> { + logic.reset(); + Net.reset(); try{ control.saves.getZoneSlot().load(); state.set(State.playing); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java index 9b5f6de9f7..538860d466 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java @@ -310,6 +310,7 @@ public class JoinDialog extends FloatingDialog{ Time.runTask(2f, () -> { logic.reset(); + Net.reset(); Vars.netClient.beginConnecting(); Net.connect(ip, port, () -> { hide(); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java index e0103b2bbd..d4066b2348 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java @@ -1,20 +1,20 @@ package io.anuke.mindustry.ui.dialogs; -import io.anuke.arc.Core; -import io.anuke.arc.collection.Array; -import io.anuke.arc.files.FileHandle; -import io.anuke.arc.scene.ui.ScrollPane; -import io.anuke.arc.scene.ui.TextButton; -import io.anuke.arc.scene.ui.layout.Table; +import io.anuke.arc.*; +import io.anuke.arc.collection.*; +import io.anuke.arc.files.*; +import io.anuke.arc.scene.ui.*; +import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; -import io.anuke.mindustry.Vars; -import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.core.Platform; -import io.anuke.mindustry.game.Saves.SaveSlot; -import io.anuke.mindustry.io.SaveIO; -import io.anuke.mindustry.io.SaveIO.SaveException; +import io.anuke.mindustry.*; +import io.anuke.mindustry.core.GameState.*; +import io.anuke.mindustry.core.*; +import io.anuke.mindustry.game.Saves.*; +import io.anuke.mindustry.io.*; +import io.anuke.mindustry.io.SaveIO.*; +import io.anuke.mindustry.net.Net; -import java.io.IOException; +import java.io.*; import static io.anuke.mindustry.Vars.*; @@ -170,6 +170,7 @@ public class LoadDialog extends FloatingDialog{ ui.loadAnd(() -> { try{ + Net.reset(); slot.load(); state.set(State.playing); }catch(SaveException e){ @@ -184,7 +185,6 @@ public class LoadDialog extends FloatingDialog{ public void modifyButton(TextButton button, SaveSlot slot){ button.clicked(() -> { if(!button.childrenPressed()){ - int build = slot.getBuild(); runLoadSave(slot); } }); diff --git a/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java b/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java index 688a542ccc..23ad95f0e2 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java @@ -43,6 +43,7 @@ public class LoadingFragment extends Fragment{ } public void show(String text){ + table.clearActions(); table.touchable(Touchable.enabled); table.