diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java index 3256a9c405..46dce32017 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java @@ -50,8 +50,12 @@ public interface Widget int getRelativeX(); + void setRelativeX(int x); + int getRelativeY(); + void setRelativeY(int y); + String getText(); void setText(String text); diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index d5ef8d902c..d6f0718f4c 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -136,7 +136,9 @@ class WidgetID static class Minimap { static final int XP_ORB = 1; - static final int QUICK_PRAYER_ORB = 14; + static final int PRAYER_ORB = 12; + static final int QUICK_PRAYER_ORB = 14; // Has the "Quick-prayers" name + static final int RUN_ORB = 20; } static class Viewport diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index 3f1e7cbd60..cfe0665fc6 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -88,6 +88,8 @@ public enum WidgetInfo SHOP_INVENTORY_ITEMS_CONTAINER(WidgetID.SHOP_INVENTORY_GROUP_ID, WidgetID.Shop.INVENTORY_ITEM_CONTAINER), MINIMAP_XP_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.XP_ORB), + MINIMAP_PRAYER_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.PRAYER_ORB), + MINIMAP_RUN_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.RUN_ORB), LOGIN_CLICK_TO_PLAY_SCREEN(WidgetID.LOGIN_CLICK_TO_PLAY_GROUP_ID, 0), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specorb/SpecOrbOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/specorb/SpecOrbOverlay.java index 6c5c107f8f..3355c2a3db 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specorb/SpecOrbOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specorb/SpecOrbOverlay.java @@ -44,8 +44,8 @@ public class SpecOrbOverlay extends Overlay { private static final int RECHARGE_TIME_TICKS = 51; - private static final int ORB_X_OFFSET = 60; - private static final int ORB_Y_OFFSET = 123; + private static final int ORB_X_OFFSET = 33; + private static final int ORB_Y_OFFSET = 25; private static final Color SPECIAL_ORB_BACKGROUND_COLOR = new Color(51, 102, 255); private static final Color SPECIAL_ORB_RECHARGE_COLOR = new Color(153, 204, 255, 50); @@ -72,19 +72,60 @@ public class SpecOrbOverlay extends Overlay return null; } - Widget xpOrb = client.getWidget(WidgetInfo.MINIMAP_XP_ORB); - if (xpOrb == null) + Widget prayerOrb = client.getWidget(WidgetInfo.MINIMAP_PRAYER_ORB); + if (prayerOrb == null) { return null; } + Widget runOrb = client.getWidget(WidgetInfo.MINIMAP_RUN_ORB); + if (runOrb == null) + { + return null; + } + + if (client.isResized()) + { + if (prayerOrb.getRelativeY() != 73) + { + prayerOrb.setRelativeY(73); + } + + if (runOrb.getRelativeX() != 12) + { + runOrb.setRelativeX(12); + } + + if (runOrb.getRelativeY() != 108) + { + runOrb.setRelativeY(108); + } + } + else + { + if (prayerOrb.getRelativeY() != 71) + { + prayerOrb.setRelativeY(71); + } + + if (runOrb.getRelativeX() != 12) + { + runOrb.setRelativeX(12); + } + + if (runOrb.getRelativeY() != 103) + { + runOrb.setRelativeY(103); + } + } + graphics.setColor(SPECIAL_ORB_BACKGROUND_COLOR); boolean specialAttackEnabled = client.getSetting(Varbits.SPECIAL_ATTACK_ENABLED) == 1; - // draw relative to the xp orb - Point xpOrbPoint = xpOrb.getCanvasLocation(); - Point specOrbPoint = new Point(xpOrbPoint.getX() + ORB_X_OFFSET, xpOrbPoint.getY() + ORB_Y_OFFSET); + // draw relative to run orb + Point runOrbPoint = runOrb.getCanvasLocation(); + Point specOrbPoint = new Point(runOrbPoint.getX() + ORB_X_OFFSET, runOrbPoint.getY() + ORB_Y_OFFSET); double specialPercent = client.getSetting(Varbits.SPECIAL_ATTACK_PERCENT) / 1000.0; double specialRechargePercent = tickCounter / (double) RECHARGE_TIME_TICKS; diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java index 739779a0ff..ef806ae40b 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java @@ -94,7 +94,7 @@ public class OverlayUtil // draw background graphics.drawImage(minimapOrbBackground, pos.getX(), pos.getY(), null); // draw overlay - graphics.drawImage(overlayImage, pos.getX() + 32, pos.getY() + 9, null); + graphics.drawImage(overlayImage, pos.getX() + 33, pos.getY() + 10, null); drawOrbAmount(graphics, pos, amount);//draw number on orb @@ -117,7 +117,7 @@ public class OverlayUtil FontMetrics fm = graphics.getFontMetrics(); String numberString = Integer.toString(amount); - Point numberPos = new Point(pos.getX() + 22 - fm.stringWidth(numberString), pos.getY() + 26); + Point numberPos = new Point(pos.getX() + 24 - fm.stringWidth(numberString), pos.getY() + 27); graphics.setColor(Color.black); graphics.drawString(numberString, numberPos.getX() + 1, numberPos.getY() + 1);//black shadow on text graphics.setColor(Color.green); diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/specorb/minimap_orb_background.png b/runelite-client/src/main/resources/net/runelite/client/plugins/specorb/minimap_orb_background.png index 8c94c4b09f..50b4192c19 100644 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/specorb/minimap_orb_background.png and b/runelite-client/src/main/resources/net/runelite/client/plugins/specorb/minimap_orb_background.png differ diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java index fafa22496d..456bea52ca 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java @@ -82,10 +82,18 @@ public interface RSWidget extends Widget @Override int getRelativeX(); + @Import("relativeX") + @Override + void setRelativeX(int x); + @Import("relativeY") @Override int getRelativeY(); + @Import("relativeY") + @Override + void setRelativeY(int y); + @Import("width") @Override int getWidth();