mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Improve and standardize rarity colors
This commit is contained in:
@@ -21,7 +21,7 @@ package forge.gui;
|
||||
import forge.Singletons;
|
||||
import forge.card.CardCharacteristicName;
|
||||
import forge.card.CardDetailUtil;
|
||||
import forge.card.CardDetailUtil.CardBorderColor;
|
||||
import forge.card.CardDetailUtil.DetailColors;
|
||||
import forge.card.CardEdition;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.zone.ZoneType;
|
||||
@@ -49,7 +49,9 @@ public class CardDetailPanel extends SkinnedPanel {
|
||||
/** Constant <code>serialVersionUID=-8461473263764812323L</code>. */
|
||||
private static final long serialVersionUID = -8461473263764812323L;
|
||||
|
||||
private static Color purple = new Color(14381203);
|
||||
private static Color fromDetailColor(DetailColors detailColor) {
|
||||
return new Color(detailColor.r, detailColor.g, detailColor.b);
|
||||
}
|
||||
|
||||
private final FLabel nameCostLabel;
|
||||
private final FLabel typeLabel;
|
||||
@@ -205,38 +207,34 @@ public class CardDetailPanel extends SkinnedPanel {
|
||||
}
|
||||
|
||||
this.setInfoLabel.setOpaque(true);
|
||||
|
||||
Color backColor;
|
||||
switch(card.getRarity()) {
|
||||
case Uncommon:
|
||||
this.setInfoLabel.setBackground(Color.LIGHT_GRAY);
|
||||
this.setInfoLabel.setForeground(Color.BLACK);
|
||||
this.setInfoLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
|
||||
backColor = fromDetailColor(DetailColors.UNCOMMON);
|
||||
break;
|
||||
|
||||
case Rare:
|
||||
this.setInfoLabel.setBackground(Color.YELLOW);
|
||||
this.setInfoLabel.setForeground(Color.BLACK);
|
||||
this.setInfoLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
|
||||
backColor = fromDetailColor(DetailColors.RARE);
|
||||
break;
|
||||
|
||||
case MythicRare:
|
||||
this.setInfoLabel.setBackground(Color.RED);
|
||||
this.setInfoLabel.setForeground(Color.BLACK);
|
||||
this.setInfoLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
|
||||
backColor = fromDetailColor(DetailColors.MYTHIC);
|
||||
break;
|
||||
|
||||
case Special:
|
||||
// "Timeshifted" or other Special Rarity Cards
|
||||
this.setInfoLabel.setBackground(CardDetailPanel.purple);
|
||||
this.setInfoLabel.setForeground(Color.BLACK);
|
||||
this.setInfoLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
|
||||
case Special: //"Timeshifted" or other Special Rarity Cards
|
||||
backColor = fromDetailColor(DetailColors.SPECIAL);
|
||||
break;
|
||||
|
||||
default: //case BasicLand: + case Common:
|
||||
this.setInfoLabel.setBackground(Color.BLACK);
|
||||
this.setInfoLabel.setForeground(Color.WHITE);
|
||||
this.setInfoLabel.setBorder(BorderFactory.createLineBorder(Color.WHITE));
|
||||
backColor = fromDetailColor(DetailColors.COMMON);
|
||||
break;
|
||||
}
|
||||
|
||||
Color foreColor = FSkin.getHighContrastColor(backColor);
|
||||
this.setInfoLabel.setBackground(backColor);
|
||||
this.setInfoLabel.setForeground(foreColor);
|
||||
this.setInfoLabel.setBorder(BorderFactory.createLineBorder(foreColor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,8 +288,7 @@ public class CardDetailPanel extends SkinnedPanel {
|
||||
return;
|
||||
}
|
||||
|
||||
CardBorderColor borderColor = CardDetailUtil.getBorderColor(card, canShow);
|
||||
Color color = new Color(borderColor.r, borderColor.g, borderColor.b);
|
||||
Color color = fromDetailColor(CardDetailUtil.getBorderColor(card, canShow));
|
||||
this.setBorder(BorderFactory.createLineBorder(color, 2));
|
||||
scrArea.setBorder(BorderFactory.createMatteBorder(2, 0, 0, 0, color));
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import forge.assets.FSkinImage;
|
||||
import forge.assets.ImageCache;
|
||||
import forge.assets.FSkinColor.Colors;
|
||||
import forge.card.CardDetailUtil;
|
||||
import forge.card.CardDetailUtil.CardBorderColor;
|
||||
import forge.card.CardDetailUtil.DetailColors;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.match.input.Input;
|
||||
@@ -469,8 +469,8 @@ public class InputSelectCard {
|
||||
h -= 2 * blackBorderThickness;
|
||||
|
||||
//determine colors for borders
|
||||
List<CardBorderColor> borderColors = CardDetailUtil.getBorderColors(card, canShow, true);
|
||||
CardBorderColor borderColor = borderColors.get(0);
|
||||
List<DetailColors> borderColors = CardDetailUtil.getBorderColors(card, canShow, true);
|
||||
DetailColors borderColor = borderColors.get(0);
|
||||
Color color1 = FSkinColor.fromRGB(borderColor.r, borderColor.g, borderColor.b);
|
||||
Color color2 = null;
|
||||
if (borderColors.size() > 1) {
|
||||
@@ -490,7 +490,7 @@ public class InputSelectCard {
|
||||
x += outerBorderThickness;
|
||||
y += outerBorderThickness;
|
||||
w -= 2 * outerBorderThickness;
|
||||
h = Math.max(MANA_SYMBOL_SIZE + 2 * MANA_COST_PADDING, 2 * NAME_FONT.getFont().getCapHeight()) + 2 * TYPE_FONT.getFont().getCapHeight();
|
||||
h = Math.max(MANA_SYMBOL_SIZE + 2 * MANA_COST_PADDING, 2 * NAME_FONT.getFont().getCapHeight()) + 2 * TYPE_FONT.getFont().getCapHeight() + 2;
|
||||
|
||||
//draw name/type box
|
||||
int nameManaCostStep = 100; //TODO: add better background colors to CardBorderColor enum
|
||||
@@ -552,13 +552,15 @@ public class InputSelectCard {
|
||||
}
|
||||
|
||||
private static void drawCardIdAndPtBox(Graphics g, Card card, Color idForeColor, Color color1, Color color2, float x, float y, float w, float h) {
|
||||
g.drawText(CardDetailUtil.formatCardId(card), ID_FONT, idForeColor, x, y + ID_FONT.getFont().getCapHeight() / 2, w, h, false, HAlignment.LEFT, false);
|
||||
String idText = CardDetailUtil.formatCardId(card);
|
||||
g.drawText(idText, ID_FONT, idForeColor, x, y + ID_FONT.getFont().getCapHeight() / 2, w, h, false, HAlignment.LEFT, false);
|
||||
|
||||
String text = CardDetailUtil.formatPowerToughness(card);
|
||||
if (StringUtils.isEmpty(text)) { return; }
|
||||
String ptText = CardDetailUtil.formatPowerToughness(card);
|
||||
if (StringUtils.isEmpty(ptText)) { return; }
|
||||
|
||||
float padding = PT_FONT.getFont().getCapHeight() / 2;
|
||||
float boxWidth = PT_FONT.getFont().getBounds(text).width + 2 * padding;
|
||||
float boxWidth = Math.min(PT_FONT.getFont().getBounds(ptText).width + 2 * padding,
|
||||
w - ID_FONT.getFont().getBounds(idText).width - padding); //prevent box overlapping ID
|
||||
x += w - boxWidth;
|
||||
w = boxWidth;
|
||||
|
||||
@@ -569,7 +571,7 @@ public class InputSelectCard {
|
||||
g.fillGradientRect(color1, color2, false, x, y, w, h);
|
||||
}
|
||||
g.drawRect(1, Color.BLACK, x, y, w, h);
|
||||
g.drawText(text, PT_FONT, Color.BLACK, x, y, w, h, false, HAlignment.CENTER, true);
|
||||
g.drawText(ptText, PT_FONT, Color.BLACK, x, y, w, h, false, HAlignment.CENTER, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ public class CardDetailUtil {
|
||||
private CardDetailUtil() {
|
||||
}
|
||||
|
||||
public enum CardBorderColor {
|
||||
public enum DetailColors {
|
||||
WHITE(254, 253, 244),
|
||||
BLUE(90, 146, 202),
|
||||
BLACK(32, 34, 31),
|
||||
@@ -29,105 +29,110 @@ public class CardDetailUtil {
|
||||
COLORLESS(160, 166, 164),
|
||||
LAND(190, 153, 112),
|
||||
FACE_DOWN(83, 61, 40),
|
||||
COMMON(10, 7, 10),
|
||||
UNCOMMON(160, 172, 174),
|
||||
RARE(193, 170, 100),
|
||||
MYTHIC(171, 54, 39),
|
||||
SPECIAL(141, 114, 147),
|
||||
UNKNOWN(200, 0, 230);
|
||||
|
||||
public final int r, g, b;
|
||||
|
||||
private CardBorderColor(int r0, int g0, int b0) {
|
||||
private DetailColors(int r0, int g0, int b0) {
|
||||
r = r0;
|
||||
g = g0;
|
||||
b = b0;
|
||||
}
|
||||
}
|
||||
|
||||
public static CardBorderColor getBorderColor(final Card card, boolean canShow) {
|
||||
public static DetailColors getBorderColor(final Card card, boolean canShow) {
|
||||
return getBorderColors(card, canShow, false).get(0);
|
||||
}
|
||||
|
||||
public static List<CardBorderColor> getBorderColors(final Card card, boolean canShow, boolean supportMultiple) {
|
||||
List<CardBorderColor> borderColors = new ArrayList<CardBorderColor>();
|
||||
public static List<DetailColors> getBorderColors(final Card card, boolean canShow, boolean supportMultiple) {
|
||||
List<DetailColors> borderColors = new ArrayList<DetailColors>();
|
||||
ColorSet cardColors = card.determineColor();
|
||||
|
||||
if (!canShow) {
|
||||
borderColors.add(CardBorderColor.FACE_DOWN);
|
||||
borderColors.add(DetailColors.FACE_DOWN);
|
||||
}
|
||||
else if (cardColors.isColorless()) {
|
||||
if (card.isLand()) { //use different color for lands vs. other colorless cards
|
||||
borderColors.add(CardBorderColor.LAND);
|
||||
borderColors.add(DetailColors.LAND);
|
||||
}
|
||||
else {
|
||||
borderColors.add(CardBorderColor.COLORLESS);
|
||||
borderColors.add(DetailColors.COLORLESS);
|
||||
}
|
||||
}
|
||||
else {
|
||||
int colorCount = cardColors.countColors();
|
||||
if (colorCount > 2 || (colorCount > 1 && !supportMultiple)) {
|
||||
borderColors.add(CardBorderColor.MULTICOLOR);
|
||||
borderColors.add(DetailColors.MULTICOLOR);
|
||||
}
|
||||
else if (cardColors.hasWhite()) {
|
||||
if (colorCount == 1) {
|
||||
borderColors.add(CardBorderColor.WHITE);
|
||||
borderColors.add(DetailColors.WHITE);
|
||||
}
|
||||
else if (cardColors.hasBlue()) {
|
||||
borderColors.add(CardBorderColor.WHITE);
|
||||
borderColors.add(CardBorderColor.BLUE);
|
||||
borderColors.add(DetailColors.WHITE);
|
||||
borderColors.add(DetailColors.BLUE);
|
||||
}
|
||||
else if (cardColors.hasBlack()) {
|
||||
borderColors.add(CardBorderColor.WHITE);
|
||||
borderColors.add(CardBorderColor.BLACK);
|
||||
borderColors.add(DetailColors.WHITE);
|
||||
borderColors.add(DetailColors.BLACK);
|
||||
}
|
||||
else if (cardColors.hasRed()) {
|
||||
borderColors.add(CardBorderColor.RED);
|
||||
borderColors.add(CardBorderColor.WHITE);
|
||||
borderColors.add(DetailColors.RED);
|
||||
borderColors.add(DetailColors.WHITE);
|
||||
}
|
||||
else if (cardColors.hasGreen()) {
|
||||
borderColors.add(CardBorderColor.GREEN);
|
||||
borderColors.add(CardBorderColor.WHITE);
|
||||
borderColors.add(DetailColors.GREEN);
|
||||
borderColors.add(DetailColors.WHITE);
|
||||
}
|
||||
}
|
||||
else if (cardColors.hasBlue()) {
|
||||
if (colorCount == 1) {
|
||||
borderColors.add(CardBorderColor.BLUE);
|
||||
borderColors.add(DetailColors.BLUE);
|
||||
}
|
||||
else if (cardColors.hasBlack()) {
|
||||
borderColors.add(CardBorderColor.BLUE);
|
||||
borderColors.add(CardBorderColor.BLACK);
|
||||
borderColors.add(DetailColors.BLUE);
|
||||
borderColors.add(DetailColors.BLACK);
|
||||
}
|
||||
else if (cardColors.hasRed()) {
|
||||
borderColors.add(CardBorderColor.BLUE);
|
||||
borderColors.add(CardBorderColor.RED);
|
||||
borderColors.add(DetailColors.BLUE);
|
||||
borderColors.add(DetailColors.RED);
|
||||
}
|
||||
else if (cardColors.hasGreen()) {
|
||||
borderColors.add(CardBorderColor.GREEN);
|
||||
borderColors.add(CardBorderColor.BLUE);
|
||||
borderColors.add(DetailColors.GREEN);
|
||||
borderColors.add(DetailColors.BLUE);
|
||||
}
|
||||
}
|
||||
else if (cardColors.hasBlack()) {
|
||||
if (colorCount == 1) {
|
||||
borderColors.add(CardBorderColor.BLACK);
|
||||
borderColors.add(DetailColors.BLACK);
|
||||
}
|
||||
else if (cardColors.hasRed()) {
|
||||
borderColors.add(CardBorderColor.BLACK);
|
||||
borderColors.add(CardBorderColor.RED);
|
||||
borderColors.add(DetailColors.BLACK);
|
||||
borderColors.add(DetailColors.RED);
|
||||
}
|
||||
else if (cardColors.hasGreen()) {
|
||||
borderColors.add(CardBorderColor.BLACK);
|
||||
borderColors.add(CardBorderColor.GREEN);
|
||||
borderColors.add(DetailColors.BLACK);
|
||||
borderColors.add(DetailColors.GREEN);
|
||||
}
|
||||
}
|
||||
else if (cardColors.hasRed()) { //if we got this far, must be mono-red or red-green
|
||||
borderColors.add(CardBorderColor.RED);
|
||||
borderColors.add(DetailColors.RED);
|
||||
if (cardColors.hasGreen()) {
|
||||
borderColors.add(CardBorderColor.GREEN);
|
||||
borderColors.add(DetailColors.GREEN);
|
||||
}
|
||||
}
|
||||
else if (cardColors.hasGreen()) { //if we got this far, must be mono-green
|
||||
borderColors.add(CardBorderColor.GREEN);
|
||||
borderColors.add(DetailColors.GREEN);
|
||||
}
|
||||
}
|
||||
|
||||
if (borderColors.isEmpty()) { // If your card has a violet border, something is wrong
|
||||
borderColors.add(CardBorderColor.UNKNOWN);
|
||||
borderColors.add(DetailColors.UNKNOWN);
|
||||
}
|
||||
return borderColors;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user