Use menumanager for easyscape enum config swaps, fix up rc and custom swaps (#351)

* Use menumanager for easyscape enum config swaps, fix up rc

* Make essence pouches left click empty in inventory
This commit is contained in:
Lucwousin
2019-05-21 23:18:48 +02:00
committed by Kyleeld
parent c18f13e2ab
commit e3b3d9115e
7 changed files with 234 additions and 102 deletions

View File

@@ -223,7 +223,8 @@ public class MenuManager
if (foundSwap != null) if (foundSwap != null)
{ {
if (swapTarget.getType() != -1 && newestEntry.getType() != foundSwap.getType()) // This is to make things like games necklace and essence pouches show up right
if (foundSwap.getType() == MenuAction.EXAMINE_ITEM_BANK_EQ.getId())
{ {
int newType = foundSwap.getType(); int newType = foundSwap.getType();
@@ -485,9 +486,9 @@ public class MenuManager
} }
/** /**
* Adds to the map of swaps. - Strict option + target * Adds to the map of swaps.
*/ */
public void addSwap(String option, String target, String option2, String target2) public void addSwap(String option, String target, String option2, String target2, boolean strictOption, boolean strictTarget)
{ {
option = Text.standardize(option); option = Text.standardize(option);
target = Text.standardize(target); target = Text.standardize(target);
@@ -495,8 +496,8 @@ public class MenuManager
option2 = Text.standardize(option2); option2 = Text.standardize(option2);
target2 = Text.standardize(target2); target2 = Text.standardize(target2);
AbstractMenuEntry swapFrom = new AbstractMenuEntry(option, target); AbstractMenuEntry swapFrom = new AbstractMenuEntry(option, target, -1, -1, strictOption, strictTarget);
AbstractMenuEntry swapTo = new AbstractMenuEntry(option2, target2); AbstractMenuEntry swapTo = new AbstractMenuEntry(option2, target2, -1, -1, strictOption, strictTarget);
if (swapTo.equals(swapFrom)) if (swapTo.equals(swapFrom))
{ {
@@ -507,6 +508,34 @@ public class MenuManager
swaps.put(swapFrom, swapTo); swaps.put(swapFrom, swapTo);
} }
public void removeSwap(String option, String target, String option2, String target2, boolean strictOption, boolean strictTarget)
{
option = Text.standardize(option);
target = Text.standardize(target);
option2 = Text.standardize(option2);
target2 = Text.standardize(target2);
AbstractMenuEntry swapFrom = new AbstractMenuEntry(option, target, -1, -1, strictOption, strictTarget);
AbstractMenuEntry swapTo = new AbstractMenuEntry(option2, target2, -1, -1, strictOption, strictTarget);
removeSwap(swapFrom, swapTo);
}
/**
* Adds to the map of swaps. - Strict option + target
*/
public void addSwap(String option, String target, String option2, String target2)
{
addSwap(option, target, option2, target2, false, false);
}
public void removeSwap(String option, String target, String option2, String target2)
{
removeSwap(option, target, option2, target2, false, false);
}
/** /**
* Adds to the map of swaps - Pre-baked Abstract entry * Adds to the map of swaps - Pre-baked Abstract entry
*/ */
@@ -571,20 +600,6 @@ public class MenuManager
} }
} }
public void removeSwap(String option, String target, String option2, String target2)
{
option = Text.standardize(option);
target = Text.standardize(target);
option2 = Text.standardize(option2);
target2 = Text.standardize(target2);
AbstractMenuEntry swapFrom = new AbstractMenuEntry(option, target);
AbstractMenuEntry swapTo = new AbstractMenuEntry(option2, target2);
removeSwap(swapFrom, swapTo);
}
public void removeSwap(AbstractMenuEntry swapFrom, AbstractMenuEntry swapTo) public void removeSwap(AbstractMenuEntry swapFrom, AbstractMenuEntry swapTo)
{ {
Set<AbstractMenuEntry> toRemove = new HashSet<>(); Set<AbstractMenuEntry> toRemove = new HashSet<>();
@@ -601,4 +616,27 @@ public class MenuManager
swaps.remove(entry); swaps.remove(entry);
} }
} }
/**
* Removes all swaps with target
*/
public void removeSwaps(String withTarget)
{
withTarget = Text.standardize(withTarget);
Set<AbstractMenuEntry> toRemove = new HashSet<>();
for (AbstractMenuEntry e : swaps.keySet())
{
if (e.getTarget().equals(withTarget))
{
toRemove.add(e);
}
}
for (AbstractMenuEntry entry : toRemove)
{
swaps.remove(entry);
}
}
} }

