mirror of
https://github.com/magefree/mage.git
synced 2026-01-10 12:52:06 -08:00
- Fixed #4220 - card viewer raise error with alternative card numbers;
- Fixed potential error on getCardsByRarity; - Added inner checks for wrong booster max card numbers settings;
This commit is contained in:
parent
6802ebc537
commit
66a70dd116
5 changed files with 62 additions and 5 deletions
|
|
@ -464,7 +464,7 @@ public class MageBook extends JComponent {
|
|||
// first run for numbers list
|
||||
LinkedList<Integer> haveNumbers = new LinkedList<>();
|
||||
for (ExpansionSet.SetCardInfo card: cards){
|
||||
int cardNumber = Integer.parseInt(card.getCardNumber());
|
||||
int cardNumber = card.getCardNumberAsInt();
|
||||
startNumber = min(startNumber, cardNumber);
|
||||
endNumber = Math.max(endNumber, cardNumber);
|
||||
haveNumbers.add(cardNumber);
|
||||
|
|
|
|||
|
|
@ -220,9 +220,10 @@ public class GathererSets implements Iterable<DownloadJob> {
|
|||
continue; // can't do other checks
|
||||
}
|
||||
|
||||
// 2. missing rarity icon:
|
||||
// WARNING, need too much time (60+ secs), only for debug mode
|
||||
if (logger.isDebugEnabled()) {
|
||||
// 2. missing rarity icon:
|
||||
// WARNING, need too much time (60+ secs), only for debug mode
|
||||
///*
|
||||
if ((set.getCardsByRarity(Rarity.COMMON).size() > 0) && !res.haveCommon) {
|
||||
logger.error(String.format("Symbols: set have common cards, but don't download icon: %s (%s)", set.getCode(), set.getName()));
|
||||
}
|
||||
|
|
@ -235,6 +236,30 @@ public class GathererSets implements Iterable<DownloadJob> {
|
|||
if ((set.getCardsByRarity(Rarity.MYTHIC).size() > 0) && !res.haveMyth) {
|
||||
logger.error(String.format("Symbols: set have mythic cards, but don't download icon: %s (%s)", set.getCode(), set.getName()));
|
||||
}
|
||||
//*/
|
||||
|
||||
// 3. wrong sets config with alternative numbers
|
||||
// TODO: some sets have cards above maxCardNumberInBooster, need to check it (search code for maxCardNumberInBooster), maybe delete at all after getCardNumberAsInt implement
|
||||
if ((set.getMaxCardNumberInBooster() == 0) || (set.getMaxCardNumberInBooster() == Integer.MAX_VALUE))
|
||||
{
|
||||
for(ExpansionSet.SetCardInfo card: set.getSetCardInfo()){
|
||||
if (String.valueOf(card.getCardNumberAsInt()).length() != card.getCardNumber().length()){
|
||||
logger.error(String.format("Symbols: set have alternative card but do not config to it: %s (%s)", set.getCode(), set.getName()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 4. have nonland card above maxboosternumber (info)
|
||||
if (set.getMaxCardNumberInBooster() != Integer.MAX_VALUE)
|
||||
{
|
||||
for(ExpansionSet.SetCardInfo card: set.getSetCardInfo()){
|
||||
if (card.getRarity() == Rarity.LAND) { continue; }
|
||||
if (card.getCardNumberAsInt() > set.getMaxCardNumberInBooster()){
|
||||
logger.error(String.format("Symbols: set setup to cut off cards for boosters, non land card will be missing: %s (%s), %s - %s", set.getCode(), set.getName(), card.getCardNumber(), card.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import mage.cards.repository.CardInfo;
|
|||
import mage.cards.repository.CardRepository;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.SetType;
|
||||
import mage.util.CardUtil;
|
||||
import mage.util.RandomUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
|
@ -82,6 +83,10 @@ public abstract class ExpansionSet implements Serializable {
|
|||
return this.cardNumber;
|
||||
}
|
||||
|
||||
public int getCardNumberAsInt(){
|
||||
return CardUtil.parseCardNumberAsInt(this.cardNumber);
|
||||
}
|
||||
|
||||
public Rarity getRarity() {
|
||||
return this.rarity;
|
||||
}
|
||||
|
|
@ -388,9 +393,10 @@ public abstract class ExpansionSet implements Serializable {
|
|||
criteria.doubleFaced(false);
|
||||
}
|
||||
savedCardsInfos = CardRepository.instance.findCards(criteria);
|
||||
// Workaround after card number is numeric
|
||||
// Workaround after card number is numeric (p.s. card number is not numeric for some cards)
|
||||
// TODO: some sets have фывфывфывфывфыв
|
||||
if (maxCardNumberInBooster != Integer.MAX_VALUE) {
|
||||
savedCardsInfos.removeIf(next -> Integer.valueOf(next.getCardNumber()) > maxCardNumberInBooster && rarity != Rarity.LAND);
|
||||
savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND);
|
||||
}
|
||||
|
||||
savedCards.put(rarity, savedCardsInfos);
|
||||
|
|
@ -431,4 +437,6 @@ public abstract class ExpansionSet implements Serializable {
|
|||
savedCards.clear();
|
||||
}
|
||||
|
||||
public int getMaxCardNumberInBooster() { return maxCardNumberInBooster; }
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import mage.cards.*;
|
|||
import mage.cards.mock.MockCard;
|
||||
import mage.cards.mock.MockSplitCard;
|
||||
import mage.constants.*;
|
||||
import mage.util.CardUtil;
|
||||
import mage.util.SubTypeList;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
|
@ -374,6 +375,10 @@ public class CardInfo {
|
|||
return cardNumber;
|
||||
}
|
||||
|
||||
public int getCardNumberAsInt() {
|
||||
return CardUtil.parseCardNumberAsInt(cardNumber);
|
||||
}
|
||||
|
||||
public boolean isSplitCard() {
|
||||
return splitCard;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -382,6 +382,25 @@ public final class CardUtil {
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse card number as int (support base [123] and alternative numbers [123b]).
|
||||
*
|
||||
* @param cardNumber origin card number
|
||||
* @return int
|
||||
*/
|
||||
public static int parseCardNumberAsInt(String cardNumber){
|
||||
|
||||
if (cardNumber.isEmpty()){ throw new IllegalArgumentException("Card number is empty.");}
|
||||
|
||||
if(Character.isDigit(cardNumber.charAt(cardNumber.length() - 1)))
|
||||
{
|
||||
return Integer.parseInt(cardNumber);
|
||||
}else{
|
||||
return Integer.parseInt(cardNumber.substring(0, cardNumber.length() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and saves a (card + zoneChangeCounter) specific exileId.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue