This commit is contained in:
Kyleeld
2019-04-20 19:10:03 +01:00
7 changed files with 1 additions and 397 deletions

View File

@@ -16,7 +16,7 @@ import net.runelite.client.plugins.PluginDescriptor;
name = "fKeyRemapping",
description = "Used for interface hotkeys",
tags = {"hotkey", "remapping"},
type = "utility",
type = "utility",
enabledByDefault = true
)
public class fKeyRemappingPlugin extends Plugin

View File

@@ -1,55 +0,0 @@
package net.runelite.client.plugins.pkvision;
import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup("pkvision")
public interface PKVisionConfig extends Config
{
@ConfigItem(position = 0, keyName = "drawOwnName", name = "Highlight own player", description = "Configures whether or not your own player should be highlighted")
default boolean highlightOwnPlayer()
{
return false;
}
@ConfigItem(position = 1, keyName = "ownNameColor", name = "Own player color", description = "Color of your own player")
default Color getOwnPlayerColor()
{
return new Color(0, 184, 212);
}
@ConfigItem(position = 2, keyName = "drawFriendNames", name = "Highlight friends", description = "Configures whether or not friends should be highlighted")
default boolean highlightFriends()
{
return true;
}
@ConfigItem(position = 3, keyName = "friendNameColor", name = "Friend color", description = "Color of friend names" )
default Color getFriendColor()
{
return new Color(0, 200, 80);
}
@ConfigItem(position = 4, keyName = "drawPlayerTiles", name = "Draw tiles under players", description = "Configures whether or not tiles under highlighted players should be drawn")
default boolean drawTiles()
{
return false;
}
@ConfigItem(position = 5, keyName = "drawPlayerNames", name = "Draw names above players", description = "Configures whether or not player names should be drawn above players")
default boolean drawPlayerNames() { return true; }
@ConfigItem(position = 6, keyName = "drawPlayerLevels", name = "Draw levels above players", description = "Configures whether or not player levels should be drawn above players")
default boolean drawPlayerLevels()
{
return true;
}
//@ConfigItem(position = 7, keyName = "drawPlayerHealth", name = "Draw health above players", description = "Configures whether or not player levels should be drawn above players")
//default boolean drawPlayerHealth()
//{
// return true;
//}
}

View File

@@ -1,43 +0,0 @@
package net.runelite.client.plugins.pkvision;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Player;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import net.runelite.client.ui.overlay.OverlayUtil;
@Singleton
public class PKVisionMinimapOverlay extends Overlay
{
private final PKVisionService pkVisionService;
@Inject
private PKVisionMinimapOverlay(PKVisionService pkVisionService)
{
this.pkVisionService = pkVisionService;
setLayer(OverlayLayer.ABOVE_WIDGETS);
setPosition(OverlayPosition.DYNAMIC);
setPriority(OverlayPriority.HIGH);
}
@Override
public Dimension render(Graphics2D graphics)
{
pkVisionService.forEachPlayer((player, color) -> renderPlayerOverlay(graphics, player, color));
return null;
}
private void renderPlayerOverlay(Graphics2D graphics, Player actor, Color color)
{
final net.runelite.api.Point minimapLocation = actor.getMinimapLocation();
if (minimapLocation != null)
OverlayUtil.renderTextLocation(graphics, minimapLocation, Integer.toString(actor.getCombatLevel()), color);
}
}

View File

@@ -1,55 +0,0 @@
package net.runelite.client.plugins.pkvision;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import net.runelite.client.ui.overlay.OverlayUtil;
@Singleton
public class PKVisionOverlay extends Overlay
{
private final PKVisionService pkVisionService;
private final PKVisionConfig config;
@Inject
private PKVisionOverlay(PKVisionConfig config, PKVisionService pkVisionService, PKVisionPlugin pkVisionPlugin)
{
this.config = config;
this.pkVisionService = pkVisionService;
setPosition(OverlayPosition.DYNAMIC);
setPriority(OverlayPriority.MED);
}
@Override
public Dimension render(Graphics2D graphics)
{
pkVisionService.forEachPlayer((player, color) -> renderPlayerOverlay(graphics, player, color));
return null;
}
private void renderPlayerOverlay(Graphics2D graphics, Player actor, Color color)
{
if (!config.drawPlayerNames() && !config.drawPlayerLevels())
return;
String text = "";
if (config.drawPlayerLevels())
text += "(" + actor.getCombatLevel() + ") ";
if (config.drawPlayerNames())
text += actor.getName().replace('\u00A0', ' ');
Point textLocation = actor.getCanvasTextLocation(graphics, text, actor.getLogicalHeight() + 40);
if (textLocation != null)
OverlayUtil.renderTextLocation(graphics, textLocation, text, color);
}
}

View File

