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.java76
1 files changed, 76 insertions, 0 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
new file mode 100644
index 00000000..23a24361
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsScreen.java
@@ -0,0 +1,76 @@
+package de.hysky.skyblocker.skyblock.waypoint;
+
+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;
+import net.minecraft.client.gui.widget.SimplePositioningWidget;
+import net.minecraft.screen.ScreenTexts;
+import net.minecraft.text.Text;
+
+public class WaypointsScreen extends AbstractWaypointsScreen<Screen> {
+ private ButtonWidget buttonNew;
+ private ButtonWidget buttonDone;
+
+ public WaypointsScreen(Screen parent) {
+ super(Text.translatable("skyblocker.waypoints.config"), parent, Waypoints.waypointsDeepCopy());
+ }
+
+ @Override
+ protected void init() {
+ super.init();
+ 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 -> 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 -> {
+ saveWaypoints();
+ close();
+ }).build());
+ gridWidget.refreshPositions();
+ SimplePositioningWidget.setPos(gridWidget, 0, this.height - 64, this.width, 64);
+ gridWidget.forEachChild(this::addDrawableChild);
+ updateButtons();
+ }
+
+ @Override
+ public void render(DrawContext context, int mouseX, int mouseY, float delta) {
+ super.render(context, mouseX, mouseY, delta);
+ 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);
+ }
+
+ @Override
+ public void close() {
+ 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);
+ }
+ }
+}