From 0a249a0ba3638509cb4c3bc91ab6f375689bf4fd Mon Sep 17 00:00:00 2001 From: melkypie <5113962+melkypie@users.noreply.github.com> Date: Mon, 4 May 2020 18:49:40 +0300 Subject: [PATCH] worldmap: add hunter area tooltips --- .../plugins/worldmap/HunterAreaLocation.java | 136 ++++++++++++++++++ .../plugins/worldmap/HunterAreaPoint.java | 38 +++++ .../plugins/worldmap/WorldMapConfig.java | 11 ++ .../plugins/worldmap/WorldMapPlugin.java | 9 ++ 4 files changed, 194 insertions(+) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaLocation.java create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaPoint.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaLocation.java new file mode 100644 index 0000000000..3f9ee919b8 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaLocation.java @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2020, melky + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.worldmap; + +import com.google.common.base.Joiner; +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.coords.WorldPoint; + +@Getter +enum HunterAreaLocation +{ + BONEYARD_HUNTER_AREA(new WorldPoint(3294, 3673, 0), HunterCreature.BLACK_SALAMANDER), + CANIFIS_HUNTER_AREA1(new WorldPoint(3553, 3438, 0), HunterCreature.SWAMP_LIZARD), + CANIFIS_HUNTER_AREA2(new WorldPoint(3535, 3445, 0), HunterCreature.SWAMP_LIZARD), + FALCONRY(new WorldPoint(2379, 3599, 0), HunterCreature.SPOTTED_KEBBIT, HunterCreature.DARK_KEBBIT, + HunterCreature.DASHING_KEBBIT, HunterCreature.GREATER_SIREN), + FELDIP_HUNTER_AREA(new WorldPoint(2557, 2912, 0), HunterCreature.CRIMSON_SWIFT, HunterCreature.FELDIP_WEASEL, + HunterCreature.TROPICAL_WAGTAIL, HunterCreature.SPINED_LARUPIA, HunterCreature.BARB_TAILED_KEBBIT, + HunterCreature.BLACK_WARLOCK, HunterCreature.CARNIVOROUS_CHINCHOMPA), + FOSSIL_ISLAND1(new WorldPoint(3693, 3800, 0), HunterCreature.HERBIBOAR), + FOSSIL_ISLAND2(new WorldPoint(3701, 3809, 0), HunterCreature.HERBIBOAR), + FOSSIL_ISLAND3(new WorldPoint(3703, 3829, 0), HunterCreature.HERBIBOAR), + FOSSIL_ISLAND4(new WorldPoint(3749, 3850, 0), HunterCreature.HERBIBOAR), + FOSSIL_ISLAND5(new WorldPoint(3684, 3870, 0), HunterCreature.HERBIBOAR), + FOSSIL_ISLAND_UNDERWATER(new WorldPoint(3743, 10295, 0), HunterCreature.FISH_SHOAL), + GWENITH_HUNTER_AREA_OUTSIDE(new WorldPoint(2269, 3408, 0), HunterCreature.CARNIVOROUS_CHINCHOMPA), + GWENITH_HUNTER_AREA_INSIDE(new WorldPoint(3293, 6160, 0), HunterCreature.CARNIVOROUS_CHINCHOMPA), + KARAMJA_HUNTER_AREA(new WorldPoint(2786, 3001, 0), HunterCreature.HORNED_GRAAHK), + KEBOS_SWAMP(new WorldPoint(1184, 3595, 0), HunterCreature.CRIMSON_SWIFT), + KOUREND_WOODLAND_CENTER(new WorldPoint(1512, 3478, 0), HunterCreature.RUBY_HARVEST), + KOUREND_WOODLAND_NORTH_WEST(new WorldPoint(1481, 3504, 0), HunterCreature.CHINCHOMPA), + KOUREND_WOODLAND_SOUTH(new WorldPoint(1556, 3436, 0), HunterCreature.COPPER_LONGTAIL), + LAKE_MOLCH(new WorldPoint(1363, 3632, 0), HunterCreature.BLUEGILL, HunterCreature.COMMON_TENCH, + HunterCreature.MOTTLED_EEL, HunterCreature.GREATER_SIREN), + OURANIA_HUNTER_AREA_EAST(new WorldPoint(2447, 3219, 0), HunterCreature.RED_SALAMANDER), + OURANIA_HUNTER_AREA_SOUTH(new WorldPoint(2475, 3240, 0), HunterCreature.RED_SALAMANDER), + PISCATORIS_HUNTER_AREA(new WorldPoint(2335, 3584, 0), HunterCreature.COMMON_KEBBIT, HunterCreature.COPPER_LONGTAIL, + HunterCreature.RUBY_HARVEST, HunterCreature.WILD_KEBBIT, HunterCreature.FERRET, HunterCreature.WHITE_RABBIT, + HunterCreature.PRICKLY_KEBBIT, HunterCreature.RAZOR_BACKED_KEBBIT, HunterCreature.CHINCHOMPA), + RELLEKA_HUNTER_AREA(new WorldPoint(2719, 3780, 0), HunterCreature.POLAR_KEBBIT, HunterCreature.CERULEAN_TWITCH, + HunterCreature.SAPPHIRE_GLACIALIS, HunterCreature.SNOWY_KNIGHT, + HunterCreature.SABRE_TOOTHED_KEBBIT, HunterCreature.SABRE_TOOTHED_KYATT), + SLEPE_NORTH(new WorldPoint(3677, 3405, 0), HunterCreature.SWAMP_LIZARD), + UZER_HUNTER_AREA(new WorldPoint(3401, 3104, 0), HunterCreature.GOLDEN_WARBLER, HunterCreature.DESERT_DEVIL, + HunterCreature.ORANGE_SALAMANDER), + WILDERNESS(new WorldPoint(3142, 3771, 0), HunterCreature.BLACK_CHINCHOMPA), + ; + + private final WorldPoint location; + private final String tooltip; + + HunterAreaLocation(WorldPoint location, HunterCreature... creatures) + { + this.location = location; + this.tooltip = Joiner.on("
").join(creatures); + } + + @AllArgsConstructor + private enum HunterCreature + { + BARB_TAILED_KEBBIT("Barb-tailed kebbit", 33), + BLACK_CHINCHOMPA("Black chinchompa", 73), + BLACK_SALAMANDER("Black salamander", 67), + BLACK_WARLOCK("Black warlock", 45), + BLUEGILL("Bluegill", 35), + CARNIVOROUS_CHINCHOMPA("Carnivorous chinchompa", 63), + CERULEAN_TWITCH("Cerulean twitch", 11), + CHINCHOMPA("Chinchompa", 53), + COMMON_KEBBIT("Common kebbit", 3), + COMMON_TENCH("Common tench", 51), + COPPER_LONGTAIL("Copper longtail", 9), + CRIMSON_SWIFT("Crimson swift", 1), + DARK_KEBBIT("Dark kebbit", 57), + DASHING_KEBBIT("Dashing kebbit", 69), + DESERT_DEVIL("Desert devil", 13), + FELDIP_WEASEL("Feldip Weasel", 7), + FERRET("Ferret", 27), + FISH_SHOAL("Fish shoal", 44), + GOLDEN_WARBLER("Golden warbler", 5), + GREATER_SIREN("Greater siren", 87), + HERBIBOAR("Herbiboar", 80), + HORNED_GRAAHK("Horned graahk", 41), + // IMP and MANIACAL_MONKEY do not have a specific hunter area + MOTTLED_EEL("Mottled eel", 68), + ORANGE_SALAMANDER("Orange salamander", 47), + POLAR_KEBBIT("Polar kebbit", 1), + PRICKLY_KEBBIT("Prickly kebbit", 37), + RAZOR_BACKED_KEBBIT("Razor-backed kebbit", 49), + RED_SALAMANDER("Red salamander", 59), + RUBY_HARVEST("Ruby harvest", 15), + SABRE_TOOTHED_KEBBIT("Sabre-toothed kebbit", 51), + SABRE_TOOTHED_KYATT("Sabre-toothed kyatt", 55), + SAPPHIRE_GLACIALIS("Sapphire glacialis", 25), + SNOWY_KNIGHT("Snowy knight", 35), + SPINED_LARUPIA("Spined larupia", 31), + SPOTTED_KEBBIT("Spotted kebbit", 43), + SWAMP_LIZARD("Swamp lizard", 29), + TROPICAL_WAGTAIL("Tropical wagtail", 19), + WHITE_RABBIT("White rabbit", 27), + WILD_KEBBIT("Wild kebbit", 23), + ; + + private String name; + private int level; + + @Override + public String toString() + { + return name + " (" + level + ")"; + } + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaPoint.java new file mode 100644 index 0000000000..2725f3de11 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/HunterAreaPoint.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020, melky + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.worldmap; + +import java.awt.image.BufferedImage; +import net.runelite.client.ui.overlay.worldmap.WorldMapPoint; + +class HunterAreaPoint extends WorldMapPoint +{ + HunterAreaPoint(HunterAreaLocation data, BufferedImage icon) + { + super(data.getLocation(), icon); + setTooltip(data.getTooltip()); + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java index 1b2103d992..25a1065b56 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java @@ -251,4 +251,15 @@ public interface WorldMapConfig extends Config { return true; } + + @ConfigItem( + keyName = WorldMapPlugin.CONFIG_KEY_HUNTER_AREA_TOOLTIPS, + name = "Show hunter area tooltips", + description = "Indicates the creatures inside a hunting area", + position = 21 + ) + default boolean hunterAreaTooltips() + { + return true; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java index 4865401cb1..1eaaf89619 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java @@ -83,6 +83,7 @@ public class WorldMapPlugin extends Plugin static final String CONFIG_KEY_RUNECRAFTING_ALTAR_ICON = "runecraftingAltarIcon"; static final String CONFIG_KEY_MINING_SITE_TOOLTIPS = "miningSiteTooltips"; static final String CONFIG_KEY_DUNGEON_TOOLTIPS = "dungeonTooltips"; + static final String CONFIG_KEY_HUNTER_AREA_TOOLTIPS = "hunterAreaTooltips"; static { @@ -338,6 +339,14 @@ public class WorldMapPlugin extends Plugin .map(value -> new DungeonPoint(value, BLANK_ICON)) .forEach(worldMapPointManager::add); } + + worldMapPointManager.removeIf(HunterAreaPoint.class::isInstance); + if (config.hunterAreaTooltips()) + { + Arrays.stream(HunterAreaLocation.values()) + .map(value -> new HunterAreaPoint(value, BLANK_ICON)) + .forEach(worldMapPointManager::add); + } } private void updateQuestStartPointIcons()