mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Simplify the way custom achievement images are loaded
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1132,6 +1132,7 @@ forge-gui-mobile/src/forge/animation/GifDecoder.java -text
|
|||||||
forge-gui-mobile/src/forge/assets/AssetsDownloader.java -text
|
forge-gui-mobile/src/forge/assets/AssetsDownloader.java -text
|
||||||
forge-gui-mobile/src/forge/assets/BitmapFontWriter.java -text
|
forge-gui-mobile/src/forge/assets/BitmapFontWriter.java -text
|
||||||
forge-gui-mobile/src/forge/assets/FBufferedImage.java -text
|
forge-gui-mobile/src/forge/assets/FBufferedImage.java -text
|
||||||
|
forge-gui-mobile/src/forge/assets/FDelayLoadImage.java -text
|
||||||
forge-gui-mobile/src/forge/assets/FImage.java -text
|
forge-gui-mobile/src/forge/assets/FImage.java -text
|
||||||
forge-gui-mobile/src/forge/assets/FImageComplex.java -text
|
forge-gui-mobile/src/forge/assets/FImageComplex.java -text
|
||||||
forge-gui-mobile/src/forge/assets/FSkin.java -text
|
forge-gui-mobile/src/forge/assets/FSkin.java -text
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.badlogic.gdx.Application.ApplicationType;
|
|||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
|
||||||
|
import forge.assets.FDelayLoadImage;
|
||||||
import forge.assets.FSkin;
|
import forge.assets.FSkin;
|
||||||
import forge.assets.FSkinProp;
|
import forge.assets.FSkinProp;
|
||||||
import forge.assets.FTextureImage;
|
import forge.assets.FTextureImage;
|
||||||
@@ -106,9 +107,14 @@ public class GuiMobile implements IGuiBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ISkinImage getUnskinnedIcon(String path) {
|
public ISkinImage getUnskinnedIcon(String path) {
|
||||||
|
if (FThreads.isGuiThread(this)) {
|
||||||
return new FTextureImage(new Texture(Gdx.files.absolute(path)));
|
return new FTextureImage(new Texture(Gdx.files.absolute(path)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//use a delay load image to avoid an error if called from background thread
|
||||||
|
return new FDelayLoadImage(path);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int showOptionDialog(final String message, final String title, final FSkinProp icon, final String[] options, final int defaultOption) {
|
public int showOptionDialog(final String message, final String title, final FSkinProp icon, final String[] options, final int defaultOption) {
|
||||||
return new WaitCallback<Integer>() {
|
return new WaitCallback<Integer>() {
|
||||||
|
|||||||
49
forge-gui-mobile/src/forge/assets/FDelayLoadImage.java
Normal file
49
forge-gui-mobile/src/forge/assets/FDelayLoadImage.java
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
package forge.assets;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
|
||||||
|
import forge.Graphics;
|
||||||
|
|
||||||
|
//Special wrapper for a texture to be loaded later when it's needed
|
||||||
|
public class FDelayLoadImage extends FImageComplex {
|
||||||
|
private final String filename;
|
||||||
|
private Texture texture;
|
||||||
|
|
||||||
|
public FDelayLoadImage(String filename0) {
|
||||||
|
filename = filename0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getWidth() {
|
||||||
|
return getTexture().getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getHeight() {
|
||||||
|
return getTexture().getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Texture getTexture() {
|
||||||
|
if (texture == null) {
|
||||||
|
texture = new Texture(Gdx.files.absolute(filename));
|
||||||
|
}
|
||||||
|
return texture;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRegionX() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRegionY() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void draw(Graphics g, float x, float y, float w, float h) {
|
||||||
|
g.drawImage(getTexture(), x, y, w, h);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,6 @@ package forge.achievement;
|
|||||||
|
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
|
|
||||||
import forge.FThreads;
|
|
||||||
import forge.GuiBase;
|
import forge.GuiBase;
|
||||||
import forge.assets.FSkinProp;
|
import forge.assets.FSkinProp;
|
||||||
import forge.assets.ISkinImage;
|
import forge.assets.ISkinImage;
|
||||||
@@ -81,7 +80,7 @@ public abstract class Achievement {
|
|||||||
return customImage;
|
return customImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateCustomImage() {
|
private void updateCustomImage() {
|
||||||
int suffix;
|
int suffix;
|
||||||
if (earnedGold()) {
|
if (earnedGold()) {
|
||||||
suffix = 3;
|
suffix = 3;
|
||||||
@@ -155,12 +154,7 @@ public abstract class Achievement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
FThreads.invokeInEdtNowOrLater(GuiBase.getInterface(), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
updateCustomImage();
|
updateCustomImage();
|
||||||
}
|
|
||||||
});
|
|
||||||
if (sharedDesc != null) {
|
if (sharedDesc != null) {
|
||||||
desc = sharedDesc + " " + desc;
|
desc = sharedDesc + " " + desc;
|
||||||
}
|
}
|
||||||
@@ -181,6 +175,7 @@ public abstract class Achievement {
|
|||||||
public void loadFromXml(Element el) {
|
public void loadFromXml(Element el) {
|
||||||
best = getIntAttribute(el, "best");
|
best = getIntAttribute(el, "best");
|
||||||
current = getIntAttribute(el, "current");
|
current = getIntAttribute(el, "current");
|
||||||
|
updateCustomImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getIntAttribute(Element el, String name) {
|
private int getIntAttribute(Element el, String name) {
|
||||||
|
|||||||
@@ -20,9 +20,7 @@ package forge.model;
|
|||||||
import forge.CardStorageReader;
|
import forge.CardStorageReader;
|
||||||
import forge.CardStorageReader.ProgressObserver;
|
import forge.CardStorageReader.ProgressObserver;
|
||||||
import forge.FThreads;
|
import forge.FThreads;
|
||||||
import forge.GuiBase;
|
|
||||||
import forge.StaticData;
|
import forge.StaticData;
|
||||||
import forge.achievement.Achievement;
|
|
||||||
import forge.achievement.AchievementCollection;
|
import forge.achievement.AchievementCollection;
|
||||||
import forge.achievement.ConstructedAchievements;
|
import forge.achievement.ConstructedAchievements;
|
||||||
import forge.achievement.DraftAchievements;
|
import forge.achievement.DraftAchievements;
|
||||||
@@ -176,20 +174,6 @@ public class FModel {
|
|||||||
achievements.put(GameType.Sealed, new SealedAchievements());
|
achievements.put(GameType.Sealed, new SealedAchievements());
|
||||||
achievements.put(GameType.Quest, new QuestAchievements());
|
achievements.put(GameType.Quest, new QuestAchievements());
|
||||||
|
|
||||||
//as long as custom achievement pics directory exists, queue up load for those images
|
|
||||||
if (FileUtil.doesFileExist(ForgeConstants.CACHE_ACHIEVEMENT_PICS_DIR)) {
|
|
||||||
FThreads.invokeInEdtLater(GuiBase.getInterface(), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
for (AchievementCollection achievementCol : achievements.values()) {
|
|
||||||
for (Achievement achievement : achievementCol) {
|
|
||||||
achievement.updateCustomImage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//preload AI profiles
|
//preload AI profiles
|
||||||
AiProfileUtil.loadAllProfiles(ForgeConstants.AI_PROFILE_DIR);
|
AiProfileUtil.loadAllProfiles(ForgeConstants.AI_PROFILE_DIR);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user