From 417927edc93518cdc3007f14f43d68e3e5a38f8f Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 23 Jun 2017 18:14:18 +0100 Subject: [PATCH 1/3] fix xp globe drawing on start screen and only draw once actual xp gained not logon events --- .../client/plugins/xpglobes/XpGlobe.java | 3 +-- .../client/plugins/xpglobes/XpGlobes.java | 7 ++++--- .../plugins/xpglobes/XpGlobesOverlay.java | 18 +++++++++--------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobe.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobe.java index 95ad93f3ef..8ff8ec82bd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobe.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobe.java @@ -38,13 +38,12 @@ public class XpGlobe private Instant time; private double skillProgressRadius; - public XpGlobe(Skill skill, int currentXp, int currentLevel, int goalXp, Instant time) + public XpGlobe(Skill skill, int currentXp, int currentLevel, int goalXp) { this.skill = skill; this.currentXp = currentXp; this.currentLevel = currentLevel; this.goalXp = goalXp; - this.time = time; } public Skill getSkill() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobes.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobes.java index e62c655abd..2309cf1c44 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobes.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobes.java @@ -105,13 +105,14 @@ public class XpGlobes extends Plugin cachedGlobe.setGoalXp(goalXp); cachedGlobe.setTime(Instant.now()); cachedGlobe.setSkillProgressRadius(startingXp, currentXp, goalXp); + + this.addXpGlobe(globeCache[skillIdx], MAXIMUM_SHOWN_GLOBES); } else { - globeCache[skillIdx] = new XpGlobe(skill, currentXp, currentLevel, goalXp, Instant.now()); + //dont draw non cached globes, this is triggered on login to setup all of the initial values + globeCache[skillIdx] = new XpGlobe(skill, currentXp, currentLevel, goalXp); } - - this.addXpGlobe(globeCache[skillIdx], MAXIMUM_SHOWN_GLOBES); } public List getXpGlobes() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java index 05d62fa1bc..02035f35b0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java @@ -84,20 +84,20 @@ public class XpGlobesOverlay extends Overlay return null; } + //check the width of the client if we can draw properly + int clientWidth = client.isResized() ? client.getClientWidth() : client.getViewportHeight(); + if (clientWidth <= 0) + { + return null; + } + int queueSize = plugin.getXpGlobesSize(); if (queueSize > 0) { List xpChangedQueue = plugin.getXpGlobes(); int markersLength = (queueSize * (DEFAULT_CIRCLE_WIDTH)) + ((MINIMUM_STEP_WIDTH - DEFAULT_CIRCLE_WIDTH) * (queueSize - 1)); - int startDrawX; - if (client.isResized()) - { - startDrawX = (client.getClientWidth() - markersLength) / 2; - } - else - { - startDrawX = (client.getViewportHeight() - markersLength) / 2; - } + int startDrawX = (clientWidth - markersLength) / 2; + for (XpGlobe xpGlobe : xpChangedQueue) { renderProgressCircle(graphics, xpGlobe, startDrawX, DEFAULT_START_Y); From 60eb6fe99d96f21bbc20398a4df27c597162eb36 Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 23 Jun 2017 18:30:07 +0100 Subject: [PATCH 2/3] only draw fps when we have an x value for the xp orb --- .../java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java index d9847f8684..171da29cad 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java @@ -75,6 +75,10 @@ public class FPSOverlay extends Overlay } Rectangle2D bounds = xpOrb.getBounds().getBounds2D(); + if (bounds.getX() <= 0) + { + return null; + } int x = (int) (bounds.getX() + ((bounds.getWidth() / 2) - (fm.stringWidth(str) / 2))); int y = (int) (bounds.getY() - (fm.getHeight() / 2)); From 9e9e1268769e22eeac44498ca9abc52cb1039ccc Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 23 Jun 2017 20:22:47 +0100 Subject: [PATCH 3/3] add check for click to play screen in grounditems --- .../src/main/java/net/runelite/api/widgets/WidgetID.java | 1 + .../src/main/java/net/runelite/api/widgets/WidgetInfo.java | 4 +++- .../net/runelite/client/plugins/fpsinfo/FPSOverlay.java | 2 +- .../client/plugins/grounditems/GroundItemsOverlay.java | 6 ++++++ 4 files changed, 11 insertions(+), 2 deletions(-) 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 a4fca7769e..2ab6c14f69 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 @@ -31,6 +31,7 @@ class WidgetID static final int PESTRCONTROL_GROUP_ID = 408; static final int CLAN_CHAT_GROUP_ID = 7; static final int MINIMAP_GROUP_ID = 160; + static final int LOGIN_CLICK_TO_PLAY_GROUP_ID = 378; static class PestControl { 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 9291e1ed8e..6a5690e300 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 @@ -49,7 +49,9 @@ public enum WidgetInfo BANK_ITEM_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.ITEM_CONTAINER), - MINIMAP_XP_ORG(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.XP_ORB); + MINIMAP_XP_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.XP_ORB), + + LOGIN_CLICK_TO_PLAY_SCREEN(WidgetID.LOGIN_CLICK_TO_PLAY_GROUP_ID, 0); private final int groupId; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java index 171da29cad..ee5ee850ab 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fpsinfo/FPSOverlay.java @@ -68,7 +68,7 @@ public class FPSOverlay extends Overlay FontMetrics fm = graphics.getFontMetrics(); String str = String.valueOf(client.getFPS()); - Widget xpOrb = client.getWidget(WidgetInfo.MINIMAP_XP_ORG); + Widget xpOrb = client.getWidget(WidgetInfo.MINIMAP_XP_ORB); if (xpOrb == null) { return null; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java index f06d2a1fd8..e5e255cc4e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java @@ -96,6 +96,12 @@ public class GroundItemsOverlay extends Overlay return null; } + //if the player is logged in but viewing the click to play screen exit + if (client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null) + { + return null; + } + //Widget bank = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER); //if (bank != null && !bank.isHidden()) //{