Merge pull request #1536 from Lucwousin/agility-shill

Agility plugin: generate less garbage objects + color range
This commit is contained in:
Lucwousin
2019-09-04 12:22:17 +02:00
committed by GitHub
5 changed files with 82 additions and 21 deletions

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.plugins.agility;
import com.google.common.primitives.Ints;
import com.google.inject.Provides;
import java.awt.Color;
import java.util.ArrayList;
@@ -507,21 +508,17 @@ public class AgilityPlugin extends Plugin
return;
}
final int entryId = event.getIdentifier();
MenuEntry[] menuEntries = client.getMenuEntries();
for (Obstacle nearbyObstacle : getObstacles().values())
{
AgilityShortcut shortcut = nearbyObstacle.getShortcut();
if (shortcut != null && Arrays.stream(shortcut.getObstacleIds()).anyMatch(i -> i == entryId))
if (shortcut != null && Ints.contains(shortcut.getObstacleIds(), event.getIdentifier()))
{
MenuEntry entry = menuEntries[menuEntries.length - 1];
int level = shortcut.getLevel();
Color color = level <= getAgilityLevel() ? Color.GREEN : Color.RED;
String requirementText = " (level-" + level + ")";
final MenuEntry entry = event.getMenuEntry();
final int reqLevel = shortcut.getLevel();
final String requirementText = ColorUtil.getLevelColorString(reqLevel, getAgilityLevel()) + " (level-" + reqLevel + ")";
entry.setTarget(event.getTarget() + ColorUtil.prependColorTag(requirementText, color));
client.setMenuEntries(menuEntries);
entry.setTarget(event.getTarget() + requirementText);
event.setWasModified(true);
return;
}
}

View File

@@ -267,4 +267,65 @@ public class ColorUtil
}
return (color & 0x00ffffff) | (alpha << 24);
}
/**
* Returns the color a ' (level-xxx)' would have, based on
* the difference between your and their level.
* This method is the same as in rs-client.
*
* @param theirLvl The level you're comparing against
* @param yourLvl Your level
*/
public static String getLevelColorString(final int theirLvl, final int yourLvl)
{
final int diff = yourLvl - theirLvl;
if (diff < -9)
{
return colorStartTag(0xff0000);
}
else if (diff < -6)
{
return colorStartTag(0xff3000);
}
else if (diff < -3)
{
return colorStartTag(0xff7000);
}
else if (diff < 0)
{
return colorStartTag(0xffb000);
}
else if (diff > 9)
{
return colorStartTag(0x00ff00);
}
else if (diff > 6)
{
return colorStartTag(0x40ff00);
}
else if (diff > 3)
{
return colorStartTag(0x80ff00);
}
else if (diff > 0)
{
return colorStartTag(0xc0ff00);
}
else
{
return colorStartTag(0xffff00);
}
}
/**
* Creates a color start tag from a rgb color as a int value
*
* @param rgb the int value of a rgb color
* @return a color tag which can be put in front of stuff
*/
public static String colorStartTag(final int rgb)
{
return "<col=" + Integer.toHexString(rgb) + ">";
}
}

View File

@@ -58,24 +58,27 @@ public class class225 {
signature = "(III)Ljava/lang/String;",
garbageValue = "1269667837"
)
static final String method4037(int var0, int var1) {
@Export("getLevelColorString")
static final String getLevelColorString(int var0, int var1) {
int var2 = var1 - var0;
if (var2 < -9) {
return class16.colorStartTag(16711680);
return class16.colorStartTag(0xff0000);
} else if (var2 < -6) {
return class16.colorStartTag(16723968);
return class16.colorStartTag(0xff3000);
} else if (var2 < -3) {
return class16.colorStartTag(16740352);
return class16.colorStartTag(0xff7000);
} else if (var2 < 0) {
return class16.colorStartTag(16756736);
return class16.colorStartTag(0xffb000);
} else if (var2 > 9) {
return class16.colorStartTag(65280);
return class16.colorStartTag(0x00ff00);
} else if (var2 > 6) {
return class16.colorStartTag(4259584);
return class16.colorStartTag(0x40ff00);
} else if (var2 > 3) {
return class16.colorStartTag(8453888);
return class16.colorStartTag(0x80ff00);
} else if (var2 > 0) {
return class16.colorStartTag(0xc0ff00);
} else {
return var2 > 0 ? class16.colorStartTag(12648192) : class16.colorStartTag(16776960);
return class16.colorStartTag(0xffff00);
}
}
}

View File

@@ -97,7 +97,7 @@ public class class51 {
if (Client.menuOptionsCount < 400) {
String var4;
if (var0.skillLevel == 0) {
var4 = var0.actions[0] + var0.username + var0.actions[1] + class225.method4037(var0.combatLevel, WorldMapIcon_1.localPlayer.combatLevel) + " " + " (" + "level-" + var0.combatLevel + ")" + var0.actions[2];
var4 = var0.actions[0] + var0.username + var0.actions[1] + class225.getLevelColorString(var0.combatLevel, WorldMapIcon_1.localPlayer.combatLevel) + " " + " (" + "level-" + var0.combatLevel + ")" + var0.actions[2];
} else {
var4 = var0.actions[0] + var0.username + var0.actions[1] + " " + " (" + "skill-" + var0.skillLevel + ")" + var0.actions[2];
}

View File

@@ -228,7 +228,7 @@ public class class65 extends RouteStrategy {
if (!var0.isFollower || Client.followerIndex == var1) {
String var4 = var0.name;
if (var0.combatLevel != 0) {
var4 = var4 + class225.method4037(var0.combatLevel, WorldMapIcon_1.localPlayer.combatLevel) + " " + " (" + "level-" + var0.combatLevel + ")";
var4 = var4 + class225.getLevelColorString(var0.combatLevel, WorldMapIcon_1.localPlayer.combatLevel) + " " + " (" + "level-" + var0.combatLevel + ")";
}
if (var0.isFollower && Client.followerOpsLowPriority) {