mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
#Update Meld Transform
This commit is contained in:
@@ -388,6 +388,43 @@ public class CardRenderer {
|
||||
return cardArt;
|
||||
}
|
||||
|
||||
public static FImageComplex getMeldCardParts(final String imageKey, boolean bottom) {
|
||||
FImageComplex cardArt;
|
||||
if (!bottom) {
|
||||
cardArt = cardArtCache.get("Meld_primary_"+imageKey);
|
||||
} else {
|
||||
cardArt = cardArtCache.get("Meld_secondary_"+imageKey);
|
||||
}
|
||||
|
||||
if (cardArt == null) {
|
||||
Texture image = new CachedCardImage(imageKey) {
|
||||
@Override
|
||||
public void onImageFetched() {
|
||||
ImageCache.clear();
|
||||
cardArtCache.remove("Meld_primary_" + imageKey);
|
||||
cardArtCache.remove("Meld_secondary_" + imageKey);
|
||||
}
|
||||
}.getImage();
|
||||
if (image != null) {
|
||||
if (image == ImageCache.defaultImage) {
|
||||
cardArt = CardImageRenderer.forgeArt;
|
||||
} else {
|
||||
float x = 0;
|
||||
float w = image.getWidth();
|
||||
float h = image.getHeight()/2f;
|
||||
float y = bottom ? h : 0;
|
||||
cardArt = new FTextureRegionImage(new TextureRegion(image, Math.round(x), Math.round(y), Math.round(w), Math.round(h)));
|
||||
|
||||
}
|
||||
if (!bottom)
|
||||
cardArtCache.put("Meld_primary_"+imageKey, cardArt);
|
||||
else
|
||||
cardArtCache.put("Meld_secondary_"+imageKey, cardArt);
|
||||
}
|
||||
}
|
||||
return cardArt;
|
||||
}
|
||||
|
||||
public static void drawCardListItem(Graphics g, FSkinFont font, FSkinColor foreColor, CardView card, int count, String suffix, float x, float y, float w, float h, boolean compactMode) {
|
||||
final CardStateView state = card.getCurrentState();
|
||||
if (card.getId() > 0) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import forge.Forge;
|
||||
import forge.Graphics;
|
||||
import forge.animation.ForgeAnimation;
|
||||
import forge.assets.FSkin;
|
||||
import forge.card.CardImageRenderer;
|
||||
import forge.card.CardRenderer;
|
||||
import forge.card.CardRenderer.CardStackPosition;
|
||||
import forge.card.CardStateName;
|
||||
@@ -200,7 +201,7 @@ public class FCardPanel extends FDisplayObject {
|
||||
}
|
||||
}
|
||||
private class CardTransformAnimation extends ForgeAnimation {
|
||||
private static final float DURATION = 0.18f;
|
||||
private float DURATION = 0.18f;
|
||||
private float progress = 0;
|
||||
|
||||
private void drawCard(Graphics g, CardView card, float x, float y, float w, float h) {
|
||||
@@ -216,16 +217,29 @@ public class FCardPanel extends FDisplayObject {
|
||||
float x2 = x + (w - (w*mod))/2;
|
||||
float w2 = w*mod;
|
||||
float h2 = h*mod;
|
||||
float gap = (h/2) - (percentage*(h/2));
|
||||
if (card.getCurrentState().getState() == CardStateName.Original) {
|
||||
DURATION = 0.16f;
|
||||
//rollback
|
||||
CardRenderer.drawCardWithOverlays(g, card, x2, y, w2, h, getStackPosition());
|
||||
} else if (card.hasAlternateState() && (card.getCurrentState().getState() == CardStateName.Flipped
|
||||
|| card.getCurrentState().getState() == CardStateName.Transformed || card.getCurrentState().getState() == CardStateName.Meld)) {
|
||||
} else {
|
||||
//transform
|
||||
if (card.getCurrentState().getState() == CardStateName.Transformed || card.getCurrentState().getState() == CardStateName.Flipped)
|
||||
if (card.getCurrentState().getState() == CardStateName.Transformed || card.getCurrentState().getState() == CardStateName.Flipped) {
|
||||
DURATION = 0.16f;
|
||||
CardRenderer.drawCardWithOverlays(g, card, x2, y, w2, h, getStackPosition());
|
||||
else if (card.getCurrentState().getState() == CardStateName.Meld)
|
||||
} else if (card.getCurrentState().getState() == CardStateName.Meld) {
|
||||
if (CardRenderer.getMeldCardParts(card.getCurrentState().getImageKey(), false) == CardImageRenderer.forgeArt) {
|
||||
DURATION = 0.18f;
|
||||
CardRenderer.drawCardWithOverlays(g, card, x2, y2, w2, h2, getStackPosition());
|
||||
} else {
|
||||
//Meld Animation merging
|
||||
DURATION = 0.25f;
|
||||
//top card
|
||||
g.drawImage(CardRenderer.getMeldCardParts(card.getCurrentState().getImageKey(), false), x, y-gap, w, h/2);
|
||||
//bottom card
|
||||
g.drawImage(CardRenderer.getMeldCardParts(card.getCurrentState().getImageKey(), true), x, y+h/2+gap, w, h/2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user