mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
refactor RewardActor
- fetched images online should update and appear immediately after download on Adventure mode on RewardScene (Shop, Loot)
This commit is contained in:
@@ -73,6 +73,8 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
if (generatedTooltip != null)
|
||||
generatedTooltip.dispose();
|
||||
}
|
||||
if (T != null)
|
||||
T.dispose();
|
||||
}
|
||||
|
||||
public Reward getReward() {
|
||||
@@ -81,7 +83,50 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
|
||||
@Override
|
||||
public void onImageFetched() {
|
||||
setCardImage(ImageCache.getImage(reward.getCard().getImageKey(false), false));
|
||||
for (Actor a : getStage().getActors()) {
|
||||
if (a instanceof RewardActor && a == this) {
|
||||
((RewardActor) a).image = ImageCache.getImage(reward.getCard().getImageKey(false), false);
|
||||
if (((RewardActor) a).image != null) {
|
||||
try {
|
||||
TextureRegionDrawable drawable = new TextureRegionDrawable(ImageCache.croppedBorderImage(((RewardActor) a).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();
|
||||
}
|
||||
}
|
||||
toolTipImage.remove();
|
||||
toolTipImage = new Image(drawable);
|
||||
if (GuiBase.isAndroid()) {
|
||||
if (((RewardActor) a).holdTooltip.tooltip_image.getDrawable() instanceof Texture) {
|
||||
((Texture) ((RewardActor) a).holdTooltip.tooltip_image.getDrawable()).dispose();
|
||||
}
|
||||
Actor ht = ((RewardActor) a).holdTooltip.tooltip_actor.getCells().get(0).getActor();
|
||||
if (ht != null && ht instanceof Image) {
|
||||
if (((Image) ht).getDrawable() instanceof Texture) {
|
||||
((Texture) ((Image) ht).getDrawable()).dispose();
|
||||
}
|
||||
}
|
||||
((RewardActor) a).holdTooltip.tooltip_actor.removeActorAt(0, false);
|
||||
((RewardActor) a).holdTooltip.tooltip_actor.add(toolTipImage);
|
||||
} else {
|
||||
Image renderedImage = ((RewardActor) a).tooltip.getActor();
|
||||
if (renderedImage != null && renderedImage.getDrawable() instanceof Texture) {
|
||||
((Texture) ((RewardActor) a).tooltip.getActor().getDrawable()).dispose();
|
||||
}
|
||||
((RewardActor) a).tooltip.setActor(toolTipImage);
|
||||
}
|
||||
if (T != null)
|
||||
T.dispose();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public RewardActor(Reward reward, boolean flippable) {
|
||||
@@ -106,13 +151,6 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
}
|
||||
T = renderPlaceholder(G, reward.getCard()); //Now we can render the card.
|
||||
setCardImage(T);
|
||||
if (image == null) {
|
||||
if (T == null)
|
||||
System.err.println("Error generating placeholder image for card: "+reward.getCard().getName());
|
||||
else
|
||||
image = T;
|
||||
}
|
||||
//Set the fetcher regardless. It'll replace the preview once it lands.
|
||||
fetcher.fetchImage(reward.getCard().getImageKey(false), this);
|
||||
}
|
||||
}
|
||||
@@ -217,14 +255,19 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
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)
|
||||
toolTipImage = new Image(drawable);
|
||||
tooltip = new Tooltip<Image>(toolTipImage);
|
||||
holdTooltip = new HoldTooltip(new Image(drawable));
|
||||
tooltip.setInstant(true);
|
||||
if (frontSideUp()) {
|
||||
if (GuiBase.isAndroid())
|
||||
if (GuiBase.isAndroid()) {
|
||||
if (holdTooltip == null)
|
||||
holdTooltip = new HoldTooltip(toolTipImage);
|
||||
if (frontSideUp())
|
||||
addListener(holdTooltip);
|
||||
else
|
||||
|
||||
} else {
|
||||
if (tooltip == null)
|
||||
tooltip = new Tooltip<Image>(toolTipImage);
|
||||
tooltip.setInstant(true);
|
||||
if (frontSideUp())
|
||||
addListener(tooltip);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -253,6 +296,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
}
|
||||
|
||||
private void setItemTooltips(Sprite icon) {
|
||||
if (generatedTooltip == null) {
|
||||
float icon_w = 64f; float icon_h = 64f; //Sizes for the embedded icon. Could be made smaller on smaller resolutions.
|
||||
Matrix4 m = new Matrix4();
|
||||
ItemData item = getReward().getItem();
|
||||
@@ -272,26 +316,36 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
||||
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();
|
||||
Texture result = new Texture(Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h), Forge.isTextureFilteringEnabled());
|
||||
generatedTooltip = new Texture(Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h), Forge.isTextureFilteringEnabled());
|
||||
frameBuffer.end();
|
||||
G.dispose();
|
||||
frameBuffer.dispose();
|
||||
}
|
||||
|
||||
//Rendering code ends here.
|
||||
|
||||
TextureRegionDrawable drawable = new TextureRegionDrawable(result);
|
||||
TextureRegionDrawable drawable = new TextureRegionDrawable(generatedTooltip);
|
||||
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)
|
||||
toolTipImage = new Image(drawable);
|
||||
tooltip = new Tooltip<>(toolTipImage);
|
||||
holdTooltip = new HoldTooltip(new Image(drawable));
|
||||
tooltip.setInstant(true);
|
||||
|
||||
if (frontSideUp()) {
|
||||
if (GuiBase.isAndroid()) addListener(holdTooltip);
|
||||
else addListener(tooltip);
|
||||
if (GuiBase.isAndroid()) {
|
||||
if (holdTooltip == null)
|
||||
holdTooltip = new HoldTooltip(toolTipImage);
|
||||
addListener(holdTooltip);
|
||||
} else {
|
||||
if (tooltip == null) {
|
||||
tooltip = new Tooltip<>(toolTipImage);
|
||||
tooltip.setInstant(true);
|
||||
}
|
||||
addListener(tooltip);
|
||||
}
|
||||
}
|
||||
generatedTooltip = result; //Dispose of this later.
|
||||
}
|
||||
|
||||
private boolean frontSideUp() {
|
||||
|
||||
Reference in New Issue
Block a user