diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java index 5f9133e9fa..40a7efc1f8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java @@ -24,6 +24,7 @@ */ package net.runelite.client.plugins.hiscore; +import java.awt.event.MouseAdapter; import static net.runelite.http.api.hiscore.HiscoreSkill.*; import com.google.common.base.Strings; import java.awt.BorderLayout; @@ -94,6 +95,8 @@ public class HiscorePanel extends PluginPanel private final ButtonGroup endpointButtonGroup = new ButtonGroup(); private final JTextArea details = new JTextArea(); + private List endpointButtons; + private final HiscoreClient client = new HiscoreClient(); private HiscoreResult result; @@ -217,30 +220,33 @@ public class HiscorePanel extends PluginPanel JPanel endpointPanel = new JPanel(); endpointPanel.setBorder(subPanelBorder); - List endpointButtons = new ArrayList<>(); - + endpointButtons = new ArrayList<>(); for (HiscoreEndpoint endpoint : HiscoreEndpoint.values()) { try { BufferedImage iconImage; - BufferedImage selectedImage; synchronized (ImageIO.class) { iconImage = ImageIO.read(HiscorePanel.class.getResourceAsStream( endpoint.name().toLowerCase() + ".png")); - selectedImage = ImageIO.read(HiscorePanel.class.getResourceAsStream( - endpoint.name().toLowerCase() + "_selected.png")); } JToggleButton button = new JToggleButton(); button.setIcon(new ImageIcon(iconImage)); - button.setSelectedIcon(new ImageIcon(selectedImage)); button.setPreferredSize(new Dimension(24, 24)); button.setBackground(Color.WHITE); button.setFocusPainted(false); button.setActionCommand(endpoint.name()); button.setToolTipText(endpoint.getName() + " Hiscores"); button.addActionListener((e -> executor.execute(this::lookup))); + button.addMouseListener(new MouseAdapter() + { + @Override + public void mouseReleased(MouseEvent e) + { + updateButtons(); + } + }); endpointButtons.add(button); endpointButtonGroup.add(button); endpointPanel.add(button); @@ -252,6 +258,7 @@ public class HiscorePanel extends PluginPanel } endpointButtons.get(0).setSelected(true); + endpointButtons.get(0).setBackground(Color.CYAN); c.gridx = 0; c.gridy = 5; @@ -318,7 +325,7 @@ public class HiscorePanel extends PluginPanel + "Rank: " + rank; break; } - default: + case "Overall": { Skill requestedSkill = result.getSkill(skill); String rank = (requestedSkill.getRank() == -1) ? "Unranked" : NUMBER_FORMATTER.format(requestedSkill.getRank()); @@ -328,6 +335,27 @@ public class HiscorePanel extends PluginPanel + "Experience: " + exp; break; } + default: + { + Skill requestedSkill = result.getSkill(skill); + String rank = (requestedSkill.getRank() == -1) ? "Unranked" : NUMBER_FORMATTER.format(requestedSkill.getRank()); + String exp = (requestedSkill.getRank() == -1) ? "Unranked" : NUMBER_FORMATTER.format(requestedSkill.getExperience()); + String remainingXp; + if (requestedSkill.getRank() == -1) + { + remainingXp = "Unranked"; + } + else + { + int currentLevel = Experience.getLevelForXp((int) requestedSkill.getExperience()); + remainingXp = (currentLevel + 1 <= Experience.MAX_VIRT_LEVEL) ? NUMBER_FORMATTER.format(Experience.getXpForLevel(currentLevel + 1) - requestedSkill.getExperience()) : "0"; + } + text = "Skill: " + skillName + System.lineSeparator() + + "Rank: " + rank + System.lineSeparator() + + "Experience: " + exp + System.lineSeparator() + + "Remaining XP: " + remainingXp; + break; + } } details.setFont(UIManager.getFont("Label.font")); @@ -395,6 +423,7 @@ public class HiscorePanel extends PluginPanel private void lookup() { String lookup = input.getText(); + details.setText("Loading..."); lookup = sanitize(lookup); @@ -418,6 +447,7 @@ public class HiscorePanel extends PluginPanel catch (IOException ex) { log.warn("Error fetching Hiscore data " + ex.getMessage()); + details.setText("Error fetching Hiscore data"); return; } @@ -457,4 +487,21 @@ public class HiscorePanel extends PluginPanel { return lookup.replace('\u00A0', ' '); } + + private void updateButtons() + { + for (JToggleButton button : endpointButtons) + { + Color color; + if (button.isSelected()) + { + color = Color.CYAN; + } + else + { + color = Color.WHITE; + } + button.setBackground(color); + } + } } diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/deadman_selected.png b/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/deadman_selected.png deleted file mode 100644 index bca0e8dc55..0000000000 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/deadman_selected.png and /dev/null differ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/hardcore_ironman_selected.png b/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/hardcore_ironman_selected.png deleted file mode 100644 index 1cbae387af..0000000000 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/hardcore_ironman_selected.png and /dev/null differ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/ironman_selected.png b/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/ironman_selected.png deleted file mode 100644 index 56acded1ba..0000000000 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/ironman_selected.png and /dev/null differ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/normal_selected.png b/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/normal_selected.png deleted file mode 100644 index fbee92c847..0000000000 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/normal_selected.png and /dev/null differ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/seasonal_deadman_selected.png b/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/seasonal_deadman_selected.png deleted file mode 100644 index ae6c4820e1..0000000000 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/seasonal_deadman_selected.png and /dev/null differ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/ultimate_ironman_selected.png b/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/ultimate_ironman_selected.png deleted file mode 100644 index d171215c16..0000000000 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/hiscore/ultimate_ironman_selected.png and /dev/null differ