Make the second argument of SpriteManager::getSprite work

I just blindly assumed that the arguments to net.runelite.cache.SpriteManager worked the same as Jagex's code, which is not true. In reality the second argument to getSprite(s?)asSpritePixels is always zero, and instead you have to decode the entire archive then select a sub image, rather than a subfile.
This commit is contained in:
Max Weber
2018-08-10 21:25:22 -06:00
parent 6ef32bf916
commit bac90876b0
3 changed files with 6 additions and 6 deletions

View File

@@ -311,14 +311,14 @@ public interface Client extends GameEngine
SpritePixels createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted, int scale);
/**
* Loads and creates the sprite image of the passed archive and file IDs.
* Loads and creates the sprite images of the passed archive and file IDs.
*
* @param source the sprite database
* @param archiveId the sprites archive ID
* @param fileId the sprites file ID
* @return the sprite image of the file
*/
SpritePixels getSprite(IndexDataBase source, int archiveId, int fileId);
SpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId);
/**
* Gets the sprite index database.

View File

@@ -71,8 +71,8 @@ public class SpriteManager
return cached;
}
SpritePixels sp = client.getSprite(client.getIndexSprites(), archive, file);
BufferedImage img = sp.toBufferedImage();
SpritePixels[] sp = client.getSprites(client.getIndexSprites(), archive, 0);
BufferedImage img = sp[file].toBufferedImage();
cache.put(key, img);
return img;

View File

@@ -318,9 +318,9 @@ public interface RSClient extends RSGameEngine, Client
@Import("createSprite")
RSSpritePixels createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
@Import("getSpriteAsSpritePixels")
@Import("getSpritesAsSpritePixels")
@Override
RSSpritePixels getSprite(IndexDataBase source, int archiveId, int fileId);
RSSpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId);
@Import("indexSprites")
@Override