diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-07-04 09:51:03 +0800 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-07-17 12:55:25 +0800 |
commit | e1a8a2262e787fd40b8890918e7b5ba45e92aabf (patch) | |
tree | dbc0460dec92e8c39560bef465767cc8b780bb7b /src/main | |
parent | b4882519e945f5d4a03fb3c11c21e871f5d28cbb (diff) | |
download | Skyblocker-e1a8a2262e787fd40b8890918e7b5ba45e92aabf.tar.gz Skyblocker-e1a8a2262e787fd40b8890918e7b5ba45e92aabf.tar.bz2 Skyblocker-e1a8a2262e787fd40b8890918e7b5ba45e92aabf.zip |
Add cancel changes confirmation
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java index 72861493..49511068 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java @@ -17,6 +17,7 @@ public class ShortcutsConfigScreen extends Screen { private ButtonWidget buttonNew; private ButtonWidget buttonDone; private boolean initialized; + private boolean saved; private double scrollAmount; public ShortcutsConfigScreen() { @@ -52,13 +53,14 @@ public class ShortcutsConfigScreen extends Screen { adder.add(buttonNew); adder.add(ButtonWidget.builder(ScreenTexts.CANCEL, button -> { if (client != null) { - client.setScreen(null); + close(); } }).build()); buttonDone = ButtonWidget.builder(ScreenTexts.DONE, button -> { shortcutsConfigListWidget.saveShortcuts(); + saved = true; if (client != null) { - client.setScreen(null); + close(); } }).tooltip(Tooltip.of(Text.translatable("skyblocker.shortcuts.commandSuggestionTooltip"))).build(); adder.add(buttonDone); @@ -73,7 +75,7 @@ public class ShortcutsConfigScreen extends Screen { if (confirmedAction && shortcutsConfigListWidget.getSelectedOrNull() instanceof ShortcutsConfigListWidget.ShortcutEntry shortcutEntry) { shortcutsConfigListWidget.removeEntry(shortcutEntry); } - client.setScreen(this); // Re-inits the screen and creates a new instance of ShortcutsConfigListWidget + client.setScreen(this); // Re-inits the screen and keeps the old instance of ShortcutsConfigListWidget shortcutsConfigListWidget.setScrollAmount(scrollAmount); } } @@ -84,6 +86,21 @@ public class ShortcutsConfigScreen extends Screen { context.drawCenteredTextWithShadow(this.textRenderer, this.title, this.width / 2, 16, 0xFFFFFF); } + @Override + public void close() { + if (!saved && client != null) { + client.setScreen(new ConfirmScreen(confirmedAction -> { + if (confirmedAction) { + super.close(); + } else { + client.setScreen(this); + } + }, Text.translatable("text.cloth-config.quit_config"), Text.translatable("text.cloth-config.quit_config_sure"), Text.translatable("text.cloth-config.quit_discard"), ScreenTexts.CANCEL)); + } else { + super.close(); + } + } + protected void updateButtons() { buttonDelete.active = Shortcuts.isShortcutsLoaded() && shortcutsConfigListWidget.getSelectedOrNull() instanceof ShortcutsConfigListWidget.ShortcutEntry; buttonNew.active = Shortcuts.isShortcutsLoaded() && shortcutsConfigListWidget.getCategory().isPresent(); |