aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java46
1 files changed, 26 insertions, 20 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java
index 9f82f7a2..23a24361 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java
@@ -1,9 +1,8 @@
package de.hysky.skyblocker.skyblock.waypoint;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.MultimapBuilder;
-import de.hysky.skyblocker.utils.waypoint.WaypointCategory;
+import de.hysky.skyblocker.utils.waypoint.NamedWaypoint;
import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.ConfirmScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.GridWidget;
@@ -11,31 +10,21 @@ import net.minecraft.client.gui.widget.SimplePositioningWidget;
import net.minecraft.screen.ScreenTexts;
import net.minecraft.text.Text;
-public class WaypointsScreen extends Screen {
- private final Screen parent;
- final Multimap<String, WaypointCategory> waypoints = MultimapBuilder.hashKeys().arrayListValues().build();
- private WaypointsListWidget waypointsListWidget;
+public class WaypointsScreen extends AbstractWaypointsScreen<Screen> {
private ButtonWidget buttonNew;
private ButtonWidget buttonDone;
- protected WaypointsScreen() {
- this(null);
- }
-
public WaypointsScreen(Screen parent) {
- super(Text.translatable("skyblocker.waypoints.config"));
- this.parent = parent;
- Waypoints.waypoints.forEach((island, category) -> waypoints.put(island, new WaypointCategory(category)));
+ super(Text.translatable("skyblocker.waypoints.config"), parent, Waypoints.waypointsDeepCopy());
}
@Override
protected void init() {
super.init();
- waypointsListWidget = addDrawableChild(new WaypointsListWidget(client, this, width, height - 96, 32, 24));
GridWidget gridWidget = new GridWidget();
gridWidget.getMainPositioner().marginX(5).marginY(2);
GridWidget.Adder adder = gridWidget.createAdder(2);
- adder.add(ButtonWidget.builder(Text.translatable("skyblocker.waypoints.share"), buttonShare -> {}).build());
+ adder.add(ButtonWidget.builder(Text.translatable("skyblocker.waypoints.share"), buttonShare -> client.setScreen(new WaypointsShareScreen(this, waypoints))).build());
buttonNew = adder.add(ButtonWidget.builder(Text.translatable("skyblocker.waypoints.newCategory"), buttonNew -> waypointsListWidget.addWaypointCategoryAfterSelected()).build());
adder.add(ButtonWidget.builder(ScreenTexts.CANCEL, button -> close()).build());
buttonDone = adder.add(ButtonWidget.builder(ScreenTexts.DONE, button -> {
@@ -54,17 +43,34 @@ public class WaypointsScreen extends Screen {
context.drawCenteredTextWithShadow(this.textRenderer, this.title, this.width / 2, 16, 0xFFFFFF);
}
+ @Override
+ protected boolean isEnabled(NamedWaypoint waypoint) {
+ return waypoint.shouldRender();
+ }
+
+ @Override
+ protected void enabledChanged(NamedWaypoint waypoint, boolean enabled) {
+ waypoint.setShouldRender(enabled);
+ }
+
private void saveWaypoints() {
Waypoints.waypoints.clear();
Waypoints.waypoints.putAll(waypoints);
Waypoints.saveWaypoints(client);
}
- private void updateButtons() {}
-
- @SuppressWarnings("DataFlowIssue")
@Override
public void close() {
- client.setScreen(parent);
+ assert client != null;
+ if (!waypoints.equals(Waypoints.waypoints)) {
+ client.setScreen(new ConfirmScreen(confirmedAction -> client.setScreen(confirmedAction ? parent : this),
+ Text.translatable("text.skyblocker.quit_config"),
+ Text.translatable("text.skyblocker.quit_config_sure"),
+ Text.translatable("text.skyblocker.quit_discard"),
+ ScreenTexts.CANCEL
+ ));
+ } else {
+ client.setScreen(parent);
+ }
}
}