diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 3016155d2b..d52c2b1067 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -33,6 +33,18 @@ + + + + + + + + + + + + diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index bf03462dad..3be1b5d428 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -102,7 +102,7 @@ public class AndroidLauncher extends AndroidApplication{ @Override public boolean isDebug() { - return true; + return false; } @Override diff --git a/build.gradle b/build.gradle index 3b3a9f5585..95c4e6dc6d 100644 --- a/build.gradle +++ b/build.gradle @@ -86,7 +86,7 @@ project(":desktop") { compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-controllers-lwjgl3:$gdxVersion" compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.0' - //compile 'com.yuvimasory:orange-extensions:1.3.0' + compile 'com.yuvimasory:orange-extensions:1.3.0' } } diff --git a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java index eabea94d02..ca4571d325 100644 --- a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java @@ -26,6 +26,8 @@ public class OverlayRenderer { for(Player player : players) { InputHandler input = control.input(player.playerIndex); + if(!input.isDrawing()) continue; + Shaders.outline.color.set(Palette.accent); Graphics.beginShaders(Shaders.outline); diff --git a/core/src/io/anuke/mindustry/input/AndroidInput.java b/core/src/io/anuke/mindustry/input/AndroidInput.java index 0cda261ec7..65b435d61e 100644 --- a/core/src/io/anuke/mindustry/input/AndroidInput.java +++ b/core/src/io/anuke/mindustry/input/AndroidInput.java @@ -215,6 +215,11 @@ public class AndroidInput extends InputHandler implements GestureListener{ }}.visible(() -> !state.is(State.menu)).end(); } + @Override + public boolean isDrawing(){ + return selection.size > 0 || removals.size > 0; + } + @Override public void drawBottom(){ diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index cbf2649b8b..bd02666bb1 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -60,6 +60,11 @@ public class DesktopInput extends InputHandler{ } } + @Override + public boolean isDrawing(){ + return mode != none; + } + @Override public void drawBottom(){ Tile cursor = tileAt(control.gdxInput().getX(), control.gdxInput().getY()); diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 9ee29d7975..742e57ab7e 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -81,6 +81,10 @@ public abstract class InputHandler extends InputAdapter{ } + public boolean isDrawing(){ + return false; + } + /**Handles tile tap events that are not platform specific.*/ public boolean tileTapped(Tile tile){ tile = tile.target(); diff --git a/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java b/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java index 9728956bdf..f16369d88d 100644 --- a/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java +++ b/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java @@ -14,6 +14,8 @@ public class CrashHandler { //TODO send full error report to server via HTTP e.printStackTrace(); + + //attempt to close connections, if applicable try{ Net.dispose(); diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 72f8cd46bb..b798370b34 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -1,14 +1,27 @@ package io.anuke.mindustry.desktop; +import com.apple.eawt.Application; import com.badlogic.gdx.Files.FileType; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; +import com.badlogic.gdx.files.FileHandle; import io.anuke.kryonet.KryoClient; import io.anuke.kryonet.KryoServer; import io.anuke.mindustry.Mindustry; import io.anuke.mindustry.core.Platform; +import io.anuke.mindustry.io.SaveIO; +import io.anuke.mindustry.io.Saves.SaveSlot; import io.anuke.mindustry.net.Net; +import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.OS; +import io.anuke.ucore.util.Strings; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import static io.anuke.mindustry.Vars.*; public class DesktopLauncher { @@ -20,6 +33,41 @@ public class DesktopLauncher { config.setWindowedMode(960, 540); config.setWindowIcon("sprites/icon.png"); + Application.getApplication().setOpenFileHandler(e -> { + List list = e.getFiles(); + + File target = list.get(0); + + Gdx.app.postRunnable(() -> { + FileHandle file = OS.getAppDataDirectory("Mindustry").child("tmp").child(target.getName()); + + Gdx.files.absolute(target.getAbsolutePath()).copyTo(file); + + if(file.extension().equalsIgnoreCase(saveExtension)){ //open save + + if(SaveIO.isSaveValid(file)){ + try{ + SaveSlot slot = control.getSaves().importSave(file); + ui.load.runLoadSave(slot); + }catch (IOException e2){ + ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e2, false))); + } + }else{ + ui.showError("$text.save.import.invalid"); + } + + }else if(file.extension().equalsIgnoreCase(mapExtension)){ //open map + Gdx.app.postRunnable(() -> { + if (!ui.editor.isShown()) { + ui.editor.show(); + } + + ui.editor.beginEditMap(file.read()); + }); + } + }); + }); + if(OS.isMac) { config.setPreferencesConfig(OS.getAppDataDirectoryString("Mindustry"), FileType.Absolute); }