Add implementation of getSprites as it has been inlined
This commit is contained in:
@@ -38,6 +38,7 @@ import net.runelite.api.GraphicsObject;
|
||||
import net.runelite.api.HashTable;
|
||||
import net.runelite.api.HintArrowType;
|
||||
import net.runelite.api.Ignore;
|
||||
import net.runelite.api.IndexDataBase;
|
||||
import net.runelite.api.IndexedSprite;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.MenuAction;
|
||||
@@ -105,6 +106,7 @@ import net.runelite.rs.api.RSFriendContainer;
|
||||
import net.runelite.rs.api.RSFriendManager;
|
||||
import net.runelite.rs.api.RSHashTable;
|
||||
import net.runelite.rs.api.RSIgnoreContainer;
|
||||
import net.runelite.rs.api.RSIndexDataBase;
|
||||
import net.runelite.rs.api.RSIndexedSprite;
|
||||
import net.runelite.rs.api.RSItem;
|
||||
import net.runelite.rs.api.RSItemContainer;
|
||||
@@ -112,6 +114,7 @@ import net.runelite.rs.api.RSNPC;
|
||||
import net.runelite.rs.api.RSName;
|
||||
import net.runelite.rs.api.RSNameable;
|
||||
import net.runelite.rs.api.RSPlayer;
|
||||
import net.runelite.rs.api.RSSpritePixels;
|
||||
import net.runelite.rs.api.RSWidget;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
@@ -1321,4 +1324,61 @@ public abstract class RSClientMixin implements RSClient
|
||||
skills[++count - 1 & 31] = skill.ordinal();
|
||||
client.setChangedSkillsCount(count);
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public RSSpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId)
|
||||
{
|
||||
RSIndexDataBase rsSource = (RSIndexDataBase) source;
|
||||
byte[] configData = rsSource.getConfigData(archiveId, fileId);
|
||||
if (configData == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
decodeSprite(configData);
|
||||
|
||||
int indexedSpriteCount = getIndexedSpriteCount();
|
||||
int maxWidth = getIndexedSpriteWidth();
|
||||
int maxHeight = getIndexedSpriteHeight();
|
||||
int[] offsetX = getIndexedSpriteOffsetXs();
|
||||
int[] offsetY = getIndexedSpriteOffsetYs();
|
||||
int[] widths = getIndexSpriteWidths();
|
||||
int[] heights = getIndexedSpriteHeights();
|
||||
byte[][] spritePixelsArray = getSpritePixels();
|
||||
int[] indexedSpritePalette = getIndexedSpritePalette();
|
||||
|
||||
RSSpritePixels[] array = new RSSpritePixels[indexedSpriteCount];
|
||||
|
||||
for (int i = 0; i < indexedSpriteCount; ++i)
|
||||
{
|
||||
int width = widths[i];
|
||||
int height = heights[i];
|
||||
|
||||
byte[] pixelArray = spritePixelsArray[i];
|
||||
int[] pixels = new int[width * height];
|
||||
|
||||
RSSpritePixels spritePixels = createSpritePixels(pixels, width, height);
|
||||
spritePixels.setMaxHeight(maxHeight);
|
||||
spritePixels.setMaxWidth(maxWidth);
|
||||
spritePixels.setOffsetX(offsetX[i]);
|
||||
spritePixels.setOffsetY(offsetY[i]);
|
||||
|
||||
for (int j = 0; j < width * height; ++j)
|
||||
{
|
||||
pixels[j] = indexedSpritePalette[pixelArray[j] & 0xff];
|
||||
}
|
||||
|
||||
array[i] = spritePixels;
|
||||
}
|
||||
|
||||
setIndexedSpriteOffsetXs(null);
|
||||
setIndexedSpriteOffsetYs(null);
|
||||
setIndexSpriteWidths(null);
|
||||
setIndexedSpriteHeights(null);
|
||||
setIndexSpritePalette(null);
|
||||
setSpritePixels(null);
|
||||
|
||||
return array;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user