mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
#Update Meld Transform
This commit is contained in:
@@ -388,6 +388,43 @@ public class CardRenderer {
|
|||||||
return cardArt;
|
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) {
|
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();
|
final CardStateView state = card.getCurrentState();
|
||||||
if (card.getId() > 0) {
|
if (card.getId() > 0) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import forge.Forge;
|
|||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
import forge.animation.ForgeAnimation;
|
import forge.animation.ForgeAnimation;
|
||||||
import forge.assets.FSkin;
|
import forge.assets.FSkin;
|
||||||
|
import forge.card.CardImageRenderer;
|
||||||
import forge.card.CardRenderer;
|
import forge.card.CardRenderer;
|
||||||
import forge.card.CardRenderer.CardStackPosition;
|
import forge.card.CardRenderer.CardStackPosition;
|
||||||
import forge.card.CardStateName;
|
import forge.card.CardStateName;
|
||||||
@@ -200,7 +201,7 @@ public class FCardPanel extends FDisplayObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
private class CardTransformAnimation extends ForgeAnimation {
|
private class CardTransformAnimation extends ForgeAnimation {
|
||||||
private static final float DURATION = 0.18f;
|
private float DURATION = 0.18f;
|
||||||
private float progress = 0;
|
private float progress = 0;
|
||||||
|
|
||||||
private void drawCard(Graphics g, CardView card, float x, float y, float w, float h) {
|
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 x2 = x + (w - (w*mod))/2;
|
||||||
float w2 = w*mod;
|
float w2 = w*mod;
|
||||||
float h2 = h*mod;
|
float h2 = h*mod;
|
||||||
|
float gap = (h/2) - (percentage*(h/2));
|
||||||
if (card.getCurrentState().getState() == CardStateName.Original) {
|
if (card.getCurrentState().getState() == CardStateName.Original) {
|
||||||
|
DURATION = 0.16f;
|
||||||
//rollback
|
//rollback
|
||||||
CardRenderer.drawCardWithOverlays(g, card, x2, y, w2, h, getStackPosition());
|
CardRenderer.drawCardWithOverlays(g, card, x2, y, w2, h, getStackPosition());
|
||||||
} else if (card.hasAlternateState() && (card.getCurrentState().getState() == CardStateName.Flipped
|
} else {
|
||||||
|| card.getCurrentState().getState() == CardStateName.Transformed || card.getCurrentState().getState() == CardStateName.Meld)) {
|
|
||||||
//transform
|
//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());
|
CardRenderer.drawCardWithOverlays(g, card, x2, y, w2, h, getStackPosition());
|
||||||
else if (card.getCurrentState().getState() == CardStateName.Meld)
|
} else if (card.getCurrentState().getState() == CardStateName.Meld) {
|
||||||
CardRenderer.drawCardWithOverlays(g, card, x2, y2, w2, h2, getStackPosition());
|
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
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user