From c1b2017bb1208137728e933b6c937b21bb25d403 Mon Sep 17 00:00:00 2001 From: Cyborger1 <45152844+Cyborger1@users.noreply.github.com> Date: Sun, 28 Feb 2021 16:47:08 -0800 Subject: [PATCH 1/2] ground markers: Add import/export menu option toggle --- .../groundmarkers/GroundMarkerConfig.java | 15 ++++++++++++- .../groundmarkers/GroundMarkerPlugin.java | 21 ++++++++++++++++++- .../GroundMarkerSharingManager.java | 2 +- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java index bc2a65f0d9..75a465aea4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java @@ -31,9 +31,12 @@ import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; -@ConfigGroup("groundMarker") +@ConfigGroup(GroundMarkerConfig.GROUND_MARKER_CONFIG_GROUP) public interface GroundMarkerConfig extends Config { + String GROUND_MARKER_CONFIG_GROUP = "groundMarker"; + String SHOW_IMPORT_EXPORT_KEY_NAME = "showImportExport"; + @Alpha @ConfigItem( keyName = "markerColor", @@ -64,4 +67,14 @@ public interface GroundMarkerConfig extends Config { return false; } + + @ConfigItem( + keyName = SHOW_IMPORT_EXPORT_KEY_NAME, + name = "Show Import/Export options", + description = "Show the Import/Export options on the minimap right-click menu" + ) + default boolean showImportExport() + { + return true; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java index 81ac210bfc..675a249a94 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java @@ -54,6 +54,7 @@ import net.runelite.api.events.MenuOptionClicked; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.events.ConfigChanged; import net.runelite.client.game.chatbox.ChatboxPanelManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -190,7 +191,10 @@ public class GroundMarkerPlugin extends Plugin { overlayManager.add(overlay); overlayManager.add(minimapOverlay); - sharingManager.addMenuOptions(); + if (config.showImportExport()) + { + sharingManager.addImportExportMenuOptions(); + } loadPoints(); eventBus.register(sharingManager); } @@ -280,6 +284,21 @@ public class GroundMarkerPlugin extends Plugin } } + @Subscribe + public void onConfigChanged(ConfigChanged event) + { + if (event.getGroup().equals(GroundMarkerConfig.GROUND_MARKER_CONFIG_GROUP) + && event.getKey().equals(GroundMarkerConfig.SHOW_IMPORT_EXPORT_KEY_NAME)) + { + sharingManager.removeMenuOptions(); + + if (config.showImportExport()) + { + sharingManager.addImportExportMenuOptions(); + } + } + } + private void markTile(LocalPoint localPoint) { if (localPoint == null) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java index 91c0e800ac..7121a08afc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java @@ -79,7 +79,7 @@ class GroundMarkerSharingManager this.gson = gson; } - void addMenuOptions() + void addImportExportMenuOptions() { menuManager.addManagedCustomMenu(EXPORT_MARKERS_OPTION); menuManager.addManagedCustomMenu(IMPORT_MARKERS_OPTION); From 4c048716d44efd8027be520f3436850dba6c1d79 Mon Sep 17 00:00:00 2001 From: Cyborger1 <45152844+Cyborger1@users.noreply.github.com> Date: Sun, 28 Feb 2021 16:47:51 -0800 Subject: [PATCH 2/2] ground markers: Add clear markers menu option --- .../groundmarkers/GroundMarkerConfig.java | 11 +++++ .../groundmarkers/GroundMarkerPlugin.java | 12 ++++- .../GroundMarkerSharingManager.java | 46 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java index 75a465aea4..7a6538e22d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerConfig.java @@ -36,6 +36,7 @@ public interface GroundMarkerConfig extends Config { String GROUND_MARKER_CONFIG_GROUP = "groundMarker"; String SHOW_IMPORT_EXPORT_KEY_NAME = "showImportExport"; + String SHOW_CLEAR_KEY_NAME = "showClear"; @Alpha @ConfigItem( @@ -77,4 +78,14 @@ public interface GroundMarkerConfig extends Config { return true; } + + @ConfigItem( + keyName = SHOW_CLEAR_KEY_NAME, + name = "Show Clear option", + description = "Show the Clear option on the minimap right-click menu, which deletes all currently loaded markers" + ) + default boolean showClear() + { + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java index 675a249a94..850f383439 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java @@ -195,6 +195,10 @@ public class GroundMarkerPlugin extends Plugin { sharingManager.addImportExportMenuOptions(); } + if (config.showClear()) + { + sharingManager.addClearMenuOption(); + } loadPoints(); eventBus.register(sharingManager); } @@ -288,14 +292,20 @@ public class GroundMarkerPlugin extends Plugin public void onConfigChanged(ConfigChanged event) { if (event.getGroup().equals(GroundMarkerConfig.GROUND_MARKER_CONFIG_GROUP) - && event.getKey().equals(GroundMarkerConfig.SHOW_IMPORT_EXPORT_KEY_NAME)) + && (event.getKey().equals(GroundMarkerConfig.SHOW_IMPORT_EXPORT_KEY_NAME) + || event.getKey().equals(GroundMarkerConfig.SHOW_CLEAR_KEY_NAME))) { + // Maintain consistent menu option order by removing everything then adding according to config sharingManager.removeMenuOptions(); if (config.showImportExport()) { sharingManager.addImportExportMenuOptions(); } + if (config.showClear()) + { + sharingManager.addClearMenuOption(); + } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java index 7121a08afc..056ed509f2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerSharingManager.java @@ -59,6 +59,7 @@ class GroundMarkerSharingManager { private static final WidgetMenuOption EXPORT_MARKERS_OPTION = new WidgetMenuOption("Export", "Ground Markers", WORLD_MAP_OPTION); private static final WidgetMenuOption IMPORT_MARKERS_OPTION = new WidgetMenuOption("Import", "Ground Markers", WORLD_MAP_OPTION); + private static final WidgetMenuOption CLEAR_MARKERS_OPTION = new WidgetMenuOption("Clear", "Ground Markers", WORLD_MAP_OPTION); private final GroundMarkerPlugin plugin; private final Client client; @@ -85,10 +86,16 @@ class GroundMarkerSharingManager menuManager.addManagedCustomMenu(IMPORT_MARKERS_OPTION); } + void addClearMenuOption() + { + menuManager.addManagedCustomMenu(CLEAR_MARKERS_OPTION); + } + void removeMenuOptions() { menuManager.removeManagedCustomMenu(EXPORT_MARKERS_OPTION); menuManager.removeManagedCustomMenu(IMPORT_MARKERS_OPTION); + menuManager.removeManagedCustomMenu(CLEAR_MARKERS_OPTION); } private boolean widgetMenuClickedEquals(final WidgetMenuOptionClicked event, final WidgetMenuOption target) @@ -114,6 +121,10 @@ class GroundMarkerSharingManager { promptForImport(); } + else if (widgetMenuClickedEquals(event, CLEAR_MARKERS_OPTION)) + { + promptForClear(); + } } private void exportGroundMarkers() @@ -233,6 +244,41 @@ class GroundMarkerSharingManager sendChatMessage(importPoints.size() + " ground markers were imported from the clipboard."); } + private void promptForClear() + { + int[] regions = client.getMapRegions(); + if (regions == null) + { + return; + } + + long numActivePoints = Arrays.stream(regions) + .mapToLong(regionId -> plugin.getPoints(regionId).size()) + .sum(); + + if (numActivePoints == 0) + { + sendChatMessage("You have no ground markers to clear."); + return; + } + + chatboxPanelManager.openTextMenuInput("Are you sure you want to clear the
" + numActivePoints + " currently loaded ground markers?") + .option("Yes", () -> + { + for (int regionId : regions) + { + plugin.savePoints(regionId, null); + } + + plugin.loadPoints(); + sendChatMessage(numActivePoints + " ground marker" + + (numActivePoints == 1 ? " was cleared." : "s were cleared.")); + + }) + .option("No", Runnables::doNothing) + .build(); + } + private void sendChatMessage(final String message) { chatMessageManager.queue(QueuedMessage.builder()