Properly invalidate clan ranks and names

- Invalidate clan ranks when player changes his clan
- Invalidate player names when game state changes

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-03-31 22:35:40 +02:00
committed by Adam
parent d268f9a75c
commit d98fe4cf2d
2 changed files with 50 additions and 44 deletions

View File

@@ -33,6 +33,7 @@ import javax.inject.Inject;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.events.ClanChanged;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.SetMessage; import net.runelite.api.events.SetMessage;
@@ -76,30 +77,41 @@ public class PlayerIndicatorsPlugin extends Plugin
@Override @Override
protected void startUp() protected void startUp()
{ {
playerIndicatorsService.updateConfig(false); playerIndicatorsService.invalidatePlayerNames();
playerIndicatorsService.updateConfig();
} }
@Override @Override
protected void shutDown() protected void shutDown()
{ {
playerIndicatorsService.updateConfig(true); playerIndicatorsService.invalidatePlayerNames();
playerIndicatorsService.invalidateClanRanksCache();
client.setPlayerNameMask(0);
} }
@Subscribe @Subscribe
public void onConfigChanged(ConfigChanged event) public void onConfigChanged(ConfigChanged event)
{ {
if (event.getGroup().equals("playerindicators") if (event.getGroup().equals("playerindicators"))
|| event.getGroup().equals("runelite")
|| event.getGroup().equals("minimap"))
{ {
playerIndicatorsService.updateConfig(false); playerIndicatorsService.invalidatePlayerNames();
playerIndicatorsService.updateConfig();
} }
} }
@Subscribe @Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged) public void onGameStateChanged(GameStateChanged event)
{ {
playerIndicatorsService.updateConfig(false); if (event.getGameState() == GameState.LOGGED_IN)
{
playerIndicatorsService.updateConfig();
}
}
@Subscribe
public void onClanChanged(ClanChanged event)
{
playerIndicatorsService.invalidateClanRanksCache();
} }
@Subscribe @Subscribe

View File

@@ -100,14 +100,8 @@ public class PlayerIndicatorsService
this.client = client; this.client = client;
} }
public void updateConfig(boolean reset) public void invalidatePlayerNames()
{ {
// Update mod icons
if (modIconsLength == 0 && client.getGameState().compareTo(GameState.LOGIN_SCREEN) >= 0)
{
loadClanChatIcons();
}
// Reset player names // Reset player names
for (Player player : client.getPlayers()) for (Player player : client.getPlayers())
{ {
@@ -117,36 +111,45 @@ public class PlayerIndicatorsService
} }
} }
// Reset clan rank cache // Refresh chat box
if (reset) client.refreshChat();
}
public void invalidateClanRanksCache()
{
// Invalidate clan cache
clanRanksCache.invalidateAll();
}
public void updateConfig()
{
// Update mod icons
if (modIconsLength == 0 && client.getGameState().compareTo(GameState.LOGGED_IN) >= 0)
{ {
clanRanksCache.invalidateAll(); loadClanChatIcons();
} }
// Update mask // Update mask
int baseMask = 0; int baseMask = 0;
if (!reset) if (config.drawFriendNames())
{ {
if (config.drawFriendNames()) baseMask |= PlayerNameMask.DRAW_FRIEND_NAME;
{ }
baseMask |= PlayerNameMask.DRAW_FRIEND_NAME;
}
if (config.drawClanMemberNames()) if (config.drawClanMemberNames())
{ {
baseMask |= PlayerNameMask.DRAW_CLAN_NAME; baseMask |= PlayerNameMask.DRAW_CLAN_NAME;
} }
if (config.drawOwnName()) if (config.drawOwnName())
{ {
baseMask |= PlayerNameMask.DRAW_OWN_NAME; baseMask |= PlayerNameMask.DRAW_OWN_NAME;
} }
if (config.drawNonOwnNames()) if (config.drawNonOwnNames())
{ {
baseMask |= PlayerNameMask.DRAW_ALL_EXCEPT_OWN_NAME; baseMask |= PlayerNameMask.DRAW_ALL_EXCEPT_OWN_NAME;
}
} }
client.setPlayerNameMask(baseMask); client.setPlayerNameMask(baseMask);
@@ -160,15 +163,6 @@ public class PlayerIndicatorsService
public void forEachPlayer(final BiConsumer<Player, Color> consumer) public void forEachPlayer(final BiConsumer<Player, Color> consumer)
{ {
if (!config.drawOwnName()
&& !config.drawClanMemberNames()
&& !config.drawFriendNames()
&& !config.drawNonOwnNames()
&& !config.drawTeamMemberNames())
{
return;
}
final Player localPlayer = client.getLocalPlayer(); final Player localPlayer = client.getLocalPlayer();
for (Player player : client.getPlayers()) for (Player player : client.getPlayers())