From 65ab8694680890b90a1160e07daedc58358fc754 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 Nov 2020 19:45:45 -0500 Subject: [PATCH] Added button to export crash logs --- core/assets/bundles/bundle.properties | 3 +++ .../ui/dialogs/SettingsMenuDialog.java | 17 +++++++++++++++++ ios/src/mindustry/ios/IOSLauncher.java | 10 +++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index b1fd17e21d..01e59313bb 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -267,6 +267,9 @@ cancel = Cancel openlink = Open Link copylink = Copy Link back = Back +crash.export = Export Crash Logs +crash.none = No crash logs found. +crash.exported = Crash logs exported. data.export = Export Data data.import = Import Data data.openfolder = Open Data Folder diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index 8de3384027..1efd1f3938 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -195,6 +195,23 @@ public class SettingsMenuDialog extends SettingsDialog{ t.row(); t.button("@data.openfolder", Icon.folder, style, () -> Core.app.openFolder(Core.settings.getDataDirectory().absolutePath())).marginLeft(4); } + + t.row(); + + t.button("@crash.export", Icon.upload, style, () -> { + if(settings.getDataDirectory().child("crashes").list().length == 0){ + ui.showInfo("@crash.none"); + }else{ + platform.showFileChooser(false, "txt", file -> { + StringBuilder out = new StringBuilder(); + for(Fi fi : settings.getDataDirectory().child("crashes").list()){ + out.append(fi.name()).append("\n\n").append(fi.readString()).append("\n"); + } + file.writeString(out.toString()); + app.post(() -> ui.showInfo("@crash.exported")); + }); + } + }).marginLeft(4); }); ScrollPane pane = new ScrollPane(prefs); diff --git a/ios/src/mindustry/ios/IOSLauncher.java b/ios/src/mindustry/ios/IOSLauncher.java index d725c1053b..9f610e709a 100644 --- a/ios/src/mindustry/ios/IOSLauncher.java +++ b/ios/src/mindustry/ios/IOSLauncher.java @@ -12,6 +12,7 @@ import mindustry.*; import mindustry.game.EventType.*; import mindustry.game.Saves.*; import mindustry.io.*; +import mindustry.net.*; import mindustry.ui.*; import org.robovm.apple.coregraphics.*; import org.robovm.apple.foundation.*; @@ -248,7 +249,14 @@ public class IOSLauncher extends IOSApplication.Delegate{ public static void main(String[] argv){ NSAutoreleasePool pool = new NSAutoreleasePool(); - UIApplication.main(argv, null, IOSLauncher.class); + try{ + UIApplication.main(argv, null, IOSLauncher.class); + }catch(Throwable t){ + //attempt to log the exception + CrashSender.log(t); + //rethrow the exception so it actually crashes + throw t; + } pool.close(); } }