From 0afcf073c1441f6d2597eb1af9b4e26af4af80b6 Mon Sep 17 00:00:00 2001 From: myk Date: Mon, 25 Mar 2013 16:34:08 +0000 Subject: [PATCH] move art index tracking from pack superclasses to booster pack classes --- .project | 1 - src/main/java/forge/card/BoosterData.java | 18 ++++++++++----- src/main/java/forge/card/FatPackData.java | 2 +- src/main/java/forge/card/PackData.java | 12 +++------- src/main/java/forge/item/BoosterPack.java | 27 ++++++++++++++++++++++ src/main/java/forge/item/OpenablePack.java | 16 ++++--------- 6 files changed, 47 insertions(+), 29 deletions(-) diff --git a/.project b/.project index 79d327407e2..48fc41e625a 100644 --- a/.project +++ b/.project @@ -34,7 +34,6 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature net.sf.eclipsecs.core.CheckstyleNature diff --git a/src/main/java/forge/card/BoosterData.java b/src/main/java/forge/card/BoosterData.java index 8a3d536b9c5..bc975acd47c 100644 --- a/src/main/java/forge/card/BoosterData.java +++ b/src/main/java/forge/card/BoosterData.java @@ -14,6 +14,7 @@ public class BoosterData extends PackData { private final int nSpecial; private final int nDoubleFaced; private final int foilRate; + private final int artIndices; private static final int CARDS_PER_BOOSTER = 15; public BoosterData(String edition, String editionLand, int nC, int nU, int nR, int nS, int nDF, int artIndices) { @@ -23,18 +24,15 @@ public class BoosterData extends PackData { (nC + nR + nU + nS + nDF) > 10 ? BoosterData.CARDS_PER_BOOSTER - nC - nR - nU - nS - nDF : 0, 68); } - public BoosterData(String edition, String editionLand, int nC, int nU, int nR, int nS, int nDF, int artIndices, int nL, int oneFoilPer) { - super(edition, editionLand, nL > 0 ? nL : 0, artIndices); + public BoosterData(String edition, String editionLand, int nC, int nU, int nR, int nS, int nDF, int artIndices0, int nL, int oneFoilPer) { + super(edition, editionLand, nL > 0 ? nL : 0); this.nCommon = nC; this.nUncommon = nU; this.nRare = nR; this.nSpecial = nS; this.nDoubleFaced = nDF; this.foilRate = oneFoilPer; - } - - public final int getCommon() { - return this.nCommon; + artIndices = artIndices0; } public final Predicate getEditionFilter() { @@ -45,6 +43,10 @@ public class BoosterData extends PackData { return IPaperCard.Predicates.printedInSets(getLandEdition()); } + public final int getCommon() { + return this.nCommon; + } + public final int getUncommon() { return this.nUncommon; } @@ -69,6 +71,10 @@ public class BoosterData extends PackData { return this.foilRate; } + public int getArtIndices() { + return artIndices; + } + private void _append(StringBuilder s, int val, String name) { if (0 >= val) { return; diff --git a/src/main/java/forge/card/FatPackData.java b/src/main/java/forge/card/FatPackData.java index b318b918f79..c03e038351f 100644 --- a/src/main/java/forge/card/FatPackData.java +++ b/src/main/java/forge/card/FatPackData.java @@ -15,7 +15,7 @@ public class FatPackData extends PackData { public FatPackData(String edition0, String landEdition0, int nBoosters, int nBasicLands) { - super(edition0, landEdition0, nBasicLands, 1); + super(edition0, landEdition0, nBasicLands); cntBoosters = nBoosters; } diff --git a/src/main/java/forge/card/PackData.java b/src/main/java/forge/card/PackData.java index 499d0b31a8a..5f2ab9b5eb0 100644 --- a/src/main/java/forge/card/PackData.java +++ b/src/main/java/forge/card/PackData.java @@ -26,7 +26,6 @@ public class PackData { private final String edition; private final String landEdition; private final int cntLands; - private final int artIndices; public final String getEdition() { return edition; @@ -40,17 +39,12 @@ public class PackData { return cntLands; } - public int getArtIndices() { - return artIndices; - } - - public PackData(String edition0, String landEdition0, int nBasicLands, int artIndices0) + public PackData(String edition0, String landEdition0, int nBasicLands) { if (null == edition0) { throw new NullArgumentException("edition0"); } edition = edition0; landEdition = landEdition0; cntLands = nBasicLands; - artIndices = artIndices0; } public static final Function FN_GET_CODE = new Function() { @@ -61,7 +55,7 @@ public class PackData { }; @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { if (this == obj) { return true; } @@ -76,7 +70,7 @@ public class PackData { } @Override - public final int hashCode() { + public int hashCode() { return edition.hashCode(); } } diff --git a/src/main/java/forge/item/BoosterPack.java b/src/main/java/forge/item/BoosterPack.java index b2472f4148d..a195a226c6e 100644 --- a/src/main/java/forge/item/BoosterPack.java +++ b/src/main/java/forge/item/BoosterPack.java @@ -23,8 +23,12 @@ import com.google.common.base.Function; import forge.Singletons; import forge.card.BoosterData; import forge.card.CardEdition; +import forge.util.MyRandom; public class BoosterPack extends OpenablePack { + private final int artIndex; + private final int hash; + public static final Function FN_FROM_SET = new Function() { @Override public BoosterPack apply(final CardEdition arg1) { @@ -35,6 +39,12 @@ public class BoosterPack extends OpenablePack { public BoosterPack(final String name0, final BoosterData boosterData) { super(name0, boosterData); + artIndex = MyRandom.getRandom().nextInt(boosterData.getArtIndices()) + 1; + hash = super.hashCode() ^ artIndex; + } + + public final int getArtIndex() { + return artIndex; } @Override @@ -50,4 +60,21 @@ public class BoosterPack extends OpenablePack { public BoosterData getBoosterData() { return contents; } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + BoosterPack other = (BoosterPack)obj; + return artIndex == other.artIndex; + } + + @Override + public final int hashCode() { + return hash; + } } diff --git a/src/main/java/forge/item/OpenablePack.java b/src/main/java/forge/item/OpenablePack.java index c05253be8d3..b7619d0a320 100644 --- a/src/main/java/forge/item/OpenablePack.java +++ b/src/main/java/forge/item/OpenablePack.java @@ -30,12 +30,10 @@ import forge.card.BoosterData; import forge.card.BoosterGenerator; import forge.card.CardRulesPredicates; import forge.util.Aggregates; -import forge.util.MyRandom; public abstract class OpenablePack implements InventoryItemFromSet { protected final BoosterData contents; protected final String name; - private final int artIndex; private final int hash; private List cards = null; private BoosterGenerator generator = null; @@ -45,8 +43,7 @@ public abstract class OpenablePack implements InventoryItemFromSet { if (null == boosterData) { throw new NullArgumentException("boosterData"); } contents = boosterData; name = name0; - artIndex = MyRandom.getRandom().nextInt(boosterData.getArtIndices()) + 1; - hash = name.hashCode() ^ getClass().hashCode() ^ contents.hashCode() ^ artIndex; + hash = name.hashCode() ^ getClass().hashCode() ^ contents.hashCode(); } @Override @@ -63,10 +60,6 @@ public abstract class OpenablePack implements InventoryItemFromSet { return contents.getEdition(); } - public final int getArtIndex() { - return artIndex; - } - public final List getCards() { if (null == cards) { cards = generate(); @@ -80,7 +73,7 @@ public abstract class OpenablePack implements InventoryItemFromSet { } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { if (this == obj) { return true; } @@ -91,12 +84,11 @@ public abstract class OpenablePack implements InventoryItemFromSet { return false; } OpenablePack other = (OpenablePack)obj; - return name.equals(other.name) && contents.equals(other.contents) && artIndex == other.artIndex; + return name.equals(other.name) && contents.equals(other.contents); } @Override - public final int hashCode() { - System.out.println(String.format("returning hash: %d for edition=%s; idx=%d", hash, getEdition(), getArtIndex())); + public int hashCode() { return hash; }