From fcacf4deeb9050d39922d03b599719e69209a5a8 Mon Sep 17 00:00:00 2001 From: LlemonDuck Date: Fri, 10 Jun 2022 22:50:25 -0400 Subject: [PATCH] slayer: expose slayer task data in service Co-authored-by: OSRS-Athan <67913155+osrs-athan@users.noreply.github.com> --- .../client/plugins/slayer/SlayerPlugin.java | 7 ++ .../plugins/slayer/SlayerPluginService.java | 49 +++++++++++++ .../slayer/SlayerPluginServiceImpl.java | 72 +++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginService.java create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginServiceImpl.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java index f47c9b9483..43a945d96e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.slayer; import com.google.common.annotations.VisibleForTesting; +import com.google.inject.Binder; import com.google.inject.Provides; import java.awt.Color; import java.awt.image.BufferedImage; @@ -222,6 +223,12 @@ public class SlayerPlugin extends Plugin return null; }; + @Override + public void configure(Binder binder) + { + binder.bind(SlayerPluginService.class).to(SlayerPluginServiceImpl.class); + } + @Override protected void startUp() throws Exception { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginService.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginService.java new file mode 100644 index 0000000000..814542a7fb --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginService.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2022, Adam + * 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 OWNER 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.slayer; + +import java.util.List; +import javax.annotation.Nullable; +import net.runelite.api.NPC; + +public interface SlayerPluginService +{ + /** + * Get targets for current slayer task + * + * @return pattern list of target npc + */ + List getTargets(); + + @Nullable + String getTask(); + + @Nullable + String getTaskLocation(); + + int getInitialAmount(); + + int getRemainingAmount(); +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginServiceImpl.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginServiceImpl.java new file mode 100644 index 0000000000..9fd7efa46a --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPluginServiceImpl.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2022, Adam + * 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 OWNER 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.slayer; + +import java.util.List; +import javax.inject.Inject; +import javax.inject.Singleton; +import net.runelite.api.NPC; + +@Singleton +class SlayerPluginServiceImpl implements SlayerPluginService +{ + private final SlayerPlugin plugin; + + @Inject + private SlayerPluginServiceImpl(final SlayerPlugin plugin) + { + this.plugin = plugin; + } + + @Override + public List getTargets() + { + return plugin.getTargets(); + } + + @Override + public String getTask() + { + return plugin.getTaskName(); + } + + @Override + public String getTaskLocation() + { + return plugin.getTaskLocation(); + } + + @Override + public int getInitialAmount() + { + return plugin.getInitialAmount(); + } + + @Override + public int getRemainingAmount() + { + return plugin.getAmount(); + } +} \ No newline at end of file