From d7f9090c0bb009ffbb1da6058164913b94404703 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 9 Mar 2020 09:41:39 -0400 Subject: [PATCH] Fixed #1672 --- core/assets/bundles/bundle.properties | 2 ++ core/src/mindustry/input/InputHandler.java | 17 +++++++++++++---- .../mindustry/ui/dialogs/SchematicsDialog.java | 7 +++++++ gradle.properties | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 1d84a3c859..6a478b6c54 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -39,6 +39,8 @@ be.check = Check for updates schematic = Schematic schematic.add = Save Schematic... schematics = Schematics +schematic.replace = A schematic by that name already exists. Replace it? +schematic.exists = A schematic by that name already exists. schematic.import = Import Schematic... schematic.exportfile = Export File schematic.importfile = Import File diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 611cec44b6..cd2f3d6d6b 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -255,10 +255,19 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(lastSchematic == null) return; ui.showTextInput("$schematic.add", "$name", "", text -> { - lastSchematic.tags.put("name", text); - schematics.add(lastSchematic); - ui.showInfoFade("$schematic.saved"); - ui.schematics.showInfo(lastSchematic); + Schematic replacement = schematics.all().find(s -> s.name().equals(text)); + if(replacement != null){ + ui.showConfirm("$confirm", "$schematic.replace", () -> { + schematics.overwrite(replacement, lastSchematic); + ui.showInfoFade("$schematic.saved"); + ui.schematics.showInfo(replacement); + }); + }else{ + lastSchematic.tags.put("name", text); + schematics.add(lastSchematic); + ui.showInfoFade("$schematic.saved"); + ui.schematics.showInfo(lastSchematic); + } }); } diff --git a/core/src/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/mindustry/ui/dialogs/SchematicsDialog.java index fb29f9fa8e..5a67dacd58 100644 --- a/core/src/mindustry/ui/dialogs/SchematicsDialog.java +++ b/core/src/mindustry/ui/dialogs/SchematicsDialog.java @@ -90,6 +90,13 @@ public class SchematicsDialog extends FloatingDialog{ buttons.addImageButton(Icon.pencil, style, () -> { ui.showTextInput("$schematic.rename", "$name", s.name(), res -> { + Schematic replacement = schematics.all().find(other -> other.name().equals(res) && other != s); + if(replacement != null){ + //renaming to an existing schematic is not allowed, as it is not clear how the tags would be merged, and which one should be removed + ui.showErrorMessage("$schematic.exists"); + return; + } + s.tags.put("name", res); s.save(); rebuildPane[0].run(); diff --git a/gradle.properties b/gradle.properties index 79495ee591..1aeb38a829 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=c1eab295b1a55397957fd54bec2f37daee0e8b4b +archash=b8f094ba9916ba5a0ce5b4c9dc0fc3d2d0cf89fd