team: add clan member counter

This commit is contained in:
Adam
2021-05-28 21:06:04 -04:00
parent d98adda7c2
commit fb7cea1678
3 changed files with 149 additions and 0 deletions

View File

@@ -1579,6 +1579,7 @@ public final class SpriteID
public static final int HEALTHBAR_DEFAULT_BACK_140PX = 2189;
public static final int HEALTHBAR_DEFAULT_FRONT_160PX = 2190;
public static final int HEALTHBAR_DEFAULT_BACK_160PX = 2191;
public static final int TAB_CLAN_CHAT = 2307;
public static final int WIKI_DESELECTED = 2420;
public static final int WIKI_SELECTED = 2421;
public static final int FRIENDS_CHAT_RANK_SMILEY_FRIEND = 2825;

View File

@@ -48,6 +48,13 @@ public interface TeamConfig extends Config
)
String friendsChatSection = "friendsChatSection";
@ConfigSection(
name = "Clan Chat",
description = "Configuration for clan chat",
position = 30
)
String clanChatSection = "clanChatSection";
@ConfigItem(
keyName = "teamCapesOverlay",
name = "Team cape overlay",
@@ -83,4 +90,16 @@ public interface TeamConfig extends Config
{
return false;
}
@ConfigItem(
keyName = "clanChatMemberCounter",
name = "Clan Chat Members Counter",
description = "Show the amount of clan chat members near you.",
position = 0,
section = clanChatSection
)
default boolean clanChatMemberCounter()
{
return false;
}
}

View File

@@ -105,7 +105,9 @@ public class TeamPlugin extends Plugin
private final BiMap<String, Player> players = HashBiMap.create();
private int friendsChatCount;
private int clanChatCount;
private MembersIndicator friendsChatIndicator;
private MembersIndicator clanChatIndicator;
@Provides
TeamConfig provideConfig(ConfigManager configManager)
@@ -129,7 +131,9 @@ public class TeamPlugin extends Plugin
playerTeam.clear();
players.clear();
removeFriendsChatCounter();
removeClanChatCounter();
friendsChatCount = 0;
clanChatCount = 0;
}
@Subscribe
@@ -145,6 +149,15 @@ public class TeamPlugin extends Plugin
{
removeFriendsChatCounter();
}
if (config.clanChatMemberCounter())
{
clientThread.invoke(this::addClanChatCounter);
}
else
{
removeClanChatCounter();
}
}
}
@@ -157,6 +170,7 @@ public class TeamPlugin extends Plugin
{
players.clear();
removeFriendsChatCounter();
removeClanChatCounter();
}
}
@@ -175,6 +189,12 @@ public class TeamPlugin extends Plugin
++friendsChatCount;
addFriendsChatCounter();
}
if (player.isClanMember())
{
++clanChatCount;
addClanChatCounter();
}
}
}
@@ -201,6 +221,17 @@ public class TeamPlugin extends Plugin
}
}
}
if (player.isClanMember())
{
if (clanChatCount > 0)
{
if (--clanChatCount == 0)
{
removeClanChatCounter();
}
}
}
}
@Subscribe
@@ -256,6 +287,33 @@ public class TeamPlugin extends Plugin
}
}
@Subscribe
public void onClanChannelChanged(ClanChannelChanged event)
{
if (!event.isGuest())
{
removeClanChatCounter();
clanChatCount = 0;
ClanChannel clanChannel = event.getClanChannel();
if (clanChannel != null)
{
for (ClanChannelMember member : clanChannel.getMembers())
{
final String memberName = Text.toJagexName(member.getName());
final Player player = players.get(memberName);
if (player != null)
{
++clanChatCount;
}
}
addClanChatCounter();
}
}
}
@Subscribe
public void onFriendsChatMemberJoined(FriendsChatMemberJoined event)
{
@@ -296,6 +354,46 @@ public class TeamPlugin extends Plugin
}
}
@Subscribe
public void onClanMemberJoined(ClanMemberJoined clanMemberJoined)
{
final ClanChannelMember member = clanMemberJoined.getClanMember();
if (member.getWorld() == client.getWorld())
{
final String memberName = Text.toJagexName(member.getName());
final Player player = players.get(memberName);
if (player != null)
{
++clanChatCount;
addClanChatCounter();
}
}
}
@Subscribe
public void onClanMemberLeft(ClanMemberLeft clanMemberLeft)
{
final ClanChannelMember member = clanMemberLeft.getClanMember();
if (member.getWorld() == client.getWorld())
{
final String memberName = Text.toJagexName(member.getName());
final Player player = players.get(memberName);
if (player != null)
{
if (clanChatCount > 0)
{
if (--clanChatCount == 0)
{
removeClanChatCounter();
}
}
}
}
}
private void addFriendsChatCounter()
{
if (!config.friendsChatMemberCounter() || friendsChatIndicator != null || friendsChatCount == 0)
@@ -326,4 +424,35 @@ public class TeamPlugin extends Plugin
infoBoxManager.removeInfoBox(friendsChatIndicator);
friendsChatIndicator = null;
}
private void addClanChatCounter()
{
if (!config.clanChatMemberCounter() || clanChatIndicator != null || clanChatCount == 0)
{
return;
}
final BufferedImage image = spriteManager.getSprite(SpriteID.TAB_CLAN_CHAT, 0);
clanChatIndicator = new MembersIndicator(image, this)
{
@Override
public String getText()
{
return Integer.toString(clanChatCount);
}
@Override
public String getTooltip()
{
return clanChatCount + " clan chat member(s) near you";
}
};
infoBoxManager.addInfoBox(clanChatIndicator);
}
private void removeClanChatCounter()
{
infoBoxManager.removeInfoBox(clanChatIndicator);
clanChatIndicator = null;
}
}