@@ -1,136 +0,0 @@
package net.runelite.client.plugins.pkvision;
import net.runelite.client.eventbus.Subscribe;
import com.google.inject.Provides;
import java.awt.Color;
import javax.inject.Inject;
import net.runelite.api.Client;
import static net.runelite.api.MenuAction.*;
import net.runelite.api.MenuEntry;
import net.runelite.api.Player;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.MiscUtils;
import net.runelite.client.util.Text;
@PluginDescriptor(
name = "PK Vision",
description = "Highlight players on-screen and/or on the minimap",
tags = {"highlight", "minimap", "overlay", "players", "pk", "helper", "vision", "bogla"},
enabledByDefault = false,
type = "PVP"
)
public class PKVisionPlugin extends Plugin
{
@Inject
private OverlayManager overlayManager;
@Inject
private PKVisionConfig config;
@Inject
private PKVisionOverlay pkVisionOverlay;
@Inject
private PKVisionTileOverlay pkVisionTileOverlay;
@Inject
private PKVisionMinimapOverlay pkVisionMinimapOverlay;
@Inject
private Client client;
@Provides
PKVisionConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(PKVisionConfig.class);
}
@Override
protected void startUp() throws Exception
{
overlayManager.add(pkVisionOverlay);
overlayManager.add(pkVisionTileOverlay);
overlayManager.add(pkVisionMinimapOverlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(pkVisionOverlay);
overlayManager.remove(pkVisionTileOverlay);
overlayManager.remove(pkVisionMinimapOverlay);
}
@Subscribe
public void onMenuEntryAdded(MenuEntryAdded menuEntryAdded)
{
int type = menuEntryAdded.getType();
String option = Text.removeTags(menuEntryAdded.getOption()).toLowerCase();
if (type >= 2000)
type -= 2000;
int identifier = menuEntryAdded.getIdentifier();
if (type == FOLLOW.getId() || type == TRADE.getId()
|| type == ITEM_USE_ON_PLAYER.getId() || type == PLAYER_FIRST_OPTION.getId()
|| type == PLAYER_SECOND_OPTION.getId() || type == PLAYER_THIRD_OPTION.getId()
|| type == PLAYER_FOURTH_OPTION.getId() || type == PLAYER_FIFTH_OPTION.getId()
|| type == PLAYER_SIXTH_OPTION.getId() || type == PLAYER_SEVENTH_OPTION.getId()
|| type == PLAYER_EIGTH_OPTION.getId() || type == SPELL_CAST_ON_PLAYER.getId()
|| type == RUNELITE.getId())
{
final Player localPlayer = client.getLocalPlayer();
Player[] players = client.getCachedPlayers();
Player player = null;
if (identifier >= 0 && identifier < players.length)
player = players[identifier];
if (player == null)
return;
Color color = null;
if (config.highlightFriends() && (player.isFriend() || player.isClanMember()))
{
color = config.getFriendColor();
}
else if (!player.isFriend() && !player.isClanMember())
{
int lvlDelta = player.getCombatLevel() - localPlayer.getCombatLevel();
int wildyLvl = MiscUtils.getWildernessLevelFrom(client, player.getWorldLocation());
if (wildyLvl <= 0)
return;
int R = MiscUtils.clamp((int)(((float)(lvlDelta + wildyLvl) / (float)(wildyLvl * 2)) * 255.f), 0, 255);
int G = MiscUtils.clamp(255 - R, 0, 255);
if (Math.abs(lvlDelta) <= wildyLvl)
color = Color.getHSBColor(Color.RGBtoHSB(R, G, 0, null)[0], 1.f, 1.f);
}
if (color != null)
{
MenuEntry[] menuEntries = client.getMenuEntries();
MenuEntry lastEntry = menuEntries[menuEntries.length - 1];
// strip out existing <col...
String target = lastEntry.getTarget();
int idx = target.indexOf('>');
if (idx != -1)
target = target.substring(idx + 1);
lastEntry.setTarget(ColorUtil.prependColorTag(target, color));
client.setMenuEntries(menuEntries);
}
}
}
}

View File

@@ -1,63 +0,0 @@
package net.runelite.client.plugins.pkvision;
import java.awt.Color;
import java.util.function.BiConsumer;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.api.Player;
import net.runelite.client.util.MiscUtils;
@Singleton
public class PKVisionService
{
private final Client client;
private final PKVisionConfig config;
@Inject
private PKVisionService(Client client, PKVisionConfig config)
{
this.config = config;
this.client = client;
}
public void forEachPlayer(final BiConsumer<Player, Color> consumer)
{
final Player localPlayer = client.getLocalPlayer();
for (Player player : client.getPlayers())
{
if (player == null || player.getName() == null)
continue;
if (player == localPlayer)
{
if (config.highlightOwnPlayer())
consumer.accept(player, config.getOwnPlayerColor());
continue;
}
if (config.highlightFriends() && (player.isFriend() || player.isClanMember()))
{
consumer.accept(player, config.getFriendColor());
}
else if (player != localPlayer && !player.isFriend() && !player.isClanMember())
{
int lvlDelta = player.getCombatLevel() - localPlayer.getCombatLevel();
int wildyLvl = MiscUtils.getWildernessLevelFrom(client, player.getWorldLocation());
if (wildyLvl <= 0)
continue;
if (Math.abs(lvlDelta) > wildyLvl)
continue;
int R = MiscUtils.clamp((int)(((float)(lvlDelta + wildyLvl) / (float)(wildyLvl * 2)) * 255.f), 0, 255);
int G = MiscUtils.clamp(255 - R, 0, 255);
consumer.accept(player, Color.getHSBColor(Color.RGBtoHSB(R, G, 0, null)[0], 1.f, 1.f));
}
}
}
}

View File

@@ -1,44 +0,0 @@
package net.runelite.client.plugins.pkvision;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import javax.inject.Inject;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import net.runelite.client.ui.overlay.OverlayUtil;
public class PKVisionTileOverlay extends Overlay
{
private final PKVisionService pkVisionService;
private final PKVisionConfig config;
@Inject
private PKVisionTileOverlay(PKVisionConfig config, PKVisionService pkVisionService)
{
this.config = config;
this.pkVisionService = pkVisionService;
setLayer(OverlayLayer.ABOVE_SCENE);
setPosition(OverlayPosition.DYNAMIC);
setPriority(OverlayPriority.MED);
}
@Override
public Dimension render(Graphics2D graphics)
{
if (!config.drawTiles())
return null;
pkVisionService.forEachPlayer((player, color) ->
{
final Polygon poly = player.getCanvasTilePoly();
if (poly != null)
OverlayUtil.renderPolygon(graphics, poly, color);
});
return null;
}
}