View File

@@ -33,6 +33,7 @@ import net.runelite.client.config.ConfigItem;
import net.runelite.client.plugins.easyscape.util.DuelingRingMode; import net.runelite.client.plugins.easyscape.util.DuelingRingMode;
import net.runelite.client.plugins.easyscape.util.GamesNecklaceMode; import net.runelite.client.plugins.easyscape.util.GamesNecklaceMode;
import net.runelite.client.plugins.easyscape.util.GloryMode; import net.runelite.client.plugins.easyscape.util.GloryMode;
import net.runelite.client.plugins.easyscape.util.MaxCapeMode;
import net.runelite.client.plugins.easyscape.util.SkillsNecklaceMode; import net.runelite.client.plugins.easyscape.util.SkillsNecklaceMode;
import net.runelite.client.plugins.easyscape.util.NecklaceOfPassageMode; import net.runelite.client.plugins.easyscape.util.NecklaceOfPassageMode;
import net.runelite.client.plugins.easyscape.util.DigsitePendantMode; import net.runelite.client.plugins.easyscape.util.DigsitePendantMode;
@@ -802,10 +803,34 @@ public interface EasyscapeConfig extends Config
default RingOfWealthMode getRingofWealthMode() default RingOfWealthMode getRingofWealthMode()
{ {
return RingOfWealthMode.GRAND_EXCHANGE; return RingOfWealthMode.GRAND_EXCHANGE;
} }
// ----------------------------------------------------------- // // ----------------------------------------------------------- //
@ConfigItem(
keyName = "swapMax",
name = "Swap max cape",
description = "Enables swapping max cape options in worn interface",
position = 59,
group = "Equipment swapper"
)
default boolean swapMax()
{
return false;
}
@ConfigItem(
keyName = "maxMode",
name = "Max cape mode",
description = "",
position = 60,
group = "Equipment swapper"
)
default MaxCapeMode maxMode()
{
return MaxCapeMode.CRAFTING_GUILD;
}
@ConfigItem( @ConfigItem(
keyName = "swapArdougneCape", keyName = "swapArdougneCape",
name = "Swap Ardougne Cape", name = "Swap Ardougne Cape",

View File

@@ -39,9 +39,11 @@ import net.runelite.api.MenuEntry;
import net.runelite.api.Player; import net.runelite.api.Player;
import static net.runelite.api.Varbits.BUILDING_MODE; import static net.runelite.api.Varbits.BUILDING_MODE;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuEntryAdded;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType; import net.runelite.client.plugins.PluginType;
@@ -66,6 +68,9 @@ public class EasyscapePlugin extends Plugin
@Inject @Inject
private EasyscapeConfig config; private EasyscapeConfig config;
@Inject
private MenuManager menuManager;
@Provides @Provides
EasyscapeConfig provideConfig(ConfigManager configManager) EasyscapeConfig provideConfig(ConfigManager configManager)
{ {
@@ -75,11 +80,13 @@ public class EasyscapePlugin extends Plugin
@Override @Override
public void startUp() public void startUp()
{ {
addSwaps();
} }
@Override @Override
public void shutDown() public void shutDown()
{ {
removeSwaps();
} }
@Subscribe @Subscribe
@@ -379,61 +386,99 @@ public class EasyscapePlugin extends Plugin
{ {
swap(client, "Teleport", option, target); swap(client, "Teleport", option, target);
} }
}
else if (config.getGamesNecklace() && target.contains("games necklace")) @Subscribe
public void onConfigChanged(ConfigChanged event)
{
if (!"easyscape".equals(event.getGroup()))
{ {
swap(client, config.getGamesNecklaceMode().toString(), option, target); return;
} }
else if (config.getDuelingRing() && target.contains("ring of dueling")) removeSwaps();
addSwaps();
}
private void addSwaps()
{
if (config.getBurningAmulet())
{ {
swap(client, config.getDuelingRingMode().toString(), option, target); menuManager.addSwap("remove", "burning amulet", config.getBurningAmuletMode().toString(), "burning amulet", true, false);
} }
else if (config.getGlory() && (target.contains("amulet of glory") || target.contains("amulet of eternal glory"))) if (config.getCombatBracelet())
{ {
swap(client, config.getGloryMode().toString(), option, target); menuManager.addSwap("remove", "combat bracelet", config.getCombatBraceletMode().toString(), "combat bracelet", true, false);
} }
else if (config.getSkillsNecklace() && target.contains("skills necklace")) if (config.getGamesNecklace())
{ {
swap(client, config.getSkillsNecklaceMode().toString(), option, target); menuManager.addSwap("remove", "games necklace", config.getGamesNecklaceMode().toString(), "games necklace", true, false);
} }
else if (config.getNecklaceofPassage() && target.contains("necklace of passage"))
{
swap(client, config.getNecklaceofPassageMode().toString(), option, target);
}
else if (config.getDigsitePendant() && target.contains("digsite pendant")) if (config.getDuelingRing())
{ {
swap(client, config.getDigsitePendantMode().toString(), option, target); menuManager.addSwap("remove", "ring of dueling", config.getDuelingRingMode().toString(), "ring of dueling", true, false);
} }
else if (config.getCombatBracelet() && target.contains("combat bracelet")) if (config.getGlory())
{ {
swap(client, config.getCombatBraceletMode().toString(), option, target); menuManager.addSwap("remove", "amulet of glory", config.getGloryMode().toString(), "amulet of glory", true, false);
} menuManager.addSwap("remove", "amulet of eternal glory", config.getGloryMode().toString(), "amulet of eternal glory", true, false);
}
else if (config.getSlayerRing() && target.contains("slayer ring")) if (config.getSkillsNecklace())
{ {
swap(client, config.getSlayerRingMode().toString(), option, target); menuManager.addSwap("remove", "skills necklace", config.getSkillsNecklaceMode().toString(), "skills necklace", true, false);
} }
else if (config.getBurningAmulet() && target.contains("burning amulet")) if (config.getNecklaceofPassage())
{ {
swap(client, config.getBurningAmuletMode().toString(), option, target); menuManager.addSwap("remove", "necklace of passage", config.getNecklaceofPassageMode().toString(), "necklace of passage", true, false);
} }
else if (config.getXericsTalisman() && target.contains("xeric's talisman")) if (config.getDigsitePendant())
{ {
swap(client, config.getXericsTalismanMode().toString(), option, target); menuManager.addSwap("remove", "digsite pendant", config.getDigsitePendantMode().toString(), "digsite pendant", true, false);
} }
else if (config.getRingofWealth() && target.contains("ring of wealth"))
{ if (config.getSlayerRing())
swap(client, config.getRingofWealthMode().toString(), option, target); {
} menuManager.addSwap("remove", "slayer ring", config.getSlayerRingMode().toString(), "slayer ring", true, false);
}
else if (config.getXericsTalisman())
{
menuManager.addSwap("remove", "xeric's talisman", config.getXericsTalismanMode().toString(), "xeric's talisman", true, false);
}
if (config.getRingofWealth())
{
menuManager.addSwap("remove", "ring of wealth", config.getRingofWealthMode().toString(), "ring of wealth", true, false);
}
if (config.swapMax())
{
menuManager.addSwap("remove", "max cape", config.maxMode().toString(), "max cape", true, false);
}
}
private void removeSwaps()
{
menuManager.removeSwaps("burning amulet");
menuManager.removeSwaps("combat bracelet");
menuManager.removeSwaps("games necklace");
menuManager.removeSwaps("ring of dueling");
menuManager.removeSwaps("amulet of glory");
menuManager.removeSwaps("amulet of eternal glory");
menuManager.removeSwaps("skills necklace");
menuManager.removeSwaps("necklace of passage");
menuManager.removeSwaps("digsite pendant");
menuManager.removeSwaps("slayer ring");
menuManager.removeSwaps("xeric's talisman");
menuManager.removeSwaps("ring of wealth");
} }
private void delete(int target) private void delete(int target)

View File

@@ -0,0 +1,26 @@
package net.runelite.client.plugins.easyscape.util;
public enum MaxCapeMode
{
WARRIORS_GUILD("Warriors' Guild"),
FISHING_TELEPORT("Fishing Teleport"),
CRAFTING_GUILD("Crafting Guild"),
TELE_TO_POH("Tele to POH"),
POH_PORTALS("POH Portals"),
OTHER_TELEPORTS("Other Teleports"),
SPELLBOOK("Spellbook"),
FEATURES("Features");
private final String name;
MaxCapeMode(String name)
{
this.name = name;
}
@Override
public String toString()
{
return name;
}
}

View File

@@ -27,7 +27,7 @@ package net.runelite.client.plugins.easyscape.util;
public enum XericsTalismanMode public enum XericsTalismanMode
{ {
XERICS_LOOKOUT("Xeric's Lookout"), XERICS_LOOKOUT("Xeric's Look-out"),
XERICS_GLADE("Xeric's Glade"), XERICS_GLADE("Xeric's Glade"),
XERICS_INFERNO("Xeric's Inferno"), XERICS_INFERNO("Xeric's Inferno"),
XERICS_HEART("Xeric's Heart"), XERICS_HEART("Xeric's Heart"),

View File

@@ -155,12 +155,16 @@ public class MenuEntrySwapperPlugin extends Plugin
{ {
enableCustomization(); enableCustomization();
} }
loadCustomSwaps(config.customSwaps());
} }
@Override @Override
public void shutDown() public void shutDown()
{ {
disableCustomization(); disableCustomization();
loadCustomSwaps(""); // Removes all custom swaps
} }
@Subscribe @Subscribe

View File

@@ -71,10 +71,7 @@ import net.runelite.client.util.Text;
) )
public class RunecraftPlugin extends Plugin public class RunecraftPlugin extends Plugin
{ {
private static final int[] CASTLE_WARS = {9776}; private static final int FIRE_ALTAR = 10315;
private static final int[] FIRE_ALTAR = {10315};
private static final String POUCH_DECAYED_NOTIFICATION_MESSAGE = "Your rune pouch has decayed."; private static final String POUCH_DECAYED_NOTIFICATION_MESSAGE = "Your rune pouch has decayed.";
private static final String POUCH_DECAYED_MESSAGE = "Your pouch has decayed through use."; private static final String POUCH_DECAYED_MESSAGE = "Your pouch has decayed through use.";
private static final List<Integer> DEGRADED_POUCHES = ImmutableList.of( private static final List<Integer> DEGRADED_POUCHES = ImmutableList.of(
@@ -82,12 +79,7 @@ public class RunecraftPlugin extends Plugin
ItemID.LARGE_POUCH_5513, ItemID.LARGE_POUCH_5513,
ItemID.GIANT_POUCH_5515 ItemID.GIANT_POUCH_5515
); );
private static final List<Integer> POUCHES = ImmutableList.of(
ItemID.SMALL_POUCH,
ItemID.MEDIUM_POUCH,
ItemID.LARGE_POUCH,
ItemID.GIANT_POUCH
);
private boolean wearingTiara; private boolean wearingTiara;
private boolean wearingCape; private boolean wearingCape;
@@ -133,6 +125,7 @@ public class RunecraftPlugin extends Plugin
overlayManager.add(abyssOverlay); overlayManager.add(abyssOverlay);
abyssOverlay.updateConfig(); abyssOverlay.updateConfig();
overlayManager.add(runecraftOverlay); overlayManager.add(runecraftOverlay);
addSwaps();
} }
@Override @Override
@@ -143,6 +136,7 @@ public class RunecraftPlugin extends Plugin
darkMage = null; darkMage = null;
degradedPouchInInventory = false; degradedPouchInInventory = false;
overlayManager.remove(runecraftOverlay); overlayManager.remove(runecraftOverlay);
removeSwaps();
} }
@Subscribe @Subscribe
@@ -155,14 +149,7 @@ public class RunecraftPlugin extends Plugin
if (event.getKey().equals("essPouch")) if (event.getKey().equals("essPouch"))
{ {
if (config.essPouch()) addSwaps();
{
menuManager.addSwap("deposit", "pouch", 2, 57, "fill", "pouch", 9, 1007);
}
else
{
menuManager.removeSwap("deposit", "pouch", 2, 57, "fill", "pouch", 9, 1007);
}
} }
abyssOverlay.updateConfig(); abyssOverlay.updateConfig();
@@ -192,47 +179,34 @@ public class RunecraftPlugin extends Plugin
{ {
final String option = Text.removeTags(entry.getOption()).toLowerCase(); final String option = Text.removeTags(entry.getOption()).toLowerCase();
final String target = Text.removeTags(entry.getTarget()).toLowerCase(); final String target = Text.removeTags(entry.getTarget()).toLowerCase();
final int id = entry.getIdentifier();
if (target.contains("ring of dueling") && option.contains("remove")) if (target.contains("ring of dueling") && option.contains("remove")) // Incompatible with easyscape
{ {
if (client.getLocalPlayer().getWorldLocation().getRegionID() != 10315) if (client.getLocalPlayer().getWorldLocation().getRegionID() != FIRE_ALTAR)
{ //changes duel ring teleport options based on location { //changes duel ring teleport options based on location
swap(client, "duel arena", option, target); swap(client, "duel arena", option, target);
} }
else if (client.getLocalPlayer().getWorldLocation().getRegionID() == 10315) else if (client.getLocalPlayer().getWorldLocation().getRegionID() == FIRE_ALTAR)
{ {
swap(client, "castle wars", option, target); swap(client, "castle wars", option, target);
} }
} }
else if (target.contains("crafting cape") && option.contains("remove")) //teleport for crafting cape
{
swap(client, "Teleport", option, target);
}
else if (target.contains("max cape") && option.contains("remove")) //teleport for max cape
{
swap(client, "Crafting Guild", option, target);
}
else if (target.contains("altar") && option.contains("craft")) // Don't accidentally click the altar to craft else if (target.contains("altar") && option.contains("craft")) // Don't accidentally click the altar to craft
{ {
hide(option, target, true); hide(option, target);
} }
else if (target.contains("pure") && option.contains("use")) // Don't accidentally use pure essence on altar else if (target.contains("pure") && option.contains("use")) // Don't accidentally use pure essence on altar
{ {
hide("use", target, true); hide("use", target);
hide("drop", target, true); hide("drop", target);
}
else if (option.equals("fill") && id != 9)
{
swap(client, "empty", option, target);
} }
} }
} }
private void hide(String option, String target, boolean contains) private void hide(String option, String target)
{ {
final MenuEntry[] entries = client.getMenuEntries(); final MenuEntry[] entries = client.getMenuEntries();
int index = searchIndex(entries, option, target, contains); int index = searchIndex(entries, option, target);
if (index < 0) if (index < 0)
{ {
return; return;
@@ -255,7 +229,7 @@ public class RunecraftPlugin extends Plugin
client.setMenuEntries(newEntries); client.setMenuEntries(newEntries);
} }
private int searchIndex(MenuEntry[] entries, String option, String target, boolean contains) private int searchIndex(MenuEntry[] entries, String option, String target)
{ {
for (int i = entries.length - 1; i >= 0; i--) for (int i = entries.length - 1; i >= 0; i--)
{ {
@@ -264,7 +238,7 @@ public class RunecraftPlugin extends Plugin
String entryTarget = Text.removeTags(entry.getTarget()).toLowerCase(); String entryTarget = Text.removeTags(entry.getTarget()).toLowerCase();
if (entryOption.contains(option.toLowerCase()) if (entryOption.contains(option.toLowerCase())
&& (entryTarget.equals(target) || (entryTarget.contains(target) && contains))) && (entryTarget.contains(target)))
{ {
return i; return i;
} }
@@ -346,4 +320,24 @@ public class RunecraftPlugin extends Plugin
darkMage = null; darkMage = null;
} }
} }
private void addSwaps()
{
if (config.essPouch())
{
menuManager.addSwap("deposit", "pouch", 2, 57, "fill", "pouch", 9, 1007);
menuManager.addSwap("fill", "pouch", "empty", "pouch", true, false);
}
else
{
menuManager.removeSwap("deposit", "pouch", 2, 57, "fill", "pouch", 9, 1007);
menuManager.removeSwap("fill", "pouch", "empty", "pouch", true, false);
}
}
private void removeSwaps()
{
menuManager.removeSwap("deposit", "pouch", 2, 57, "fill", "pouch", 9, 1007);
menuManager.removeSwap("fill", "pouch", "empty", "pouch", true, false);
}
} }