From 04cd19560790a2b8258322124158158f599b81d2 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Sun, 22 Sep 2024 22:00:55 +0100 Subject: [PATCH] #285 - Fix MTA points over 1k being reset by arena widgets & update MTA points from lobby widget --- .../minigames/MageTrainingArena.java | 35 ++++++++++++------- .../minigames/MageTrainingArenaPoint.java | 5 +-- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArena.java b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArena.java index 8171b96..dac3240 100644 --- a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArena.java +++ b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArena.java @@ -28,6 +28,7 @@ public class MageTrainingArena extends MinigamesStorage { private final Map pointData = new HashMap<>(); private Widget shopWidget = null; + private boolean lobbyWidgetOpen; MageTrainingArena(DudeWheresMyStuffPlugin plugin) { super(MinigamesStorageType.MAGE_TRAINING_ARENA, plugin); @@ -37,10 +38,10 @@ public class MageTrainingArena extends MinigamesStorage { items.add(enchantmentPoints); items.add(alchemistPoints); - pointData.put(telekineticPoints, new MageTrainingArenaPoint(198, 261)); - pointData.put(alchemistPoints, new MageTrainingArenaPoint(194, 262)); - pointData.put(enchantmentPoints, new MageTrainingArenaPoint(195, 263)); - pointData.put(graveyardPoints, new MageTrainingArenaPoint(196, 264)); + pointData.put(telekineticPoints, new MageTrainingArenaPoint(198, 261, 10)); + pointData.put(alchemistPoints, new MageTrainingArenaPoint(194, 262, 11)); + pointData.put(enchantmentPoints, new MageTrainingArenaPoint(195, 263, 12)); + pointData.put(graveyardPoints, new MageTrainingArenaPoint(196, 264, 13)); } @Override @@ -52,6 +53,8 @@ public boolean onGameTick() { public boolean onWidgetLoaded(WidgetLoaded widgetLoaded) { if (widgetLoaded.getGroupId() == 197) { shopWidget = plugin.getClient().getWidget(197, 0); + } else if (widgetLoaded.getGroupId() == 553) { + lobbyWidgetOpen = true; } else { pointData.forEach( (itemStack, pointDatum) -> { @@ -70,6 +73,8 @@ public boolean onWidgetLoaded(WidgetLoaded widgetLoaded) { public void onWidgetClosed(WidgetClosed widgetClosed) { if (widgetClosed.getGroupId() == 197) { shopWidget = null; + } else if (widgetClosed.getGroupId() == 553) { + lobbyWidgetOpen = false; } else { pointData.forEach( (itemStack, pointDatum) -> { @@ -88,12 +93,23 @@ boolean updateFromWidgets() { pointData.forEach( (itemStack, pointDatum) -> { int newPoints = plugin.getClient().getVarpValue(pointDatum.getVarpId()); - if (newPoints == pointDatum.getLastVarpValue()) { + itemStack.setQuantity(newPoints); + }); + + return true; + } + + if (lobbyWidgetOpen) { + lastUpdated = System.currentTimeMillis(); + pointData.forEach( + (itemStack, pointDatum) -> { + Widget widget = plugin.getClient().getWidget(553, pointDatum.getLobbyWidgetId()); + if (widget == null) { return; } + int newPoints = NumberUtils.toInt(widget.getText().replace(",", ""), 0); itemStack.setQuantity(newPoints); - pointDatum.lastVarpValue = newPoints; }); return true; @@ -109,13 +125,8 @@ boolean updateFromWidgets() { updated.set(true); lastUpdated = System.currentTimeMillis(); - int newPoints = NumberUtils.toInt(pointDatum.getWidget().getText(), 0); - if (newPoints == pointDatum.getLastWidgetValue()) { - return; - } - + int newPoints = NumberUtils.toInt(pointDatum.getWidget().getText().replace(",", ""), 0); itemStack.setQuantity(newPoints); - pointDatum.lastWidgetValue = newPoints; }); return updated.get(); diff --git a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArenaPoint.java b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArenaPoint.java index 70c78cf..a14ec38 100644 --- a/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArenaPoint.java +++ b/src/main/java/dev/thource/runelite/dudewheresmystuff/minigames/MageTrainingArenaPoint.java @@ -10,13 +10,10 @@ class MageTrainingArenaPoint { final int widgetId; final int varpId; - int lastWidgetValue = 0; - int lastVarpValue = 0; + final int lobbyWidgetId; Widget widget = null; void reset() { - lastWidgetValue = 0; - lastVarpValue = 0; widget = null; } }