* GUI: new reworked GUI and card render engine, card icons and dozens of other fixes (see full list in related PR);

This commit is contained in:
Oleg Agafonov 2021-01-30 16:38:55 +04:00
parent df98cc3e62
commit a1da5ef437
304 changed files with 7266 additions and 5093 deletions

View file

@ -33,6 +33,7 @@ import mage.game.permanent.token.EmptyToken;
import mage.players.Player;
import mage.util.CardUtil;
import mage.util.GameLog;
import mage.util.ManaUtil;
import mage.util.SubTypes;
import java.util.*;
@ -45,12 +46,6 @@ public class Spell extends StackObjImpl implements Card {
private final List<SpellAbility> spellAbilities = new ArrayList<>();
private final List<Card> spellCards = new ArrayList<>();
private static final String regexBlack = ".*\\x7b.{0,2}B.{0,2}\\x7d.*";
private static final String regexBlue = ".*\\x7b.{0,2}U.{0,2}\\x7d.*";
private static final String regexRed = ".*\\x7b.{0,2}R.{0,2}\\x7d.*";
private static final String regexGreen = ".*\\x7b.{0,2}G.{0,2}\\x7d.*";
private static final String regexWhite = ".*\\x7b.{0,2}W.{0,2}\\x7d.*";
private final Card card;
private final ObjectColor color;
private final ObjectColor frameColor;
@ -1000,60 +995,7 @@ public class Spell extends StackObjImpl implements Card {
@Override
public FilterMana getColorIdentity() {
FilterMana mana = new FilterMana();
mana.setBlack(getManaCost().getText().matches(regexBlack));
mana.setBlue(getManaCost().getText().matches(regexBlue));
mana.setGreen(getManaCost().getText().matches(regexGreen));
mana.setRed(getManaCost().getText().matches(regexRed));
mana.setWhite(getManaCost().getText().matches(regexWhite));
for (String rule : getRules()) {
rule = rule.replaceAll("(?i)<i.*?</i>", ""); // Ignoring reminder text in italic
if (!mana.isBlack() && (rule.matches(regexBlack) || this.color.isBlack())) {
mana.setBlack(true);
}
if (!mana.isBlue() && (rule.matches(regexBlue) || this.color.isBlue())) {
mana.setBlue(true);
}
if (!mana.isGreen() && (rule.matches(regexGreen) || this.color.isGreen())) {
mana.setGreen(true);
}
if (!mana.isRed() && (rule.matches(regexRed) || this.color.isRed())) {
mana.setRed(true);
}
if (!mana.isWhite() && (rule.matches(regexWhite) || this.color.isWhite())) {
mana.setWhite(true);
}
}
if (isTransformable()) {
Card secondCard = getSecondCardFace();
ObjectColor objectColor = secondCard.getColor(null);
mana.setBlack(mana.isBlack() || objectColor.isBlack());
mana.setGreen(mana.isGreen() || objectColor.isGreen());
mana.setRed(mana.isRed() || objectColor.isRed());
mana.setBlue(mana.isBlue() || objectColor.isBlue());
mana.setWhite(mana.isWhite() || objectColor.isWhite());
for (String rule : secondCard.getRules()) {
rule = rule.replaceAll("(?i)<i.*?</i>", ""); // Ignoring reminder text in italic
if (!mana.isBlack() && rule.matches(regexBlack)) {
mana.setBlack(true);
}
if (!mana.isBlue() && rule.matches(regexBlue)) {
mana.setBlue(true);
}
if (!mana.isGreen() && rule.matches(regexGreen)) {
mana.setGreen(true);
}
if (!mana.isRed() && rule.matches(regexRed)) {
mana.setRed(true);
}
if (!mana.isWhite() && rule.matches(regexWhite)) {
mana.setWhite(true);
}
}
}
return mana;
return ManaUtil.getColorIdentity(this);
}
@Override