Merge pull request #7704 from deathbeam/add-color-hashes
Recolor party pings and names based on name color hash
This commit is contained in:
@@ -61,7 +61,6 @@ public interface PartyConfig extends Config
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
keyName = "messages",
|
keyName = "messages",
|
||||||
name = "Join messages",
|
name = "Join messages",
|
||||||
@@ -71,4 +70,14 @@ public interface PartyConfig extends Config
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "recolorNames",
|
||||||
|
name = "Recolor names",
|
||||||
|
description = "Recolor stats overlay names based on unique color hash"
|
||||||
|
)
|
||||||
|
default boolean recolorNames()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,6 +110,12 @@ class PartyPingOverlay extends Overlay
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
OverlayUtil.renderPolygon(graphics, poly, new Color(255, 0, 0, ping.getAlpha()));
|
final Color color = new Color(
|
||||||
|
ping.getColor().getRed(),
|
||||||
|
ping.getColor().getGreen(),
|
||||||
|
ping.getColor().getBlue(),
|
||||||
|
ping.getAlpha());
|
||||||
|
|
||||||
|
OverlayUtil.renderPolygon(graphics, poly, color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ package net.runelite.client.plugins.party;
|
|||||||
|
|
||||||
import com.google.inject.Binder;
|
import com.google.inject.Binder;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
import java.awt.Color;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -71,6 +72,7 @@ import net.runelite.client.task.Schedule;
|
|||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
import net.runelite.client.ui.overlay.worldmap.WorldMapPoint;
|
import net.runelite.client.ui.overlay.worldmap.WorldMapPoint;
|
||||||
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
|
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
|
||||||
|
import net.runelite.client.util.ColorUtil;
|
||||||
import net.runelite.client.ws.PartyMember;
|
import net.runelite.client.ws.PartyMember;
|
||||||
import net.runelite.client.ws.PartyService;
|
import net.runelite.client.ws.PartyService;
|
||||||
import net.runelite.client.ws.WSClient;
|
import net.runelite.client.ws.WSClient;
|
||||||
@@ -228,7 +230,9 @@ public class PartyPlugin extends Plugin implements KeyListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
event.consume();
|
event.consume();
|
||||||
wsClient.send(new TilePing(selectedSceneTile.getWorldLocation()));
|
final TilePing tilePing = new TilePing(selectedSceneTile.getWorldLocation());
|
||||||
|
tilePing.setMemberId(party.getLocalMember().getMemberId());
|
||||||
|
wsClient.send(tilePing);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -238,7 +242,9 @@ public class PartyPlugin extends Plugin implements KeyListener
|
|||||||
|
|
||||||
if (config.pings())
|
if (config.pings())
|
||||||
{
|
{
|
||||||
pendingTilePings.add(new PartyTilePingData(event.getPoint()));
|
final PartyData partyData = getPartyData(event.getMemberId());
|
||||||
|
final Color color = partyData != null ? partyData.getColor() : Color.RED;
|
||||||
|
pendingTilePings.add(new PartyTilePingData(event.getPoint(), color));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.sounds())
|
if (config.sounds())
|
||||||
@@ -470,7 +476,7 @@ public class PartyPlugin extends Plugin implements KeyListener
|
|||||||
worldMapManager.add(worldMapPoint);
|
worldMapManager.add(worldMapPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PartyData(u, name, worldMapPoint);
|
return new PartyData(u, name, worldMapPoint, ColorUtil.fromObject(name, true));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ public class PartyStatsOverlay extends Overlay
|
|||||||
|
|
||||||
final TitleComponent name = TitleComponent.builder()
|
final TitleComponent name = TitleComponent.builder()
|
||||||
.text(v.getName())
|
.text(v.getName())
|
||||||
|
.color(config.recolorNames() ? v.getColor() : Color.WHITE)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
panel.getChildren().add(name);
|
panel.getChildren().add(name);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.party.data;
|
package net.runelite.client.plugins.party.data;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -40,6 +41,7 @@ public class PartyData
|
|||||||
private final String name;
|
private final String name;
|
||||||
private final WorldMapPoint worldMapPoint;
|
private final WorldMapPoint worldMapPoint;
|
||||||
private final PanelComponent panel = new PanelComponent();
|
private final PanelComponent panel = new PanelComponent();
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
private int hitpoints;
|
private int hitpoints;
|
||||||
private int maxHitpoints;
|
private int maxHitpoints;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.party.data;
|
package net.runelite.client.plugins.party.data;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -35,5 +36,6 @@ import net.runelite.api.coords.WorldPoint;
|
|||||||
public class PartyTilePingData
|
public class PartyTilePingData
|
||||||
{
|
{
|
||||||
private final WorldPoint point;
|
private final WorldPoint point;
|
||||||
|
private final Color color;
|
||||||
private int alpha = 255;
|
private int alpha = 255;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ package net.runelite.client.plugins.party.messages;
|
|||||||
|
|
||||||
import lombok.Value;
|
import lombok.Value;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
import net.runelite.http.api.ws.messages.party.PartyMessage;
|
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
|
||||||
|
|
||||||
@Value
|
@Value
|
||||||
public class TilePing extends PartyMessage
|
public class TilePing extends PartyMemberMessage
|
||||||
{
|
{
|
||||||
private final WorldPoint point;
|
private final WorldPoint point;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ package net.runelite.client.util;
|
|||||||
import com.google.common.primitives.Ints;
|
import com.google.common.primitives.Ints;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class ColorUtil
|
public class ColorUtil
|
||||||
{
|
{
|
||||||
@@ -226,4 +227,20 @@ public class ColorUtil
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates color from passed object hash code
|
||||||
|
* @param object object with hashCode
|
||||||
|
* @param skipAlpha skips alpha
|
||||||
|
* @return color
|
||||||
|
*/
|
||||||
|
public static Color fromObject(@Nonnull final Object object, boolean skipAlpha)
|
||||||
|
{
|
||||||
|
int i = object.hashCode();
|
||||||
|
int r = (i >> 24) & 0xFF;
|
||||||
|
int g = (i >> 16) & 0xFF;
|
||||||
|
int b = (i >> 8) & 0xFF;
|
||||||
|
int a = i & 0xFF;
|
||||||
|
return new Color(r, g, b, skipAlpha ? 255 : a);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user