aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-07-04 09:51:03 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-07-17 12:55:25 +0800
commite1a8a2262e787fd40b8890918e7b5ba45e92aabf (patch)
treedbc0460dec92e8c39560bef465767cc8b780bb7b /src/main
parentb4882519e945f5d4a03fb3c11c21e871f5d28cbb (diff)
downloadSkyblocker-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.java23
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();