package magic.ui.duel.viewerinfo; import java.awt.image.BufferedImage; import magic.model.MagicCard; import magic.model.MagicCardDefinition; import magic.model.MagicLocationType; import magic.model.MagicObject; import magic.model.MagicPermanent; import magic.model.MagicType; import magic.model.stack.MagicCardOnStack; import magic.ui.MagicImages; import magic.utility.MagicSystem; public class CardViewerInfo { public static final CardViewerInfo NO_CARD = new CardViewerInfo(MagicCard.NONE); private final MagicCard magicCard; private final MagicCardDefinition frontFace; private final MagicCardDefinition backFace; private final MagicObject magicObject; CardViewerInfo(final MagicCard aCard) { this.magicCard = aCard; this.magicObject = aCard; this.frontFace = aCard.getCardDefinition(); this.backFace = getBackFace(frontFace); } CardViewerInfo(MagicPermanent aPerm) { this.magicCard = aPerm.getCard(); this.magicObject = aPerm; this.frontFace = getFrontFace(aPerm); this.backFace = getBackFace(frontFace); } CardViewerInfo(MagicCardOnStack aCard) { this.magicCard = aCard.getCard(); this.magicObject = aCard; this.frontFace = getFrontFace(aCard); this.backFace = getBackFace(frontFace); } public boolean isEmpty() { return magicCard == MagicCard.NONE; } public boolean isNotEmpty() { return isEmpty() == false; } public boolean isLand() { return magicCard.hasType(MagicType.Land); } public MagicObject getMagicObject() { return magicObject; } public BufferedImage getImage() { return MagicImages.getCardImage(frontFace); } public BufferedImage getBackFaceImage() { return backFace == MagicCardDefinition.UNKNOWN ? MagicImages.BACK_IMAGE : MagicImages.getCardImage(backFace); } public MagicLocationType getLocation() { return magicCard.getLocation(); } public long getId() { return magicCard.getId(); } public int getControllerIndex() { return magicCard.getController().getIndex(); } public boolean usesStack() { return frontFace.usesStack(); } private MagicCardDefinition getFrontFace(MagicCardOnStack aCard) { return aCard.getController().isHuman() || MagicSystem.isAiVersusAi() ? aCard.getRealCardDefinition() : aCard.getCardDefinition(); } private MagicCardDefinition getFrontFace(MagicPermanent aCard) { return aCard.getController().isHuman() || MagicSystem.isAiVersusAi() ? aCard.getRealCardDefinition() : aCard.getCardDefinition(); } private MagicCardDefinition getBackFace(MagicCardDefinition aCard) { return aCard.isDoubleFaced() ? aCard.getTransformedDefinition() : MagicCardDefinition.UNKNOWN; } }