Merge pull request #9614 from abextm/clanmanager-empty-cache
ClanManager: handle startup with an empty cache
This commit is contained in:
@@ -34,6 +34,7 @@ import java.util.Arrays;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import net.runelite.api.ClanMember;
|
import net.runelite.api.ClanMember;
|
||||||
@@ -94,7 +95,7 @@ public class ClanManager
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
private int modIconsLength;
|
private int offset;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ClanManager(Client client, SpriteManager spriteManager)
|
private ClanManager(Client client, SpriteManager spriteManager)
|
||||||
@@ -108,6 +109,7 @@ public class ClanManager
|
|||||||
return clanRanksCache.getUnchecked(playerName);
|
return clanRanksCache.getUnchecked(playerName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
public BufferedImage getClanImage(final ClanMemberRank clanMemberRank)
|
public BufferedImage getClanImage(final ClanMemberRank clanMemberRank)
|
||||||
{
|
{
|
||||||
if (clanMemberRank == ClanMemberRank.UNRANKED)
|
if (clanMemberRank == ClanMemberRank.UNRANKED)
|
||||||
@@ -120,14 +122,13 @@ public class ClanManager
|
|||||||
|
|
||||||
public int getIconNumber(final ClanMemberRank clanMemberRank)
|
public int getIconNumber(final ClanMemberRank clanMemberRank)
|
||||||
{
|
{
|
||||||
return modIconsLength - CLANCHAT_IMAGES.length + clanMemberRank.ordinal() - 1;
|
return offset + clanMemberRank.ordinal() - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||||
{
|
{
|
||||||
if (gameStateChanged.getGameState() == GameState.LOGGED_IN
|
if (gameStateChanged.getGameState() == GameState.LOGIN_SCREEN && offset == 0)
|
||||||
&& modIconsLength == 0)
|
|
||||||
{
|
{
|
||||||
loadClanChatIcons();
|
loadClanChatIcons();
|
||||||
}
|
}
|
||||||
@@ -141,19 +142,31 @@ public class ClanManager
|
|||||||
|
|
||||||
private void loadClanChatIcons()
|
private void loadClanChatIcons()
|
||||||
{
|
{
|
||||||
final IndexedSprite[] modIcons = client.getModIcons();
|
|
||||||
final IndexedSprite[] newModIcons = Arrays.copyOf(modIcons, modIcons.length + CLANCHAT_IMAGES.length);
|
|
||||||
int curPosition = newModIcons.length - CLANCHAT_IMAGES.length;
|
|
||||||
|
|
||||||
for (int i = 0; i < CLANCHAT_IMAGES.length; i++, curPosition++)
|
|
||||||
{
|
{
|
||||||
final int resource = CLANCHAT_IMAGES[i];
|
IndexedSprite[] modIcons = client.getModIcons();
|
||||||
clanChatImages[i] = clanChatImageFromSprite(spriteManager.getSprite(resource, 0));
|
offset = modIcons.length;
|
||||||
newModIcons[curPosition] = ImageUtil.getImageIndexedSprite(clanChatImages[i], client);
|
|
||||||
|
IndexedSprite blank = ImageUtil.getImageIndexedSprite(
|
||||||
|
new BufferedImage(modIcons[0].getWidth(), modIcons[0].getHeight(), BufferedImage.TYPE_INT_ARGB),
|
||||||
|
client);
|
||||||
|
|
||||||
|
modIcons = Arrays.copyOf(modIcons, offset + CLANCHAT_IMAGES.length);
|
||||||
|
Arrays.fill(modIcons, offset, modIcons.length, blank);
|
||||||
|
|
||||||
|
client.setModIcons(modIcons);
|
||||||
}
|
}
|
||||||
|
|
||||||
client.setModIcons(newModIcons);
|
for (int i = 0; i < CLANCHAT_IMAGES.length; i++)
|
||||||
modIconsLength = newModIcons.length;
|
{
|
||||||
|
final int fi = i;
|
||||||
|
|
||||||
|
spriteManager.getSpriteAsync(CLANCHAT_IMAGES[i], 0, sprite ->
|
||||||
|
{
|
||||||
|
IndexedSprite[] modIcons = client.getModIcons();
|
||||||
|
clanChatImages[fi] = clanChatImageFromSprite(sprite);
|
||||||
|
modIcons[offset + fi] = ImageUtil.getImageIndexedSprite(clanChatImages[fi], client);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String sanitize(String lookup)
|
private static String sanitize(String lookup)
|
||||||
|
|||||||
Reference in New Issue
Block a user