Merge pull request #2112 from fwannmacher/master

Converted cardNumber from int to String. Now card number with "a" or "b" can be used.
This commit is contained in:
Derek M 2016-07-25 16:24:01 -04:00 committed by GitHub
commit 86e7ace06e
11427 changed files with 13206 additions and 11464 deletions

View file

@ -46,7 +46,7 @@ public interface Card extends MageObject {
UUID getOwnerId();
int getCardNumber();
String getCardNumber();
Rarity getRarity();

View file

@ -71,7 +71,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
private static final Logger logger = Logger.getLogger(CardImpl.class);
protected UUID ownerId;
protected int cardNumber;
protected String cardNumber;
public String expansionSetCode;
protected String tokenSetCode;
protected Rarity rarity;
@ -86,10 +86,14 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
protected boolean morphCard;
public CardImpl(UUID ownerId, int cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs) {
this(ownerId, String.valueOf(cardNumber), name, rarity, cardTypes, costs, SpellAbilityType.BASE);
}
public CardImpl(UUID ownerId, String cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs) {
this(ownerId, cardNumber, name, rarity, cardTypes, costs, SpellAbilityType.BASE);
}
public CardImpl(UUID ownerId, int cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs, SpellAbilityType spellAbilityType) {
public CardImpl(UUID ownerId, String cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs, SpellAbilityType spellAbilityType) {
this(ownerId, name);
this.rarity = rarity;
this.cardNumber = cardNumber;
@ -183,7 +187,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
}
@Override
public int getCardNumber() {
public String getCardNumber() {
return cardNumber;
}

View file

@ -163,10 +163,10 @@ public class Sets extends HashMap<String, ExpansionSet> {
}
for (Map.Entry<String, DeckCardInfo> entry: deckCards.entrySet()) {
out.printf("%d [%s:%d] %s%n", entry.getValue().getQuantity(), entry.getValue().getSetCode(), entry.getValue().getCardNum(), entry.getValue().getCardName());
out.printf("%d [%s:%s] %s%n", entry.getValue().getQuantity(), entry.getValue().getSetCode(), entry.getValue().getCardNum(), entry.getValue().getCardName());
}
for (Map.Entry<String, DeckCardInfo> entry: sideboard.entrySet()) {
out.printf("SB: %d [%s:%d] %s%n", entry.getValue().getQuantity(), entry.getValue().getSetCode(), entry.getValue().getCardNum(), entry.getValue().getCardName());
out.printf("SB: %d [%s:%s] %s%n", entry.getValue().getQuantity(), entry.getValue().getSetCode(), entry.getValue().getCardNum(), entry.getValue().getCardName());
}
}
finally {

View file

@ -50,6 +50,10 @@ public abstract class SplitCard extends CardImpl {
protected Card rightHalfCard;
public SplitCard(UUID ownerId, int cardNumber, String nameLeft, String nameRight, Rarity rarity, CardType[] cardTypes, String costsLeft, String costsRight, boolean fused) {
this(ownerId, String.valueOf(cardNumber), nameLeft, nameRight, rarity, cardTypes, costsLeft, costsRight, fused);
}
public SplitCard(UUID ownerId, String cardNumber, String nameLeft, String nameRight, Rarity rarity, CardType[] cardTypes, String costsLeft, String costsRight, boolean fused) {
super(ownerId, cardNumber, new StringBuilder(nameLeft).append(" // ").append(nameRight).toString(), rarity, cardTypes, costsLeft + costsRight, (fused ? SpellAbilityType.SPLIT_FUSED : SpellAbilityType.SPLIT));
leftHalfCard = new SplitCardHalfImpl(this.getOwnerId(), this.getCardNumber(), nameLeft, this.rarity, cardTypes, costsLeft, this, SpellAbilityType.SPLIT_LEFT);
rightHalfCard = new SplitCardHalfImpl(this.getOwnerId(), this.getCardNumber(), nameRight, this.rarity, cardTypes, costsRight, this, SpellAbilityType.SPLIT_RIGHT);

View file

@ -21,7 +21,7 @@ public class SplitCardHalfImpl extends CardImpl implements SplitCardHalf {
SplitCard splitCardParent;
public SplitCardHalfImpl(UUID ownerId, int cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs, SplitCard splitCardParent, SpellAbilityType spellAbilityType) {
public SplitCardHalfImpl(UUID ownerId, String cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs, SplitCard splitCardParent, SpellAbilityType spellAbilityType) {
super(ownerId, cardNumber, name, rarity, cardTypes, costs, spellAbilityType);
this.splitCardParent = splitCardParent;
}
@ -47,7 +47,7 @@ public class SplitCardHalfImpl extends CardImpl implements SplitCardHalf {
}
@Override
public int getCardNumber() {
public String getCardNumber() {
return splitCardParent.getCardNumber();
}

View file

@ -41,6 +41,10 @@ import mage.cards.CardImpl;
public abstract class BasicLand extends CardImpl {
public BasicLand(UUID ownerId, int cardNumber, String name, ManaAbility mana) {
this(ownerId, String.valueOf(cardNumber), name, mana);
}
public BasicLand(UUID ownerId, String cardNumber, String name, ManaAbility mana) {
super(ownerId, cardNumber, name, Rarity.LAND, new CardType[]{CardType.LAND}, null);
this.supertype.add("Basic");
this.subtype.add(name);

View file

@ -38,6 +38,10 @@ import mage.abilities.mana.GreenManaAbility;
public abstract class Forest extends BasicLand {
public Forest(UUID ownerId, int cardNumber) {
this(ownerId, String.valueOf(cardNumber));
}
public Forest(UUID ownerId, String cardNumber) {
super(ownerId, cardNumber, "Forest", new GreenManaAbility());
}

View file

@ -38,6 +38,10 @@ import mage.abilities.mana.BlueManaAbility;
public abstract class Island extends BasicLand {
public Island(UUID ownerId, int cardNumber) {
this(ownerId, String.valueOf(cardNumber));
}
public Island(UUID ownerId, String cardNumber) {
super(ownerId, cardNumber, "Island", new BlueManaAbility());
}

View file

@ -38,6 +38,10 @@ import mage.abilities.mana.RedManaAbility;
public abstract class Mountain extends BasicLand {
public Mountain(UUID ownerId, int cardNumber) {
this(ownerId, String.valueOf(cardNumber));
}
public Mountain(UUID ownerId, String cardNumber) {
super(ownerId, cardNumber, "Mountain", new RedManaAbility());
}

View file

@ -38,6 +38,10 @@ import mage.abilities.mana.WhiteManaAbility;
public abstract class Plains extends BasicLand {
public Plains(UUID ownerId, int cardNumber) {
this(ownerId, String.valueOf(cardNumber));
}
public Plains(UUID ownerId, String cardNumber) {
super(ownerId, cardNumber, "Plains", new WhiteManaAbility());
}

View file

@ -38,6 +38,10 @@ import mage.abilities.mana.BlackManaAbility;
public abstract class Swamp extends BasicLand {
public Swamp(UUID ownerId, int cardNumber) {
this(ownerId, String.valueOf(cardNumber));
}
public Swamp(UUID ownerId, String cardNumber) {
super(ownerId, cardNumber, "Swamp", new BlackManaAbility());
}

View file

@ -38,14 +38,14 @@ public class DeckCardInfo implements Serializable {
private String cardName;
private String setCode;
private int cardNum;
private String cardNum;
private int quantity;
public DeckCardInfo(String cardName, int cardNum, String setCode) {
public DeckCardInfo(String cardName, String cardNum, String setCode) {
this(cardName, cardNum, setCode, 1);
}
public DeckCardInfo(String cardName, int cardNum, String setCode, int quantity) {
public DeckCardInfo(String cardName, String cardNum, String setCode, int quantity) {
this.cardName = cardName;
this.cardNum = cardNum;
this.setCode = setCode;
@ -60,7 +60,7 @@ public class DeckCardInfo implements Serializable {
return setCode;
}
public int getCardNum() {
public String getCardNum() {
return cardNum;
}

View file

@ -40,7 +40,7 @@ import mage.cards.repository.CardRepository;
*/
public class DckDeckImporter extends DeckImporter {
private static final Pattern pattern = Pattern.compile("(SB:)?\\s*(\\d*)\\s*\\[([a-zA-Z0-9]{2,5}):(\\d*)\\].*");
private static final Pattern pattern = Pattern.compile("(SB:)?\\s*(\\d*)\\s*\\[([a-zA-Z0-9]{2,5}):([0-9]*[a-z]*)\\].*");
@Override
protected void readLine(String line, DeckCardLists deckList) {
@ -57,7 +57,7 @@ public class DckDeckImporter extends DeckImporter {
}
int count = Integer.parseInt(m.group(2));
String setCode = m.group(3);
int cardNum = Integer.parseInt(m.group(4));
String cardNum = m.group(4);
DeckCardInfo deckCardInfo = null;
CardInfo cardInfo = CardRepository.instance.findCard(setCode, cardNum);

View file

@ -60,7 +60,7 @@ public class CardInfo {
@DatabaseField(indexName = "name_index")
protected String name;
@DatabaseField(indexName = "setCode_cardNumber_index")
protected int cardNumber;
protected String cardNumber;
@DatabaseField(indexName = "setCode_cardNumber_index")
protected String setCode;
@DatabaseField(unique = true, indexName = "className_index")
@ -295,7 +295,7 @@ public class CardInfo {
return className;
}
public int getCardNumber() {
public String getCardNumber() {
return cardNumber;
}

View file

@ -61,9 +61,9 @@ public enum CardRepository {
private static final String JDBC_URL = "jdbc:h2:file:./db/cards.h2;AUTO_SERVER=TRUE";
private static final String VERSION_ENTITY_NAME = "card";
// raise this if db structure was changed
private static final long CARD_DB_VERSION = 43;
private static final long CARD_DB_VERSION = 44;
// raise this if new cards were added to the server
private static final long CARD_CONTENT_VERSION = 54;
private static final long CARD_CONTENT_VERSION = 55;
private final Random random = new Random();
private Dao<CardInfo, Object> cardDao;
@ -273,7 +273,7 @@ public enum CardRepository {
return landTypes;
}
public CardInfo findCard(String setCode, int cardNumber) {
public CardInfo findCard(String setCode, String cardNumber) {
try {
QueryBuilder<CardInfo, Object> queryBuilder = cardDao.queryBuilder();
queryBuilder.where().eq("setCode", new SelectArg(setCode)).and().eq("cardNumber", cardNumber).and().eq("nightCard", false);

View file

@ -91,7 +91,7 @@ public interface Permanent extends Card, Controllable {
void setRenowned(boolean value);
void setCardNumber(int cid);
void setCardNumber(String cid);
void setExpansionSetCode(String expansionSetCode);

View file

@ -1365,7 +1365,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
}
@Override
public void setCardNumber(int cid) {
public void setCardNumber(String cid) {
this.cardNumber = cid;
}

View file

@ -53,7 +53,7 @@ public class Token extends MageObjectImpl {
private final ArrayList<UUID> lastAddedTokenIds = new ArrayList<>();
private UUID lastAddedTokenId;
private int tokenType;
private int originalCardNumber;
private String originalCardNumber;
private String originalExpansionSetCode;
private boolean expansionSetCodeChecked;
private Card copySourceCard; // the card the Token is a copy from
@ -213,7 +213,6 @@ public class Token extends MageObjectImpl {
}
}
game.applyEffects();
return true;
}
return false;
@ -235,11 +234,11 @@ public class Token extends MageObjectImpl {
this.tokenType = tokenType;
}
public int getOriginalCardNumber() {
public String getOriginalCardNumber() {
return originalCardNumber;
}
public void setOriginalCardNumber(int originalCardNumber) {
public void setOriginalCardNumber(String originalCardNumber) {
this.originalCardNumber = originalCardNumber;
}

View file

@ -732,7 +732,7 @@ public class Spell extends StackObjImpl implements Card {
}
@Override
public int getCardNumber() {
public String getCardNumber() {
return card.getCardNumber();
}