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") @SuppressWarnings("unchecked")
private <T extends DeckBase> void setupSealed() { private <T extends DeckBase> void setupSealed() {
final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck(); final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck(true);
if (sealed == null) { return; } if (sealed == null) { return; }
final ACEditorBase<? extends InventoryItem, T> editor = (ACEditorBase<? extends InventoryItem, T>) new CEditorLimited( 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 ThreadUtil.invokeInGameThread(new Runnable() { //must run in game thread to prevent blocking UI thread
@Override @Override
public void run() { public void run() {
final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck(); final DeckGroup sealed = SealedCardPoolGenerator.generateSealedDeck(false);
if (sealed == null) { return; } if (sealed == null) { return; }
FThreads.invokeInEdtLater(new Runnable() { FThreads.invokeInEdtLater(new Runnable() {

View File

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