forked from External/mage
GUI: improved double faced tokens:
- added tokens support in test render dialog; - improved PT drawing; - fixed broken second side switch button (related to #10231); - fixed miss override in TokenImpl (all override with backFace must be removed, see todo);
This commit is contained in:
parent
8cb89a9a98
commit
583c5fe4e9
13 changed files with 270 additions and 140 deletions
|
|
@ -362,6 +362,8 @@ public class CardPanelRenderModeImage extends CardPanel {
|
|||
int cardXOffset = 0;
|
||||
int cardYOffset = 0;
|
||||
|
||||
CardView cardView = getGameCard();
|
||||
|
||||
// workaround to fix a rare NPE error with image loading
|
||||
// reason: panel runs image load in another thread and that thread can be completed before top panel init, see updateArtImage
|
||||
if (getTopPanelRef() == null) {
|
||||
|
|
@ -381,7 +383,7 @@ public class CardPanelRenderModeImage extends CardPanel {
|
|||
imagePanel.setLocation(realCardSize.x, realCardSize.y);
|
||||
imagePanel.setSize(realCardSize.width, realCardSize.height);
|
||||
|
||||
if (hasSickness() && getGameCard().isCreature() && isPermanent()) {
|
||||
if (hasSickness() && cardView.isCreature() && isPermanent()) {
|
||||
overlayPanel.setLocation(realCardSize.x, realCardSize.y);
|
||||
overlayPanel.setSize(realCardSize.width, realCardSize.height);
|
||||
} else {
|
||||
|
|
@ -441,10 +443,27 @@ public class CardPanelRenderModeImage extends CardPanel {
|
|||
fullImageText.setBounds(titleText.getX(), titleText.getY(), titleText.getBounds().width, titleText.getBounds().height);
|
||||
|
||||
// PT (font as title)
|
||||
if (getGameCard().getOriginalCard() != null) {
|
||||
prepareGlowFont(ptText1, Math.max(CARD_PT_FONT_MIN_SIZE, fontSize), getGameCard().getOriginalCard().getPower(), false);
|
||||
if (cardView.showPT()) {
|
||||
|
||||
// real PT info
|
||||
MageInt currentPower;
|
||||
MageInt currentToughness;
|
||||
if (cardView.getOriginalCard() != null) {
|
||||
// card
|
||||
currentPower = cardView.getOriginalCard().getPower();
|
||||
currentToughness = cardView.getOriginalCard().getToughness();
|
||||
} else if (cardView.getOriginalToken() != null) {
|
||||
// token
|
||||
currentPower = cardView.getOriginalToken().getPower();
|
||||
currentToughness = cardView.getOriginalToken().getToughness();
|
||||
} else {
|
||||
currentPower = null;
|
||||
currentToughness = null;
|
||||
}
|
||||
|
||||
prepareGlowFont(ptText1, Math.max(CARD_PT_FONT_MIN_SIZE, fontSize), currentPower, false);
|
||||
prepareGlowFont(ptText2, Math.max(CARD_PT_FONT_MIN_SIZE, fontSize), null, false);
|
||||
prepareGlowFont(ptText3, Math.max(CARD_PT_FONT_MIN_SIZE, fontSize), getGameCard().getOriginalCard().getToughness(), CardRendererUtils.isCardWithDamage(getGameCard()));
|
||||
prepareGlowFont(ptText3, Math.max(CARD_PT_FONT_MIN_SIZE, fontSize), currentToughness, CardRendererUtils.isCardWithDamage(cardView));
|
||||
|
||||
// right bottom corner with margin (sizes from any sample card)
|
||||
int ptMarginRight = Math.round(64f / 672f * cardWidth);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package org.mage.card.arcane;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.cards.ArtRect;
|
||||
import mage.cards.FrameStyle;
|
||||
|
|
@ -1044,7 +1045,7 @@ public class ModernCardRenderer extends CardRenderer {
|
|||
|
||||
// Is it a creature?
|
||||
boolean isVehicle = cardView.getSubTypes().contains(SubType.VEHICLE);
|
||||
if (cardView.isCreature() || isVehicle) {
|
||||
if (cardView.showPT()) {
|
||||
|
||||
// draws p/t by parts
|
||||
int ptDeviderSpace = 1; // Arial font is too narrow for devider (2/2) and needs extra space
|
||||
|
|
@ -1093,19 +1094,35 @@ public class ModernCardRenderer extends CardRenderer {
|
|||
g.setColor(defaultTextColor);
|
||||
g.setFont(ptTextFont);
|
||||
|
||||
// real PT info
|
||||
MageInt currentPower;
|
||||
MageInt currentToughness;
|
||||
if (cardView.getOriginalCard() != null) {
|
||||
// card
|
||||
currentPower = cardView.getOriginalCard().getPower();
|
||||
currentToughness = cardView.getOriginalCard().getToughness();
|
||||
} else if (cardView.getOriginalToken() != null) {
|
||||
// token
|
||||
currentPower = cardView.getOriginalToken().getPower();
|
||||
currentToughness = cardView.getOriginalToken().getToughness();
|
||||
} else {
|
||||
currentPower = null;
|
||||
currentToughness = null;
|
||||
}
|
||||
|
||||
// draws
|
||||
int ptEmptySpace = (partBoxWidth - ptContentWidth) / 2;
|
||||
int ptPosStart1 = x + contentInset + ptEmptySpace;
|
||||
int ptPosStart2 = ptPosStart1 + ptTextWidth1 + ptDeviderSpace;
|
||||
int ptPosStart3 = ptPosStart2 + ptTextWidth2 + ptDeviderSpace;
|
||||
// p
|
||||
g.setColor(CardRendererUtils.getCardTextColor(cardView.getOriginalCard().getPower(), false, defaultTextColor, defaultTextLight));
|
||||
g.setColor(CardRendererUtils.getCardTextColor(currentPower, false, defaultTextColor, defaultTextLight));
|
||||
g.drawString(ptText1, ptPosStart1, curY - ptTextOffset - 1); // left
|
||||
// /
|
||||
g.setColor(defaultTextColor);
|
||||
g.drawString(ptText2, ptPosStart2, curY - ptTextOffset - 1); // center
|
||||
// t
|
||||
g.setColor(CardRendererUtils.getCardTextColor(cardView.getOriginalCard().getToughness(), CardRendererUtils.isCardWithDamage(cardView), defaultTextColor, defaultTextLight));
|
||||
g.setColor(CardRendererUtils.getCardTextColor(currentToughness, CardRendererUtils.isCardWithDamage(cardView), defaultTextColor, defaultTextLight));
|
||||
g.drawString(ptText3, ptPosStart3, curY - ptTextOffset - 1); // right
|
||||
//
|
||||
g.setColor(defaultTextColor);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue