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.HashTable;
|
||||||
import net.runelite.api.HintArrowType;
|
import net.runelite.api.HintArrowType;
|
||||||
import net.runelite.api.Ignore;
|
import net.runelite.api.Ignore;
|
||||||
|
import net.runelite.api.IndexDataBase;
|
||||||
import net.runelite.api.IndexedSprite;
|
import net.runelite.api.IndexedSprite;
|
||||||
import net.runelite.api.InventoryID;
|
import net.runelite.api.InventoryID;
|
||||||
import net.runelite.api.MenuAction;
|
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.RSFriendManager;
|
||||||
import net.runelite.rs.api.RSHashTable;
|
import net.runelite.rs.api.RSHashTable;
|
||||||
import net.runelite.rs.api.RSIgnoreContainer;
|
import net.runelite.rs.api.RSIgnoreContainer;
|
||||||
|
import net.runelite.rs.api.RSIndexDataBase;
|
||||||
import net.runelite.rs.api.RSIndexedSprite;
|
import net.runelite.rs.api.RSIndexedSprite;
|
||||||
import net.runelite.rs.api.RSItem;
|
import net.runelite.rs.api.RSItem;
|
||||||
import net.runelite.rs.api.RSItemContainer;
|
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.RSName;
|
||||||
import net.runelite.rs.api.RSNameable;
|
import net.runelite.rs.api.RSNameable;
|
||||||
import net.runelite.rs.api.RSPlayer;
|
import net.runelite.rs.api.RSPlayer;
|
||||||
|
import net.runelite.rs.api.RSSpritePixels;
|
||||||
import net.runelite.rs.api.RSWidget;
|
import net.runelite.rs.api.RSWidget;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
@@ -1321,4 +1324,61 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
skills[++count - 1 & 31] = skill.ordinal();
|
skills[++count - 1 & 31] = skill.ordinal();
|
||||||
client.setChangedSkillsCount(count);
|
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 java.util.Map;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.IndexDataBase;
|
|
||||||
import net.runelite.api.SpritePixels;
|
import net.runelite.api.SpritePixels;
|
||||||
import net.runelite.api.World;
|
import net.runelite.api.World;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
@@ -373,9 +372,53 @@ public interface RSClient extends RSGameEngine, Client
|
|||||||
@Import("createSprite")
|
@Import("createSprite")
|
||||||
RSSpritePixels createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
|
RSSpritePixels createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
|
||||||
|
|
||||||
@Import("getSpritesAsSpritePixels")
|
@Import("decodeSprite")
|
||||||
@Override
|
void decodeSprite(byte[] data);
|
||||||
RSSpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId);
|
|
||||||
|
@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")
|
@Import("indexSprites")
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -47,4 +47,16 @@ public interface RSSpritePixels extends SpritePixels
|
|||||||
|
|
||||||
@Import("setRaster")
|
@Import("setRaster")
|
||||||
void 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