diff --git a/android/src/mindustry/android/AndroidLauncher.java b/android/src/mindustry/android/AndroidLauncher.java index 438d133707..be35875dad 100644 --- a/android/src/mindustry/android/AndroidLauncher.java +++ b/android/src/mindustry/android/AndroidLauncher.java @@ -148,6 +148,30 @@ public class AndroidLauncher extends AndroidApplication{ //errorHandler = ModCrashHandler::handle; }}); checkFiles(getIntent()); + + //new external folder + Fi data = Core.files.absolute(getContext().getExternalFilesDir(null).getAbsolutePath()); + + //moved to internal storage if there's no file indicating that it moved + if(!Core.files.local("files_moved").exists()){ + Log.info("Moving files to external storage..."); + + try{ + //current local storage folder + Fi src = Core.files.absolute(Core.files.getLocalStoragePath()); + for(Fi fi : src.list()){ + fi.copyTo(data.child(fi.name())); + } + //create marker + Core.files.local("files_moved").writeString("files moved to " + data); + Log.info("Files moved."); + }catch(Throwable t){ + Log.err("Failed to move files!"); + t.printStackTrace(); + } + }else{ + Core.settings.setDataDirectory(data); + } } @Override diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 87afbb9801..3af6426ac2 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -251,6 +251,7 @@ copylink = Copy Link back = Back data.export = Export Data data.import = Import Data +data.openfolder = Open Data Folder data.exported = Data exported. data.invalid = This isn't valid game data. data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index 4b42f64d80..30b96c3610 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -20,15 +20,8 @@ public class ModsDialog extends FloatingDialog{ super("$mods"); addCloseButton(); - buttons.addImageTextButton(mobile ? "$mods.report" : "$mods.openfolder", Icon.link, - () -> { - if(mobile){ - Core.net.openURI(reportIssueURL); - }else{ - Core.net.openFolder(modDirectory.absolutePath()); - } - }) - .size(250f, 64f); + buttons.addImageTextButton("$mods.openfolder", Icon.link, + () -> Core.app.openFolder(modDirectory.absolutePath())).size(250f, 64f); buttons.row(); diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index ea9210f695..893fd3cf5e 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -81,10 +81,10 @@ public class SettingsMenuDialog extends SettingsDialog{ dataDialog.addCloseButton(); dataDialog.cont.table(Tex.button, t -> { - t.defaults().size(240f, 60f).left(); + t.defaults().size(270f, 60f).left(); TextButtonStyle style = Styles.cleart; - t.addButton("$settings.cleardata", style, () -> ui.showConfirm("$confirm", "$settings.clearall.confirm", () -> { + t.addImageTextButton("$settings.cleardata", Icon.trash16Small, style, () -> ui.showConfirm("$confirm", "$settings.clearall.confirm", () -> { ObjectMap map = new ObjectMap<>(); for(String value : Core.settings.keys()){ if(value.contains("usid") || value.contains("uuid")){ @@ -104,7 +104,7 @@ public class SettingsMenuDialog extends SettingsDialog{ t.row(); - t.addButton("$data.export", style, () -> { + t.addImageTextButton("$data.export", Icon.loadMapSmall, style, () -> { if(ios){ Fi file = Core.files.local("mindustry-data-export.zip"); try{ @@ -128,7 +128,7 @@ public class SettingsMenuDialog extends SettingsDialog{ t.row(); - t.addButton("$data.import", style, () -> ui.showConfirm("$confirm", "$data.import.confirm", () -> platform.showFileChooser(true, "zip", file -> { + t.addImageTextButton("$data.import", Icon.saveMapSmall, style, () -> ui.showConfirm("$confirm", "$data.import.confirm", () -> platform.showFileChooser(true, "zip", file -> { try{ data.importData(file); Core.app.exit(); @@ -143,6 +143,12 @@ public class SettingsMenuDialog extends SettingsDialog{ } } }))); + + t.row(); + + if(!ios){ + t.addImageTextButton("$data.openfolder", Icon.folderSmall, style, () -> Core.app.openFolder(Core.settings.getDataDirectory().absolutePath())); + } }); ScrollPane pane = new ScrollPane(prefs); diff --git a/core/src/mindustry/world/blocks/liquid/Conduit.java b/core/src/mindustry/world/blocks/liquid/Conduit.java index 651f66a627..eb5511891e 100644 --- a/core/src/mindustry/world/blocks/liquid/Conduit.java +++ b/core/src/mindustry/world/blocks/liquid/Conduit.java @@ -1,11 +1,11 @@ package mindustry.world.blocks.liquid; import arc.*; -import arc.struct.*; import arc.func.*; import arc.graphics.g2d.*; import arc.math.*; import arc.math.geom.*; +import arc.struct.*; import arc.util.*; import mindustry.content.*; import mindustry.entities.traits.BuilderTrait.*; @@ -13,7 +13,6 @@ import mindustry.entities.type.*; import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.*; -import mindustry.world.modules.*; public class Conduit extends LiquidBlock implements Autotiler{ public final int timerFlow = timers++; @@ -92,13 +91,12 @@ public class Conduit extends LiquidBlock implements Autotiler{ @Override public void draw(Tile tile){ ConduitEntity entity = tile.ent(); - LiquidModule mod = tile.entity.liquids; int rotation = tile.rotation() * 90; Draw.colorl(0.34f); Draw.rect(botRegions[entity.blendbits], tile.drawx(), tile.drawy(), rotation); - Draw.color(mod.current().color); + Draw.color(tile.entity.liquids.current().color); Draw.alpha(entity.smoothLiquid); Draw.rect(botRegions[entity.blendbits], tile.drawx(), tile.drawy(), rotation); Draw.color();