From 46d66d7823cd8dcd20fd29a3664f87a6c39e8556 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 2 Apr 2018 08:05:57 -0400 Subject: [PATCH] Change MenuEntry type to int We don't have all of the types in MenuAction and it causes them to get mapped to UNKNOWN when translated back and forth with the API --- .../java/net/runelite/api/MenuAction.java | 24 ++++--- .../main/java/net/runelite/api/MenuEntry.java | 65 ++----------------- .../runelite/client/menus/MenuManager.java | 2 +- .../plugins/itemprices/ItemPricesOverlay.java | 2 +- .../net/runelite/mixins/RSClientMixin.java | 4 +- 5 files changed, 23 insertions(+), 74 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/MenuAction.java b/runelite-api/src/main/java/net/runelite/api/MenuAction.java index 379df24212..8b3d88c8fc 100644 --- a/runelite-api/src/main/java/net/runelite/api/MenuAction.java +++ b/runelite-api/src/main/java/net/runelite/api/MenuAction.java @@ -24,6 +24,9 @@ */ package net.runelite.api; +import java.util.HashMap; +import java.util.Map; + public enum MenuAction { /** @@ -257,12 +260,22 @@ public enum MenuAction FOLLOW(2046), TRADE(2047), - + /** * Menu action triggered when the id is not defined in this class. */ UNKNOWN(-1); + private static final Map map = new HashMap<>(); + + static + { + for (MenuAction menuAction : values()) + { + map.put(menuAction.getId(), menuAction); + } + } + private final int id; MenuAction(int id) @@ -277,13 +290,6 @@ public enum MenuAction public static MenuAction of(int id) { - for (MenuAction action : values()) - { - if (action.id == id) - { - return action; - } - } - return UNKNOWN; + return map.getOrDefault(id, UNKNOWN); } } diff --git a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java index dccdfcf3dd..ad80d27920 100644 --- a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java +++ b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java @@ -24,12 +24,15 @@ */ package net.runelite.api; +import lombok.Data; + +@Data public class MenuEntry { private String option; private String target; private int identifier; - private MenuAction type; + private int type; private int param0; private int param1; @@ -39,64 +42,4 @@ public class MenuEntry return "MenuEntry{" + "option=" + option + ", target=" + target + ", identifier=" + identifier + ", type=" + type + ", param0=" + param0 + ", param1=" + param1 + '}'; } - public String getOption() - { - return option; - } - - public void setOption(String option) - { - this.option = option; - } - - public String getTarget() - { - return target; - } - - public void setTarget(String target) - { - this.target = target; - } - - public int getIdentifier() - { - return identifier; - } - - public void setIdentifier(int identifier) - { - this.identifier = identifier; - } - - public MenuAction getType() - { - return type; - } - - public void setType(MenuAction type) - { - this.type = type; - } - - public int getParam0() - { - return param0; - } - - public void setParam0(int param0) - { - this.param0 = param0; - } - - public int getParam1() - { - return param1; - } - - public void setParam1(int param1) - { - this.param1 = param1; - } - } diff --git a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java index d5e5434013..15ff1ed1df 100644 --- a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java +++ b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java @@ -183,7 +183,7 @@ public class MenuManager menuEntry.setOption(currentMenu.getMenuOption()); menuEntry.setParam1(widgetId); menuEntry.setTarget(currentMenu.getMenuTarget()); - menuEntry.setType(MenuAction.RUNELITE); + menuEntry.setType(MenuAction.RUNELITE.getId()); client.setMenuEntries(menuEntries); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesOverlay.java index a45763da83..b4de20797d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesOverlay.java @@ -88,7 +88,7 @@ class ItemPricesOverlay extends Overlay } final MenuEntry menuEntry = menuEntries[last]; - final MenuAction action = menuEntry.getType(); + final MenuAction action = MenuAction.of(menuEntry.getType()); final int widgetId = menuEntry.getParam1(); final int groupId = WidgetInfo.TO_GROUP(widgetId); diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 5ca195f05f..0237aa6e54 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -327,7 +327,7 @@ public abstract class RSClientMixin implements RSClient entry.setOption(menuOptions[i]); entry.setTarget(menuTargets[i]); entry.setIdentifier(menuIdentifiers[i]); - entry.setType(MenuAction.of(menuTypes[i])); + entry.setType(menuTypes[i]); entry.setParam0(params0[i]); entry.setParam1(params1[i]); } @@ -351,7 +351,7 @@ public abstract class RSClientMixin implements RSClient menuOptions[count] = entry.getOption(); menuTargets[count] = entry.getTarget(); menuIdentifiers[count] = entry.getIdentifier(); - menuTypes[count] = entry.getType().getId(); + menuTypes[count] = entry.getType(); params0[count] = entry.getParam0(); params1[count] = entry.getParam1(); ++count;