Added support for Mac file association; minor optimizations

This commit is contained in:
Anuken
2018-06-01 13:01:05 -04:00
parent cfa95eef39
commit 5c120e532f
9 changed files with 80 additions and 2 deletions

View File

@@ -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();

View File

@@ -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<File> 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);
}