enable split card rendering in Cardbuilder
parent
57b5114727
commit
beb223b264
|
@ -37,6 +37,10 @@ public interface IRenderableCard {
|
|||
return getCardDefinition().getTransformedDefinition();
|
||||
}
|
||||
|
||||
default MagicCardDefinition getSplitDefinition() {
|
||||
return getCardDefinition().getSplitDefinition();
|
||||
}
|
||||
|
||||
default int getStartingLoyalty() {
|
||||
return getCardDefinition().getStartingLoyalty();
|
||||
}
|
||||
|
@ -79,6 +83,10 @@ public interface IRenderableCard {
|
|||
return getCardDefinition().isHidden();
|
||||
}
|
||||
|
||||
default boolean isSecondHalf() {
|
||||
return getCardDefinition().isSecondHalf();
|
||||
}
|
||||
|
||||
default Character getRarityChar() {
|
||||
return getCardDefinition().getRarityChar();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package magic.ui.cardBuilder.renderers;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import magic.model.MagicAbility;
|
||||
|
@ -27,6 +29,9 @@ public class CardBuilder {
|
|||
} else if (cardDef.isFlipCard()) {
|
||||
image = makeFlipCard(cardDef);
|
||||
|
||||
} else if (cardDef.isSplitCard()) {
|
||||
image = makeSplitCard(cardDef);
|
||||
|
||||
} else {
|
||||
image = makeBasicCard(cardDef);
|
||||
}
|
||||
|
@ -58,6 +63,33 @@ public class CardBuilder {
|
|||
return makeBasicCard(cardDef);
|
||||
}
|
||||
|
||||
private static BufferedImage makeSplitCard(IRenderableCard cardDef) {
|
||||
BufferedImage firstHalf;
|
||||
BufferedImage secondHalf;
|
||||
if (cardDef.isSecondHalf()) {
|
||||
firstHalf = makeBasicCard(cardDef.getSplitDefinition());
|
||||
secondHalf = makeBasicCard(cardDef);
|
||||
} else {
|
||||
firstHalf = makeBasicCard(cardDef);
|
||||
secondHalf = makeBasicCard(cardDef.getSplitDefinition());
|
||||
}
|
||||
BufferedImage base = new BufferedImage(firstHalf.getHeight(), firstHalf.getWidth() * 2, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D graphics2D = base.createGraphics();
|
||||
//Transforms occur in reverse order
|
||||
AffineTransform affineTransform1 = new AffineTransform();
|
||||
affineTransform1.translate(0, firstHalf.getWidth() * 2);
|
||||
affineTransform1.rotate(-Math.PI / 2, 0, 0);
|
||||
graphics2D.drawImage(firstHalf, affineTransform1, null);
|
||||
|
||||
AffineTransform affineTransform2 = new AffineTransform();
|
||||
affineTransform2.translate(0, secondHalf.getWidth());
|
||||
affineTransform2.rotate(-Math.PI / 2, 0, 0);
|
||||
graphics2D.drawImage(secondHalf, affineTransform2, null);
|
||||
|
||||
graphics2D.dispose();
|
||||
return base;
|
||||
}
|
||||
|
||||
private static BufferedImage makeToken(IRenderableCard cardDef) {
|
||||
BufferedImage cardImage = Frame.getTokenFrameType(cardDef);
|
||||
PTFrame.drawPTPanel(cardImage, cardDef);
|
||||
|
@ -83,11 +115,11 @@ public class CardBuilder {
|
|||
private static BufferedImage makeBasicCard(IRenderableCard cardDef) {
|
||||
BufferedImage cardImage = cardDef.hasAbility(MagicAbility.Devoid) ? Frame.getColorlessFrameType(cardDef) : Frame.getBasicFrameType(cardDef);
|
||||
Overlay.drawOverlay(cardImage, cardDef);
|
||||
Overlay.drawTextOverlay(cardImage,cardDef);
|
||||
if (cardDef.hasAbility(MagicAbility.LevelUp)){
|
||||
PTFrame.drawLevellerPTPanels(cardImage,cardDef);
|
||||
PTFrame.drawLevellerArrowText(cardImage,cardDef);
|
||||
OracleText.drawLevellerOracleText(cardImage,cardDef);
|
||||
Overlay.drawTextOverlay(cardImage, cardDef);
|
||||
if (cardDef.hasAbility(MagicAbility.LevelUp)) {
|
||||
PTFrame.drawLevellerPTPanels(cardImage, cardDef);
|
||||
PTFrame.drawLevellerArrowText(cardImage, cardDef);
|
||||
OracleText.drawLevellerOracleText(cardImage, cardDef);
|
||||
} else {
|
||||
PTFrame.drawPTPanel(cardImage, cardDef);
|
||||
OracleText.drawOracleText(cardImage, cardDef);
|
||||
|
|
Loading…
Reference in New Issue