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;
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,6 @@ package net.runelite.rs.api;
|
||||
|
||||
import java.util.Map;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.IndexDataBase;
|
||||
import net.runelite.api.SpritePixels;
|
||||
import net.runelite.api.World;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
@@ -373,9 +372,53 @@ public interface RSClient extends RSGameEngine, Client
|
||||
@Import("createSprite")
|
||||
RSSpritePixels createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
|
||||
|
||||
@Import("getSpritesAsSpritePixels")
|
||||
@Override
|
||||
RSSpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId);
|
||||
@Import("decodeSprite")
|
||||
void decodeSprite(byte[] data);
|
||||
|
||||
@Import("indexedSpriteCount")
|
||||
int getIndexedSpriteCount();
|
||||
|
||||
@Import("indexedSpriteWidth")
|
||||
int getIndexedSpriteWidth();
|
||||
|
||||
@Import("indexedSpriteHeight")
|
||||
int getIndexedSpriteHeight();
|
||||
|
||||
@Import("indexedSpriteOffsetXs")
|
||||
int[] getIndexedSpriteOffsetXs();
|
||||
|
||||
@Import("indexedSpriteOffsetXs")
|
||||
void setIndexedSpriteOffsetXs(int[] indexedSpriteOffsetXs);
|
||||
|
||||
@Import("indexedSpriteOffsetYs")
|
||||
int[] getIndexedSpriteOffsetYs();
|
||||
|
||||
@Import("indexedSpriteOffsetYs")
|
||||
void setIndexedSpriteOffsetYs(int[] indexedSpriteOffsetYs);
|
||||
|
||||
@Import("indexSpriteWidths")
|
||||
int[] getIndexSpriteWidths();
|
||||
|
||||
@Import("indexSpriteWidths")
|
||||
void setIndexSpriteWidths(int[] indexSpriteWidths);
|
||||
|
||||
@Import("indexedSpriteHeights")
|
||||
int[] getIndexedSpriteHeights();
|
||||
|
||||
@Import("indexedSpriteHeights")
|
||||
void setIndexedSpriteHeights(int[] indexedSpriteHeights);
|
||||
|
||||
@Import("spritePixels")
|
||||
byte[][] getSpritePixels();
|
||||
|
||||
@Import("spritePixels")
|
||||
void setSpritePixels(byte[][] spritePixels);
|
||||
|
||||
@Import("indexedSpritePalette")
|
||||
int[] getIndexedSpritePalette();
|
||||
|
||||
@Import("indexedSpritePalette")
|
||||
void setIndexSpritePalette(int[] indexSpritePalette);
|
||||
|
||||
@Import("indexSprites")
|
||||
@Override
|
||||
|
||||
@@ -47,4 +47,16 @@ public interface RSSpritePixels extends SpritePixels
|
||||
|
||||
@Import("setRaster")
|
||||
void setRaster();
|
||||
|
||||
@Import("maxWidth")
|
||||
void setMaxWidth(int maxWidth);
|
||||
|
||||
@Import("maxHeight")
|
||||
void setMaxHeight(int maxHeight);
|
||||
|
||||
@Import("offsetX")
|
||||
void setOffsetX(int offsetX);
|
||||
|
||||
@Import("offsetY")
|
||||
void setOffsetY(int offsetY);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user