Prevent adding basic lands to sealed deck by default for mobile game

This commit is contained in:
drdev
2014-06-12 01:50:09 +00:00
parent 35ebc4e901
commit cd6700b087
3 changed files with 21 additions and 19 deletions

View File

@@ -113,7 +113,7 @@ public enum CSubmenuSealed implements ICDoc {
@SuppressWarnings("unchecked")
private <T extends DeckBase> void setupSealed() {
final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck();
final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck(true);
if (sealed == null) { return; }
final ACEditorBase<? extends InventoryItem, T> editor = (ACEditorBase<? extends InventoryItem, T>) new CEditorLimited(

View File

@@ -46,7 +46,7 @@ public class SealedScreen extends LaunchScreen {
ThreadUtil.invokeInGameThread(new Runnable() { //must run in game thread to prevent blocking UI thread
@Override
public void run() {
final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck();
final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck(false);
if (sealed == null) { return; }
FThreads.invokeInEdtLater(new Runnable() {

View File

@@ -66,7 +66,7 @@ public class SealedCardPoolGenerator {
/** The Land set code. */
private String landSetCode = null;
public static DeckGroup generateSealedDeck() {
public static DeckGroup generateSealedDeck(boolean addBasicLands) {
final String prompt = "Choose Sealed Deck Format";
final LimitedPoolType poolType = SGuiChoose.oneOrNone(prompt, LimitedPoolType.values());
if (poolType == null) { return null; }
@@ -107,23 +107,25 @@ public class SealedCardPoolGenerator {
final Deck deck = new Deck(sDeckName);
deck.getOrCreate(DeckSection.Sideboard).addAll(humanPool);
final int landsCount = 10;
if (addBasicLands) {
final int landsCount = 10;
final boolean isZendikarSet = sd.getLandSetCode().equals("ZEN"); // we want to generate one kind of Zendikar lands at a time only
final boolean zendikarSetMode = MyRandom.getRandom().nextBoolean();
final boolean isZendikarSet = sd.getLandSetCode().equals("ZEN"); // we want to generate one kind of Zendikar lands at a time only
final boolean zendikarSetMode = MyRandom.getRandom().nextBoolean();
for (final String element : MagicColor.Constant.BASIC_LANDS) {
int numArt = FModel.getMagicDb().getCommonCards().getArtCount(element, sd.getLandSetCode());
int minArtIndex = isZendikarSet ? (zendikarSetMode ? 1 : 5) : 1;
int maxArtIndex = isZendikarSet ? minArtIndex + 3 : numArt;
for (final String element : MagicColor.Constant.BASIC_LANDS) {
int numArt = FModel.getMagicDb().getCommonCards().getArtCount(element, sd.getLandSetCode());
int minArtIndex = isZendikarSet ? (zendikarSetMode ? 1 : 5) : 1;
int maxArtIndex = isZendikarSet ? minArtIndex + 3 : numArt;
if (FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_IN_POOLS)) {
for (int i = minArtIndex; i <= maxArtIndex; i++) {
deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), i, numArt > 1 ? landsCount : 30);
if (FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_IN_POOLS)) {
for (int i = minArtIndex; i <= maxArtIndex; i++) {
deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), i, numArt > 1 ? landsCount : 30);
}
}
else {
deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), 30);
}
}
else {
deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), 30);
}
}