mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
fix onfetched for RewardActor
- should fix the issue of not loading the images downloaded. This should method should get directly from the assetmanager.
This commit is contained in:
@@ -180,7 +180,7 @@
|
||||
</executions>
|
||||
<configuration>
|
||||
<basedir>${basedir}/${configSourceDirectory}</basedir>
|
||||
<filesToInclude>forge-adventure.sh, forge-adventure.command, forge-adventure.cmd</filesToInclude>
|
||||
<filesToInclude>forge-adventure.sh, forge-adventure-mac.sh, forge-adventure.command, forge-adventure.cmd</filesToInclude>
|
||||
<outputBasedir>${project.build.directory}</outputBasedir>
|
||||
<outputDir>.</outputDir>
|
||||
<regex>false</regex>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package forge.adventure.util;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.assets.loaders.TextureLoader.TextureParameter;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Pixmap;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
@@ -24,6 +26,7 @@ import com.badlogic.gdx.utils.Align;
|
||||
import com.badlogic.gdx.utils.Disposable;
|
||||
import forge.Forge;
|
||||
import forge.Graphics;
|
||||
import forge.ImageKeys;
|
||||
import forge.adventure.data.ItemData;
|
||||
import forge.adventure.scene.RewardScene;
|
||||
import forge.adventure.scene.Scene;
|
||||
@@ -36,6 +39,10 @@ import forge.game.card.CardView;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.item.PaperCard;
|
||||
import forge.util.ImageFetcher;
|
||||
import forge.util.ImageUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import static forge.adventure.util.Paths.ITEMS_ATLAS;
|
||||
|
||||
@@ -53,6 +60,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
|
||||
static TextureRegion backTexture;
|
||||
Texture image, T;
|
||||
Graphics graphics;
|
||||
Texture generatedTooltip = null; //Storage for a generated tooltip. To dispose of on exit.
|
||||
boolean needsToBeDisposed;
|
||||
float flipProcess = 0;
|
||||
@@ -60,6 +68,8 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
boolean sold = false;
|
||||
boolean flipOnClick;
|
||||
private boolean hover;
|
||||
boolean loaded = true;
|
||||
TextureParameter parameter;
|
||||
|
||||
public static int renderedCount = 0; //Counter for cards that require rendering a preview.
|
||||
static final ImageFetcher fetcher = GuiBase.getInterface().getImageFetcher();
|
||||
@@ -80,48 +90,49 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
public Reward getReward() {
|
||||
return reward;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onImageFetched() {
|
||||
image = ImageCache.getImage(reward.getCard().getImageKey(false), false);
|
||||
if (image != null) {
|
||||
try {
|
||||
String imageKey = reward.getCard().getImageKey(false);
|
||||
PaperCard card = ImageUtil.getPaperCardFromImageKey(imageKey);
|
||||
imageKey = card.getCardImageKey();
|
||||
if (StringUtils.isBlank(imageKey))
|
||||
return;
|
||||
File imageFile = ImageKeys.getImageFile(imageKey);
|
||||
if (imageFile == null)
|
||||
return;
|
||||
if (!Forge.getAssets().manager().contains(imageFile.getPath())) {
|
||||
Forge.getAssets().manager().load(imageFile.getPath(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
Forge.getAssets().manager().finishLoadingAsset(imageFile.getPath());
|
||||
}
|
||||
Texture replacement = Forge.getAssets().manager().get(imageFile.getPath(), Texture.class, false);
|
||||
if (replacement == null)
|
||||
return;
|
||||
image = replacement;
|
||||
loaded = true;
|
||||
TextureRegionDrawable drawable = new TextureRegionDrawable(ImageCache.croppedBorderImage(image));
|
||||
if(Forge.isLandscapeMode())
|
||||
drawable.setMinSize((Scene.getIntendedHeight() / RewardScene.CARD_WIDTH_TO_HEIGHT) * 0.95f, Scene.getIntendedHeight() * 0.95f);
|
||||
else
|
||||
drawable.setMinSize(Scene.getIntendedWidth() * 0.95f, Scene.getIntendedWidth()* RewardScene.CARD_WIDTH_TO_HEIGHT * 0.95f);
|
||||
if (toolTipImage != null) {
|
||||
if (toolTipImage.getDrawable() instanceof Texture) {
|
||||
((Texture) toolTipImage.getDrawable()).dispose();
|
||||
if (toolTipImage.getDrawable() instanceof TextureRegionDrawable) {
|
||||
((TextureRegionDrawable) toolTipImage.getDrawable()).getRegion().getTexture().dispose();
|
||||
}
|
||||
}
|
||||
toolTipImage.remove();
|
||||
toolTipImage = new Image(drawable);
|
||||
if (GuiBase.isAndroid()) {
|
||||
if (holdTooltip.tooltip_image.getDrawable() instanceof Texture) {
|
||||
((Texture) holdTooltip.tooltip_image.getDrawable()).dispose();
|
||||
}
|
||||
Actor ht = holdTooltip.tooltip_actor.getCells().get(0).getActor();
|
||||
if (ht != null && ht instanceof Image) {
|
||||
if (((Image) ht).getDrawable() instanceof Texture) {
|
||||
((Texture) ((Image) ht).getDrawable()).dispose();
|
||||
}
|
||||
if (holdTooltip.tooltip_image.getDrawable() instanceof TextureRegionDrawable) {
|
||||
((TextureRegionDrawable) holdTooltip.tooltip_image.getDrawable()).getRegion().getTexture().dispose();
|
||||
}
|
||||
holdTooltip.tooltip_actor.clear();
|
||||
holdTooltip.tooltip_actor.add(toolTipImage);
|
||||
} else {
|
||||
Image renderedImage = tooltip.getActor();
|
||||
if (renderedImage != null && renderedImage.getDrawable() instanceof Texture) {
|
||||
((Texture) tooltip.getActor().getDrawable()).dispose();
|
||||
}
|
||||
tooltip.setActor(toolTipImage);
|
||||
}
|
||||
if (T != null)
|
||||
T.dispose();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Gdx.graphics.requestRendering();
|
||||
}
|
||||
|
||||
public RewardActor(Reward reward, boolean flippable) {
|
||||
@@ -137,15 +148,15 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
} else {
|
||||
if (!ImageCache.imageKeyFileExists(reward.getCard().getImageKey(false))) {
|
||||
//Cannot find an image file, set up a rendered card until (if) a file is downloaded.
|
||||
Graphics G = new Graphics();
|
||||
if(renderedCount++ == 0) {
|
||||
//The first time we find a card that has no art, render one out of view to fully initialize CardImageRenderer.
|
||||
G.begin(preview_w, preview_h);
|
||||
CardImageRenderer.drawCardImage(G, CardView.getCardForUi(reward.getCard()), false, -(preview_w + 20), 0, preview_w, preview_h, CardRenderer.CardStackPosition.Top, Forge.enableUIMask.equals("Art"), true);
|
||||
G.end();
|
||||
getGraphics().begin(preview_w, preview_h);
|
||||
CardImageRenderer.drawCardImage(getGraphics(), CardView.getCardForUi(reward.getCard()), false, -(preview_w + 20), 0, preview_w, preview_h, CardRenderer.CardStackPosition.Top, Forge.enableUIMask.equals("Art"), true);
|
||||
getGraphics().end();
|
||||
}
|
||||
T = renderPlaceholder(G, reward.getCard()); //Now we can render the card.
|
||||
T = renderPlaceholder(getGraphics(), reward.getCard()); //Now we can render the card.
|
||||
setCardImage(T);
|
||||
loaded = false;
|
||||
fetcher.fetchImage(reward.getCard().getImageKey(false), this);
|
||||
}
|
||||
}
|
||||
@@ -241,7 +252,8 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
}
|
||||
|
||||
private void setCardImage(Texture img) {
|
||||
try {
|
||||
if (img == null)
|
||||
return;
|
||||
image = img;
|
||||
if (Forge.isTextureFilteringEnabled())
|
||||
image.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear);
|
||||
@@ -257,7 +269,6 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
holdTooltip = new HoldTooltip(toolTipImage);
|
||||
if (frontSideUp())
|
||||
addListener(holdTooltip);
|
||||
|
||||
} else {
|
||||
if (tooltip == null)
|
||||
tooltip = new Tooltip<Image>(toolTipImage);
|
||||
@@ -265,27 +276,24 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
if (frontSideUp())
|
||||
addListener(tooltip);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private Texture renderPlaceholder(Graphics G, PaperCard card){ //Use CardImageRenderer to output a Texture.
|
||||
private Texture renderPlaceholder(Graphics g, PaperCard card){ //Use CardImageRenderer to output a Texture.
|
||||
Matrix4 m = new Matrix4();
|
||||
FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGB888, preview_w, preview_h, false);
|
||||
frameBuffer.begin();
|
||||
m.setToOrtho2D(0,preview_h, preview_w, -preview_h); //So it renders flipped directly.
|
||||
|
||||
G.begin(preview_w, preview_h);
|
||||
G.setProjectionMatrix(m);
|
||||
G.startClip();
|
||||
CardImageRenderer.drawCardImage(G, CardView.getCardForUi(card), false, 0, 0, preview_w, preview_h, CardRenderer.CardStackPosition.Top, Forge.enableUIMask.equals("Art"), true);
|
||||
G.end();
|
||||
G.endClip();
|
||||
g.begin(preview_w, preview_h);
|
||||
g.setProjectionMatrix(m);
|
||||
g.startClip();
|
||||
CardImageRenderer.drawCardImage(g, CardView.getCardForUi(card), false, 0, 0, preview_w, preview_h, CardRenderer.CardStackPosition.Top, Forge.enableUIMask.equals("Art"), true);
|
||||
g.end();
|
||||
g.endClip();
|
||||
//Rendering ends here. Create a new Pixmap to Texture with mipmaps, otherwise will render as full black.
|
||||
Texture result = new Texture(Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h), Forge.isTextureFilteringEnabled());
|
||||
frameBuffer.end();
|
||||
G.dispose();
|
||||
g.dispose();
|
||||
frameBuffer.dispose();
|
||||
return result;
|
||||
}
|
||||
@@ -298,22 +306,21 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, preview_w, preview_h, false);
|
||||
frameBuffer.begin();
|
||||
m.setToOrtho2D(0,preview_h, preview_w, -preview_h); //So it renders flipped directly.
|
||||
Graphics G = new Graphics();
|
||||
G.begin(preview_w, preview_h);
|
||||
G.setProjectionMatrix(m);
|
||||
G.startClip();
|
||||
getGraphics().begin(preview_w, preview_h);
|
||||
getGraphics().setProjectionMatrix(m);
|
||||
getGraphics().startClip();
|
||||
//Draw item description panel.
|
||||
G.fillRect(new Color(0f, 0f, 0f, 0.96f), 0, 0, preview_w, preview_h); //Translucent background.
|
||||
G.drawRectLines(2, Color.WHITE, 0, 0, preview_w, preview_h); //Add a border.
|
||||
G.drawImage(icon, 2, 2, icon_w, icon_h); //Draw the item's icon.
|
||||
G.drawText(item.name, FSkinFont.get(24), Color.WHITE, icon_w + 2, 2, preview_w - (icon_w + 2), icon_h, false, 1, true); //Item name.
|
||||
G.drawRectLines(1, Color.WHITE, 6, icon_h + 2, preview_w - 12, preview_h - (icon_h + 6)); //Description border.
|
||||
G.drawText(item.getDescription(), FSkinFont.get(18), Color.WHITE, 10, icon_h + 8, preview_w - 10, preview_h - 4, true, Align.left, false); //Description.
|
||||
G.end();
|
||||
G.endClip();
|
||||
getGraphics().fillRect(new Color(0f, 0f, 0f, 0.96f), 0, 0, preview_w, preview_h); //Translucent background.
|
||||
getGraphics().drawRectLines(2, Color.WHITE, 0, 0, preview_w, preview_h); //Add a border.
|
||||
getGraphics().drawImage(icon, 2, 2, icon_w, icon_h); //Draw the item's icon.
|
||||
getGraphics().drawText(item.name, FSkinFont.get(24), Color.WHITE, icon_w + 2, 2, preview_w - (icon_w + 2), icon_h, false, 1, true); //Item name.
|
||||
getGraphics().drawRectLines(1, Color.WHITE, 6, icon_h + 2, preview_w - 12, preview_h - (icon_h + 6)); //Description border.
|
||||
getGraphics().drawText(item.getDescription(), FSkinFont.get(18), Color.WHITE, 10, icon_h + 8, preview_w - 10, preview_h - 4, true, Align.left, false); //Description.
|
||||
getGraphics().end();
|
||||
getGraphics().endClip();
|
||||
generatedTooltip = new Texture(Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h), Forge.isTextureFilteringEnabled());
|
||||
frameBuffer.end();
|
||||
G.dispose();
|
||||
getGraphics().dispose();
|
||||
frameBuffer.dispose();
|
||||
}
|
||||
|
||||
@@ -354,6 +361,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
if (holdTooltip != null) {
|
||||
try {
|
||||
hover = false;
|
||||
holdTooltip.tooltip_actor.clear();
|
||||
holdTooltip.tooltip_actor.remove();
|
||||
} catch (Exception e){}
|
||||
}
|
||||
@@ -430,7 +438,19 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
width = getWidth();
|
||||
x = -getWidth() / 2;
|
||||
}
|
||||
|
||||
if (Reward.Type.Card.equals(reward.getType())) {
|
||||
if (image != null) {
|
||||
drawCard(batch, image, x, width);
|
||||
} else if (!loaded) {
|
||||
if (T == null)
|
||||
T = renderPlaceholder(getGraphics(), reward.getCard());
|
||||
drawCard(batch, T, x, width);
|
||||
}
|
||||
} else if (image != null) {
|
||||
batch.draw(image, x, -getHeight() / 2, width, getHeight());
|
||||
}
|
||||
}
|
||||
private void drawCard(Batch batch, Texture image, float x, float width) {
|
||||
if (image != null) {
|
||||
if (!sold)
|
||||
batch.draw(ImageCache.croppedBorderImage(image), x, -getHeight() / 2, width, getHeight());
|
||||
@@ -447,24 +467,13 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
batch.setShader(null);
|
||||
batch.begin();
|
||||
}
|
||||
} else {
|
||||
if (Reward.Type.Card.equals(reward.getType())) {
|
||||
if (T == null) {
|
||||
T = renderPlaceholder(new Graphics(), reward.getCard());
|
||||
}
|
||||
batch.draw(T, x, -getHeight() / 2, width, getHeight());
|
||||
}
|
||||
}
|
||||
switch (reward.getType()) {
|
||||
case Card:
|
||||
break;
|
||||
case Gold:
|
||||
break;
|
||||
case Item:
|
||||
break;
|
||||
private Graphics getGraphics() {
|
||||
if (graphics == null)
|
||||
graphics = new Graphics();
|
||||
return graphics;
|
||||
}
|
||||
}
|
||||
|
||||
private void applyProjectionMatrix(Batch batch) {
|
||||
final Vector3 direction = new Vector3(0, 0, -1);
|
||||
final Vector3 up = new Vector3(0, 1, 0);
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.assets.AssetLoaderParameters;
|
||||
import com.badlogic.gdx.assets.AssetManager;
|
||||
import com.badlogic.gdx.assets.loaders.FileHandleResolver;
|
||||
import com.badlogic.gdx.assets.loaders.TextureLoader;
|
||||
import com.badlogic.gdx.assets.loaders.TextureLoader.TextureParameter;
|
||||
import com.badlogic.gdx.assets.loaders.resolvers.AbsoluteFileHandleResolver;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Pixmap;
|
||||
@@ -44,6 +44,7 @@ public class Assets implements Disposable {
|
||||
public Skin skin;
|
||||
public BitmapFont advDefaultFont, advBigFont;
|
||||
private Texture defaultImage, dummy;
|
||||
private TextureParameter parameter;
|
||||
public Assets() {
|
||||
//init titlebg fallback
|
||||
fallback_skins.put(0, new Texture(GuiBase.isAndroid()
|
||||
@@ -163,6 +164,20 @@ public class Assets implements Disposable {
|
||||
tmxMap = new ObjectMap<>();
|
||||
return tmxMap;
|
||||
}
|
||||
public TextureParameter getTextureFilter() {
|
||||
if (parameter == null)
|
||||
parameter = new TextureParameter();
|
||||
if (Forge.isTextureFilteringEnabled()) {
|
||||
parameter.genMipMaps = true;
|
||||
parameter.minFilter = Texture.TextureFilter.MipMapLinearLinear;
|
||||
parameter.magFilter = Texture.TextureFilter.Linear;
|
||||
} else {
|
||||
parameter.genMipMaps = false;
|
||||
parameter.minFilter = Texture.TextureFilter.Nearest;
|
||||
parameter.magFilter = Texture.TextureFilter.Nearest;
|
||||
}
|
||||
return parameter;
|
||||
}
|
||||
public Texture getDefaultImage() {
|
||||
if (defaultImage == null) {
|
||||
FileHandle blankImage = Gdx.files.absolute(ForgeConstants.NO_CARD_FILE);
|
||||
@@ -171,7 +186,7 @@ public class Assets implements Disposable {
|
||||
if (defaultImage != null)
|
||||
return defaultImage;
|
||||
//if not loaded yet, load to assetmanager
|
||||
manager.load(blankImage.path(), Texture.class, new TextureLoader.TextureParameter(){{genMipMaps = true; minFilter = Texture.TextureFilter.MipMapLinearLinear; magFilter = Texture.TextureFilter.Linear;}});
|
||||
manager.load(blankImage.path(), Texture.class, getTextureFilter());
|
||||
manager.finishLoadingAsset(blankImage.path());
|
||||
defaultImage = manager.get(blankImage.path());
|
||||
} else {
|
||||
@@ -232,7 +247,7 @@ public class Assets implements Disposable {
|
||||
public synchronized <T> void load(String fileName, Class<T> type, AssetLoaderParameters<T> parameter) {
|
||||
if (type.equals(Texture.class)) {
|
||||
if (parameter == null) {
|
||||
parameter = (AssetLoaderParameters<T>) new TextureLoader.TextureParameter();
|
||||
parameter = (AssetLoaderParameters<T>) new TextureParameter();
|
||||
}
|
||||
|
||||
final AssetLoaderParameters.LoadedCallback prevCallback = parameter.loadedCallback;
|
||||
|
||||
@@ -113,7 +113,7 @@ public class FSkin {
|
||||
//load theme logo while changing skins
|
||||
final FileHandle theme_logo = getSkinFile("hd_logo.png");
|
||||
if (theme_logo.exists()) {
|
||||
manager.load(theme_logo.path(), Texture.class, new TextureLoader.TextureParameter(){{genMipMaps = true; minFilter = Texture.TextureFilter.MipMapLinearLinear; magFilter = Texture.TextureFilter.Linear;}});
|
||||
manager.load(theme_logo.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(theme_logo.path());
|
||||
hdLogo = manager.get(theme_logo.path());
|
||||
} else {
|
||||
@@ -121,7 +121,7 @@ public class FSkin {
|
||||
}
|
||||
final FileHandle duals_overlay = getDefaultSkinFile("overlay_alpha.png");
|
||||
if (duals_overlay.exists()) {
|
||||
manager.load(duals_overlay.path(), Texture.class, new TextureLoader.TextureParameter(){{genMipMaps = true; minFilter = Texture.TextureFilter.MipMapLinearLinear; magFilter = Texture.TextureFilter.Linear;}});
|
||||
manager.load(duals_overlay.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(duals_overlay.path());
|
||||
overlay_alpha = manager.get(duals_overlay.path());
|
||||
} else {
|
||||
@@ -129,7 +129,7 @@ public class FSkin {
|
||||
}
|
||||
final FileHandle splatter_overlay = getDefaultSkinFile("splatter.png");
|
||||
if (splatter_overlay.exists()) {
|
||||
manager.load(splatter_overlay.path(), Texture.class, new TextureLoader.TextureParameter(){{genMipMaps = true; minFilter = Texture.TextureFilter.MipMapLinearLinear; magFilter = Texture.TextureFilter.Linear;}});
|
||||
manager.load(splatter_overlay.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(splatter_overlay.path());
|
||||
splatter = manager.get(splatter_overlay.path());
|
||||
} else {
|
||||
@@ -162,7 +162,7 @@ public class FSkin {
|
||||
h = manager.get(f.path(), Texture.class).getHeight();
|
||||
|
||||
if (f2.exists()) {
|
||||
manager.load(f2.path(), Texture.class, new TextureLoader.TextureParameter(){{genMipMaps = true; minFilter = Texture.TextureFilter.MipMapLinearLinear; magFilter = Texture.TextureFilter.Linear;}});
|
||||
manager.load(f2.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f2.path());
|
||||
splashScreen.setBackground(new TextureRegion(manager.get(f2.path(), Texture.class)));
|
||||
} else {
|
||||
@@ -212,13 +212,6 @@ public class FSkin {
|
||||
Forge.getAssets().avatars().clear();
|
||||
Forge.getAssets().sleeves().clear();
|
||||
|
||||
TextureLoader.TextureParameter parameter = new TextureLoader.TextureParameter();
|
||||
if (Forge.isTextureFilteringEnabled()) {
|
||||
parameter.genMipMaps = true;
|
||||
parameter.minFilter = Texture.TextureFilter.MipMapLinearLinear;
|
||||
parameter.magFilter = Texture.TextureFilter.Linear;
|
||||
}
|
||||
|
||||
AssetManager manager = Forge.getAssets().manager();
|
||||
|
||||
// Grab and test various sprite files.
|
||||
@@ -273,7 +266,7 @@ public class FSkin {
|
||||
if (GuiBase.isAndroid() && Forge.totalDeviceRAM <5000) {
|
||||
Forge.hdbuttons = false;
|
||||
} else {
|
||||
manager.load(f11.path(), Texture.class, new TextureLoader.TextureParameter(){{genMipMaps = true; minFilter = Texture.TextureFilter.MipMapLinearLinear; magFilter = Texture.TextureFilter.Linear;}});
|
||||
manager.load(f11.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f11.path());
|
||||
Forge.hdbuttons = true;
|
||||
}
|
||||
@@ -282,7 +275,7 @@ public class FSkin {
|
||||
if (GuiBase.isAndroid() && Forge.totalDeviceRAM <5000) {
|
||||
Forge.hdstart = false;
|
||||
} else {
|
||||
manager.load(f12.path(), Texture.class, new TextureLoader.TextureParameter(){{genMipMaps = true; minFilter = Texture.TextureFilter.MipMapLinearLinear; magFilter = Texture.TextureFilter.Linear;}});
|
||||
manager.load(f12.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f12.path());
|
||||
Forge.hdstart = true;
|
||||
}
|
||||
@@ -320,15 +313,15 @@ public class FSkin {
|
||||
pxDefaultAvatars = new Pixmap(f4);
|
||||
pxDefaultSleeves = new Pixmap(f8);
|
||||
//default avatar
|
||||
manager.load(f4.path(), Texture.class, parameter);
|
||||
manager.load(f4.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f4.path());
|
||||
//sleeves first set
|
||||
manager.load(f8.path(), Texture.class, parameter);
|
||||
manager.load(f8.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f8.path());
|
||||
//preferred avatar
|
||||
if (f5.exists()) {
|
||||
pxPreferredAvatars = new Pixmap(f5);
|
||||
manager.load(f5.path(), Texture.class, parameter);
|
||||
manager.load(f5.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f5.path());
|
||||
|
||||
final int pw = pxPreferredAvatars.getWidth();
|
||||
@@ -360,7 +353,7 @@ public class FSkin {
|
||||
}
|
||||
if (f20.exists()) {
|
||||
pxPreferredSleeves = new Pixmap(f20);
|
||||
manager.load(f20.path(), Texture.class, parameter);
|
||||
manager.load(f20.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f20.path());
|
||||
|
||||
final int sw = pxPreferredSleeves.getWidth();
|
||||
@@ -388,7 +381,7 @@ public class FSkin {
|
||||
}
|
||||
if (f21.exists()) {
|
||||
pxPreferredSleeves = new Pixmap(f21);
|
||||
manager.load(f21.path(), Texture.class, parameter);
|
||||
manager.load(f21.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f21.path());
|
||||
|
||||
final int sw = pxPreferredSleeves.getWidth();
|
||||
@@ -405,7 +398,7 @@ public class FSkin {
|
||||
} else {
|
||||
//re init second set of sleeves
|
||||
pxDefaultSleeves = new Pixmap(f9);
|
||||
manager.load(f9.path(), Texture.class, parameter);
|
||||
manager.load(f9.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f9.path());
|
||||
|
||||
final int sw2 = pxDefaultSleeves.getWidth();
|
||||
@@ -421,7 +414,7 @@ public class FSkin {
|
||||
}
|
||||
|
||||
//cracks
|
||||
manager.load(f17.path(), Texture.class, parameter);
|
||||
manager.load(f17.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f17.path());
|
||||
int crackCount = 0;
|
||||
for (int j = 0; j < 4; j++) {
|
||||
@@ -438,7 +431,7 @@ public class FSkin {
|
||||
Forge.getAssets().borders().put(0, new TextureRegion(manager.get(f10.path(), Texture.class), 2, 2, 672, 936));
|
||||
Forge.getAssets().borders().put(1, new TextureRegion(manager.get(f10.path(), Texture.class), 676, 2, 672, 936));
|
||||
//deckboxes
|
||||
manager.load(f13.path(), Texture.class, parameter);
|
||||
manager.load(f13.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(f13.path());
|
||||
//gold bg
|
||||
Forge.getAssets().deckbox().put(0, new TextureRegion(manager.get(f13.path(), Texture.class), 2, 2, 488, 680));
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package forge.assets;
|
||||
|
||||
import com.badlogic.gdx.assets.AssetManager;
|
||||
import com.badlogic.gdx.assets.loaders.TextureLoader.TextureParameter;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Pixmap;
|
||||
@@ -543,13 +542,7 @@ public enum FSkinImage implements FImage {
|
||||
if (texture == null) {
|
||||
if (preferredFile.exists()) {
|
||||
try {
|
||||
TextureParameter parameter = new TextureParameter();
|
||||
if (Forge.isTextureFilteringEnabled()) {
|
||||
parameter.genMipMaps = true;
|
||||
parameter.minFilter = Texture.TextureFilter.MipMapLinearLinear;
|
||||
parameter.magFilter = Texture.TextureFilter.Linear;
|
||||
}
|
||||
manager.load(preferredFile.path(), Texture.class, parameter);
|
||||
manager.load(preferredFile.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(preferredFile.path());
|
||||
texture = manager.get(preferredFile.path(), Texture.class);
|
||||
}
|
||||
@@ -622,13 +615,7 @@ public enum FSkinImage implements FImage {
|
||||
if (texture == null) {
|
||||
if (defaultFile.exists()) {
|
||||
try {
|
||||
TextureParameter parameter = new TextureParameter();
|
||||
if (Forge.isTextureFilteringEnabled()) {
|
||||
parameter.genMipMaps = true;
|
||||
parameter.minFilter = Texture.TextureFilter.MipMapLinearLinear;
|
||||
parameter.magFilter = Texture.TextureFilter.Linear;
|
||||
}
|
||||
manager.load(defaultFile.path(), Texture.class, parameter);
|
||||
manager.load(defaultFile.path(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||
manager.finishLoadingAsset(defaultFile.path());
|
||||
texture = manager.get(defaultFile.path(), Texture.class);
|
||||
}
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
package forge.assets;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ConcurrentModificationException;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
|
||||
import com.badlogic.gdx.assets.loaders.TextureLoader.TextureParameter;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Pixmap;
|
||||
import com.badlogic.gdx.graphics.TextureData;
|
||||
@@ -82,13 +82,7 @@ public class ImageCache {
|
||||
static EvictingQueue<String> q;
|
||||
static Set<String> cardsLoaded;
|
||||
static Queue<String> syncQ;
|
||||
static TextureParameter defaultParameter = new TextureParameter();
|
||||
static TextureParameter filtered = new TextureParameter();
|
||||
public static void initCache(int capacity) {
|
||||
//init filter
|
||||
filtered.genMipMaps = true;
|
||||
filtered.minFilter = Texture.TextureFilter.MipMapLinearLinear;
|
||||
filtered.magFilter = Texture.TextureFilter.Linear;
|
||||
//override maxCardCapacity
|
||||
maxCardCapacity = capacity;
|
||||
//init q
|
||||
@@ -292,7 +286,7 @@ public class ImageCache {
|
||||
String fileName = file.getPath();
|
||||
//load to assetmanager
|
||||
if (!Forge.getAssets().manager().contains(fileName, Texture.class)) {
|
||||
Forge.getAssets().manager().load(fileName, Texture.class, Forge.isTextureFilteringEnabled() ? filtered : defaultParameter);
|
||||
Forge.getAssets().manager().load(fileName, Texture.class, Forge.getAssets().getTextureFilter());
|
||||
Forge.getAssets().manager().finishLoadingAsset(fileName);
|
||||
counter+=1;
|
||||
}
|
||||
@@ -320,15 +314,19 @@ public class ImageCache {
|
||||
//get all images not in newQ (cardLists to unload)
|
||||
Set<String> toUnload = Sets.difference(cardsLoaded, newQ);
|
||||
//unload from assetmanager to save RAM
|
||||
try {
|
||||
for (String asset : toUnload) {
|
||||
if(manager.contains(asset)) {
|
||||
if (manager.contains(asset)) {
|
||||
manager.unload(asset);
|
||||
}
|
||||
cardsLoaded.remove(asset);
|
||||
}
|
||||
//clear cachedArt since this is dependant to the loaded texture
|
||||
CardRenderer.clearcardArtCache();
|
||||
((Forge)Gdx.app.getApplicationListener()).needsUpdate = true;
|
||||
((Forge) Gdx.app.getApplicationListener()).needsUpdate = true;
|
||||
} catch (ConcurrentModificationException e) {
|
||||
//e.printstacktrace
|
||||
}
|
||||
}
|
||||
public static void preloadCache(Iterable<String> keys) {
|
||||
if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES))
|
||||
|
||||
Reference in New Issue
Block a user