From 26d906a89a5d93eea1453b8fbf6562c03121c509 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 14 Jul 2022 14:12:45 +0800 Subject: [PATCH] Support for preferred Skin sleeves --- forge-gui-mobile/src/forge/assets/FSkin.java | 83 ++++++++++++++----- .../src/forge/assets/ImageCache.java | 4 +- 2 files changed, 61 insertions(+), 26 deletions(-) diff --git a/forge-gui-mobile/src/forge/assets/FSkin.java b/forge-gui-mobile/src/forge/assets/FSkin.java index 3660243cdff..87b06d45b5b 100644 --- a/forge-gui-mobile/src/forge/assets/FSkin.java +++ b/forge-gui-mobile/src/forge/assets/FSkin.java @@ -238,6 +238,8 @@ public class FSkin { final FileHandle f17 = getDefaultSkinFile(ForgeConstants.SPRITE_CRACKS_FILE); final FileHandle f18 = getDefaultSkinFile(ForgeConstants.SPRITE_PHYREXIAN_FILE); final FileHandle f19 = getDefaultSkinFile(ForgeConstants.SPRITE_CURSOR_FILE); + final FileHandle f20 = getSkinFile(ForgeConstants.SPRITE_SLEEVES_FILE); + final FileHandle f21 = getSkinFile(ForgeConstants.SPRITE_SLEEVES2_FILE); /*TODO Themeable final FileHandle f14 = getDefaultSkinFile(ForgeConstants.SPRITE_SETLOGO_FILE); @@ -313,7 +315,7 @@ public class FSkin { int counter = 0; int scount = 0; Color pxTest; - Pixmap pxDefaultAvatars, pxPreferredAvatars, pxDefaultSleeves; + Pixmap pxDefaultAvatars, pxPreferredAvatars, pxDefaultSleeves, pxPreferredSleeves; pxDefaultAvatars = new Pixmap(f4); pxDefaultSleeves = new Pixmap(f8); @@ -356,33 +358,68 @@ public class FSkin { } } } + if (f20.exists()) { + pxPreferredSleeves = new Pixmap(f20); + manager.load(f20.path(), Texture.class, parameter); + manager.finishLoadingAsset(f20.path()); - final int sw = pxDefaultSleeves.getWidth(); - final int sh = pxDefaultSleeves.getHeight(); + final int sw = pxPreferredSleeves.getWidth(); + final int sh = pxPreferredSleeves.getHeight(); - for (int j = 0; j < sh; j += 500) { - for (int i = 0; i < sw; i += 360) { - pxTest = new Color(pxDefaultSleeves.getPixel(i + 180, j + 250)); - if (pxTest.a == 0) { continue; } - Forge.getAssets().sleeves.put(scount++, new TextureRegion(manager.get(f8.path(), Texture.class), i, j, 360, 500)); + for (int j = 0; j < sh; j += 500) { + for (int i = 0; i < sw; i += 360) { + pxTest = new Color(pxPreferredSleeves.getPixel(i + 180, j + 250)); + if (pxTest.a == 0) { continue; } + Forge.getAssets().sleeves.put(scount++, new TextureRegion(manager.get(f20.path(), Texture.class), i, j, 360, 500)); + } + } + pxPreferredSleeves.dispose(); + } else { + final int sw = pxDefaultSleeves.getWidth(); + final int sh = pxDefaultSleeves.getHeight(); + + for (int j = 0; j < sh; j += 500) { + for (int i = 0; i < sw; i += 360) { + pxTest = new Color(pxDefaultSleeves.getPixel(i + 180, j + 250)); + if (pxTest.a == 0) { continue; } + Forge.getAssets().sleeves.put(scount++, new TextureRegion(manager.get(f8.path(), Texture.class), i, j, 360, 500)); + } + } + } + if (f21.exists()) { + pxPreferredSleeves = new Pixmap(f21); + manager.load(f21.path(), Texture.class, parameter); + manager.finishLoadingAsset(f21.path()); + + final int sw = pxPreferredSleeves.getWidth(); + final int sh = pxPreferredSleeves.getHeight(); + + for (int j = 0; j < sh; j += 500) { + for (int i = 0; i < sw; i += 360) { + pxTest = new Color(pxPreferredSleeves.getPixel(i + 180, j + 250)); + if (pxTest.a == 0) { continue; } + Forge.getAssets().sleeves.put(scount++, new TextureRegion(manager.get(f21.path(), Texture.class), i, j, 360, 500)); + } + } + pxPreferredSleeves.dispose(); + } else { + //re init second set of sleeves + pxDefaultSleeves = new Pixmap(f9); + manager.load(f9.path(), Texture.class, parameter); + manager.finishLoadingAsset(f9.path()); + + final int sw2 = pxDefaultSleeves.getWidth(); + final int sh2 = pxDefaultSleeves.getHeight(); + + for (int j = 0; j < sh2; j += 500) { + for (int i = 0; i < sw2; i += 360) { + pxTest = new Color(pxDefaultSleeves.getPixel(i + 180, j + 250)); + if (pxTest.a == 0) { continue; } + Forge.getAssets().sleeves.put(scount++, new TextureRegion(manager.get(f9.path(), Texture.class), i, j, 360, 500)); + } } } - //re init second set of sleeves - pxDefaultSleeves = new Pixmap(f9); - manager.load(f9.path(), Texture.class, parameter); - manager.finishLoadingAsset(f9.path()); - - final int sw2 = pxDefaultSleeves.getWidth(); - final int sh2 = pxDefaultSleeves.getHeight(); - - for (int j = 0; j < sh2; j += 500) { - for (int i = 0; i < sw2; i += 360) { - pxTest = new Color(pxDefaultSleeves.getPixel(i + 180, j + 250)); - if (pxTest.a == 0) { continue; } - Forge.getAssets().sleeves.put(scount++, new TextureRegion(manager.get(f9.path(), Texture.class), i, j, 360, 500)); - } - } //cracks manager.load(f17.path(), Texture.class, parameter); manager.finishLoadingAsset(f17.path()); diff --git a/forge-gui-mobile/src/forge/assets/ImageCache.java b/forge-gui-mobile/src/forge/assets/ImageCache.java index 403c7b94a75..b1f5cfec90e 100644 --- a/forge-gui-mobile/src/forge/assets/ImageCache.java +++ b/forge-gui-mobile/src/forge/assets/ImageCache.java @@ -318,12 +318,10 @@ public class ImageCache { for (String asset : toUnload) { if(manager.contains(asset)) manager.unload(asset); + cardsLoaded.remove(asset); } //clear cachedArt since this is dependant to the loaded texture CardRenderer.clearcardArtCache(); - cardsLoaded.clear(); - //update with recent - cardsLoaded.addAll(newQ); } public static void preloadCache(Iterable keys) { if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES))