From 8873725206e114f38beeb07d914faf01d8190f80 Mon Sep 17 00:00:00 2001 From: Thource Date: Sun, 2 Apr 2023 19:19:40 +0100 Subject: [PATCH] Add Minigame storage - Giants' Foundry --- .gitignore | 3 + .idea/compiler.xml | 15 ---- .idea/jarRepositories.xml | 30 -------- .idea/misc.xml | 69 ------------------- .../minigames/GiantsFoundry.java | 54 +++++++++++++++ .../minigames/MinigamesStorageManager.java | 1 + .../minigames/MinigamesStorageType.java | 3 +- 7 files changed, 60 insertions(+), 115 deletions(-) delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/jarRepositories.xml delete mode 100644 .idea/misc.xml create mode 100644 src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/GiantsFoundry.java diff --git a/.gitignore b/.gitignore index ad8fcd3..2c75cab 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ nbproject/ .idea/modules/**/*.iml .idea/libraries/**/*.xml .idea/sonarlint +.idea/compiler.xml +.idea/jarRepositories.xml +.idea/misc.xml \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index ef52e1d..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 0e9c84b..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 7f30c24..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/GiantsFoundry.java b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/GiantsFoundry.java new file mode 100644 index 0000000..18d17e0 --- /dev/null +++ b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/GiantsFoundry.java @@ -0,0 +1,54 @@ +package dev.thource.runelite.dudewheresmystuff.minigames; + +import dev.thource.runelite.dudewheresmystuff.DudeWheresMyStuffPlugin; +import dev.thource.runelite.dudewheresmystuff.ItemStack; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import lombok.Getter; +import net.runelite.api.ItemID; +import net.runelite.api.widgets.Widget; +import org.apache.commons.lang3.math.NumberUtils; + +/** GiantsFoundry is responsible for tracking the player's Giants' Foundry points. */ +@Getter +public class GiantsFoundry extends MinigamesStorage { + + private static final Pattern HAND_IN_PATTERN = Pattern.compile("at quality: (\\d+)"); + + private final ItemStack points = + new ItemStack(ItemID.COLOSSAL_BLADE, "Points", 0, 0, 0, true); + private boolean didJustHandIn = false; + + GiantsFoundry(DudeWheresMyStuffPlugin plugin) { + super(MinigamesStorageType.GIANTS_FOUNDRY, plugin); + + items.add(points); + } + + @Override + public boolean onGameTick() { + Widget shopWidget = plugin.getClient().getWidget(753, 13); + if (shopWidget != null) { + points.setQuantity(Integer.parseInt(shopWidget.getText())); + lastUpdated = System.currentTimeMillis(); + return true; + } + + Widget chatWidget = plugin.getClient().getWidget(229, 1); + if (chatWidget != null) { + if (!didJustHandIn) { + Matcher matcher = HAND_IN_PATTERN.matcher(chatWidget.getText()); + if (matcher.find()) { + points.setQuantity(points.getQuantity() + NumberUtils.toInt(matcher.group(1))); + lastUpdated = System.currentTimeMillis(); + didJustHandIn = true; + return true; + } + } + } else { + didJustHandIn = false; + } + + return false; + } +} diff --git a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageManager.java b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageManager.java index 885fc32..3c1f256 100644 --- a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageManager.java +++ b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageManager.java @@ -23,6 +23,7 @@ private MinigamesStorageManager(DudeWheresMyStuffPlugin plugin) { storages.add(new MahoganyHomes(plugin)); storages.add(new Slayer(plugin)); storages.add(new PestControl(plugin)); + storages.add(new GiantsFoundry(plugin)); } @Override diff --git a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageType.java b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageType.java index 0dcefc3..cbb1f00 100644 --- a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageType.java +++ b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MinigamesStorageType.java @@ -20,7 +20,8 @@ public enum MinigamesStorageType implements StorageType { TEMPOROSS("Tempoross", true, "tempoross"), SLAYER("Slayer", true, "slayer"), SOUL_WARS("Soul Wars", true, "soulwars"), - MAHOGANY_HOMES("Mahogany Homes", false, "mahoganyhomes"); + MAHOGANY_HOMES("Mahogany Homes", false, "mahoganyhomes"), + GIANTS_FOUNDRY("Giants' Foundry", false, "giantsfoundry"); private final String name; private final int itemContainerId = -1;