mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Use specialized map in PreferencesStore,
QuestUtilCards - use different booster templates for shop and awarded boosters QuestWinLose - simplified code
This commit is contained in:
@@ -34,6 +34,7 @@ import forge.Card;
|
||||
import forge.Singletons;
|
||||
import forge.card.BoosterTemplate;
|
||||
import forge.card.CardEdition;
|
||||
import forge.card.IUnOpenedProduct;
|
||||
import forge.card.UnOpenedProduct;
|
||||
import forge.control.FControl;
|
||||
import forge.game.GameEndReason;
|
||||
@@ -398,13 +399,11 @@ public class QuestWinLose extends ControlWinLose {
|
||||
}
|
||||
// Mulligan to zero
|
||||
final int cntCardsHumanStartedWith = humanRating.getOpeningHandSize();
|
||||
final int mulliganReward = Singletons.getModel().getQuestPreferences()
|
||||
.getPrefInt(QPref.REWARDS_MULLIGAN0);
|
||||
final int mulliganReward = Singletons.getModel().getQuestPreferences().getPrefInt(QPref.REWARDS_MULLIGAN0);
|
||||
|
||||
if (0 == cntCardsHumanStartedWith) {
|
||||
credGameplay += mulliganReward;
|
||||
sb.append(String
|
||||
.format("Mulliganed to zero and still won! " + "Bonus: %d credits.<br>", mulliganReward));
|
||||
sb.append(String.format("Mulliganed to zero and still won! " + "Bonus: %d credits.<br>", mulliganReward));
|
||||
}
|
||||
|
||||
// Early turn bonus
|
||||
@@ -578,56 +577,29 @@ public class QuestWinLose extends ControlWinLose {
|
||||
}
|
||||
}
|
||||
|
||||
List<String> chooseSets = new ArrayList<String>();
|
||||
|
||||
int maxChoices = 1;
|
||||
|
||||
if (this.wonMatch) {
|
||||
maxChoices++;
|
||||
final int wins = qData.getAchievements().getWin();
|
||||
if (wins > 0 && (wins + 1) % 5 == 0) { maxChoices++; }
|
||||
if (wins > 0 && (wins + 1) % 20 == 0) { maxChoices++; }
|
||||
if (wins > 0 && (wins + 1) % 50 == 0) { maxChoices++; }
|
||||
if (wins + 1 % 5 == 0) { maxChoices++; }
|
||||
if (wins + 1 % 20 == 0) { maxChoices++; }
|
||||
if (wins + 1 % 50 == 0) { maxChoices++; }
|
||||
}
|
||||
|
||||
if (sets.size() > maxChoices) {
|
||||
if (maxChoices > 1) {
|
||||
boolean[] choices = new boolean[sets.size()];
|
||||
for (int i = 0; i < sets.size(); i++) {
|
||||
choices[i] = false;
|
||||
}
|
||||
|
||||
int toEnable = maxChoices;
|
||||
|
||||
while (toEnable > 0) {
|
||||
int index = MyRandom.getRandom().nextInt(sets.size());
|
||||
if (!choices[index]) {
|
||||
choices[index] = true;
|
||||
toEnable--;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < sets.size(); i++) {
|
||||
if (choices[i]) {
|
||||
chooseSets.add(sets.get(i));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
chooseSets.add(sets.get(MyRandom.getRandom().nextInt(sets.size())));
|
||||
}
|
||||
|
||||
} else {
|
||||
chooseSets.addAll(sets);
|
||||
List<CardEdition> options = new ArrayList<CardEdition>();
|
||||
|
||||
while(!sets.isEmpty() && maxChoices > 0) {
|
||||
int ix = MyRandom.getRandom().nextInt(sets.size());
|
||||
String set = sets.get(ix);
|
||||
sets.remove(ix);
|
||||
options.add(Singletons.getModel().getEditions().get(set));
|
||||
maxChoices--;
|
||||
}
|
||||
|
||||
final String setPrompt = "Choose bonus booster set:";
|
||||
List<CardEdition> chooseEditions = new ArrayList<CardEdition>();
|
||||
for (String ed : chooseSets) {
|
||||
chooseEditions.add(Singletons.getModel().getEditions().get(ed));
|
||||
}
|
||||
final CardEdition chooseEd = GuiChoose.one(setPrompt, chooseEditions);
|
||||
final CardEdition chooseEd = GuiChoose.one("Choose bonus booster set:", options);
|
||||
|
||||
cardsWon = (new UnOpenedProduct(Singletons.getModel().getBoosters().get(chooseEd.getCode()))).get();
|
||||
IUnOpenedProduct product = new UnOpenedProduct(Singletons.getModel().getBoosters().get(chooseEd.getCode()));
|
||||
cardsWon = product.get();
|
||||
qData.getCards().addAllCards(cardsWon);
|
||||
this.lblTemp1 = new TitleLabel("Bonus " + chooseEd.getName() + " booster pack!");
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
|
||||
UI_PREFERRED_AVATARS_ONLY ("false"),
|
||||
UI_TARGETING_OVERLAY ("false"),
|
||||
UI_ENABLE_SOUNDS ("true"),
|
||||
UI_ALT_SOUND_SYSTEM ("false"),
|
||||
UI_ALT_SOUND_SYSTEM ("false"),
|
||||
UI_RANDOM_CARD_ART ("false"),
|
||||
UI_CURRENT_AI_PROFILE (AiProfileUtil.AI_PROFILE_RANDOM_MATCH),
|
||||
UI_CLONE_MODE_SOURCE ("false"), /** */
|
||||
@@ -138,7 +138,7 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
|
||||
|
||||
/** Instantiates a ForgePreferences object. */
|
||||
public ForgePreferences() {
|
||||
super(NewConstants.MAIN_PREFS_FILE);
|
||||
super(NewConstants.MAIN_PREFS_FILE, FPref.class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,7 +20,7 @@ package forge.properties;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -31,11 +31,12 @@ import forge.util.FileUtil;
|
||||
* Loads preferred values when instantiated.
|
||||
* If a requested value is not present, default is returned.
|
||||
*/
|
||||
public abstract class PreferencesStore<T extends Enum<?>> {
|
||||
private final Map<T, String> preferenceValues = new HashMap<T, String>();
|
||||
public abstract class PreferencesStore<T extends Enum<T>> {
|
||||
private final Map<T, String> preferenceValues;
|
||||
private final String filename;
|
||||
|
||||
public PreferencesStore(String filename0) {
|
||||
public PreferencesStore(String filename0, Class<T> clasz) {
|
||||
preferenceValues = new EnumMap<T, String>(clasz);
|
||||
filename = filename0;
|
||||
|
||||
List<String> lines = FileUtil.readFile(filename);
|
||||
|
||||
@@ -503,14 +503,23 @@ public final class QuestUtilCards {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private SealedProductTemplate getBoosterTemplate() {
|
||||
private SealedProductTemplate getShopBoosterTemplate() {
|
||||
return new SealedProductTemplate(Lists.newArrayList(
|
||||
Pair.of(BoosterGenerator.COMMON, this.qpref.getPrefInt(QPref.SHOP_SINGLES_COMMON)),
|
||||
Pair.of(BoosterGenerator.UNCOMMON, this.qpref.getPrefInt(QPref.SHOP_SINGLES_UNCOMMON)),
|
||||
Pair.of(BoosterGenerator.RARE_MYTHIC, this.qpref.getPrefInt(QPref.SHOP_SINGLES_RARE))
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private SealedProductTemplate getBoosterTemplate() {
|
||||
return new SealedProductTemplate(Lists.newArrayList(
|
||||
Pair.of(BoosterGenerator.COMMON, this.qpref.getPrefInt(QPref.BOOSTER_COMMONS)),
|
||||
Pair.of(BoosterGenerator.UNCOMMON, this.qpref.getPrefInt(QPref.BOOSTER_UNCOMMONS)),
|
||||
Pair.of(BoosterGenerator.RARE_MYTHIC, this.qpref.getPrefInt(QPref.BOOSTER_RARES))
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate cards in shop.
|
||||
*/
|
||||
@@ -526,7 +535,7 @@ public final class QuestUtilCards {
|
||||
final int totalPacks = Math.min(levelPacks + winPacks, maxPacks);
|
||||
|
||||
|
||||
SealedProductTemplate tpl = getBoosterTemplate();
|
||||
SealedProductTemplate tpl = getShopBoosterTemplate();
|
||||
UnOpenedProduct unopened = qc.getFormat() == null ? new UnOpenedProduct( tpl ) : new UnOpenedProduct( tpl, qc.getFormat().getFilterPrinted());
|
||||
|
||||
for (int i = 0; i < totalPacks; i++) {
|
||||
|
||||
@@ -174,7 +174,7 @@ public class QuestPreferences extends PreferencesStore<QuestPreferences.QPref> i
|
||||
|
||||
/** Instantiates a QuestPreferences object. */
|
||||
public QuestPreferences() {
|
||||
super(NewConstants.QUEST_PREFS_FILE);
|
||||
super(NewConstants.QUEST_PREFS_FILE, QPref.class);
|
||||
}
|
||||
|
||||
protected QPref[] getEnumValues() {
|
||||
|
||||
Reference in New Issue
Block a user