Removed the quest draft logic from the UI controller to make porting to other platforms much easier.

This commit is contained in:
Krazy
2014-07-12 19:41:18 +00:00
parent d12c606b2e
commit cbcd527dd5
6 changed files with 273 additions and 214 deletions

1
.gitignore vendored
View File

@@ -44,6 +44,7 @@ forge-gui-android/res/values/bin
forge-gui-android/res/values/gen
forge-gui-android/res/values/target
forge-gui-android/target
forge-gui-desktop/*.iml
forge-gui-desktop/target
forge-gui-mobile-dev/bin
forge-gui-mobile-dev/res

View File

@@ -200,22 +200,20 @@ public class CEditorQuestDraftingProcess extends ACEditorBase<PaperCard, DeckGro
* </p>
*/
private void saveDraft() {
String s = "Tournament Deck";
saved = true;
// Construct computer's decks and save draft
final Deck[] computer = this.boosterDraft.getDecks();
final DeckGroup finishedDraft = new DeckGroup(s);
finishedDraft.setHumanDeck((Deck) this.getPlayersDeck().copyTo(s));
final DeckGroup finishedDraft = new DeckGroup(QuestEventDraft.DECK_NAME);
finishedDraft.setHumanDeck((Deck) this.getPlayersDeck().copyTo(QuestEventDraft.DECK_NAME));
finishedDraft.addAiDecks(computer);
CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
FScreen.DRAFTING_PROCESS.close();
draftQuest.setCompletedDraft(finishedDraft, s);
draftQuest.setCompletedDraft(finishedDraft);
}

View File

@@ -1,28 +1,10 @@
package forge.screens.home.quest;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
import forge.GuiBase;
import forge.Singletons;
import forge.UiCommand;
import forge.assets.FSkinProp;
import forge.deck.CardPool;
import forge.deck.Deck;
import forge.deck.DeckGroup;
import forge.deck.DeckSection;
import forge.game.GameType;
import forge.gui.BoxedProductCardListViewer;
import forge.gui.CardListViewer;
@@ -33,7 +15,6 @@ import forge.item.BoosterPack;
import forge.item.PaperCard;
import forge.itemmanager.DeckManager;
import forge.limited.BoosterDraft;
import forge.limited.LimitedPoolType;
import forge.model.FModel;
import forge.properties.ForgePreferences.FPref;
import forge.quest.QuestController;
@@ -52,7 +33,12 @@ import forge.toolbox.FOptionPane;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinImage;
import forge.toolbox.JXButtonPanel;
import forge.util.storage.IStorage;
import javax.swing.*;
import java.awt.event.*;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
/**
* Controls the quest draft submenu in the home UI.
@@ -143,85 +129,68 @@ public enum CSubmenuQuestDraft implements ICDoc {
String placement = QuestEventDraft.getPlacementString(draft.getPlayerPlacement());
Object[] prizes = draft.getPrizes();
QuestEventDraft.QuestDraftPrizes prizes = draft.collectPrizes();
if (prizes[0] != null && (int) prizes[0] > 0) {
FOptionPane.showMessageDialog("For placing " + placement + ", you have been awarded " + (int) prizes[0] + " credits!", "Credits Awarded", FSkin.getImage(FSkinProp.ICO_QUEST_GOLD));
FModel.getQuest().getAssets().addCredits((int) prizes[0]);
if (prizes.hasCredits()) {
FOptionPane.showMessageDialog("For placing " + placement + ", you have been awarded " + prizes.credits + " credits!", "Credits Awarded", FSkin.getImage(FSkinProp.ICO_QUEST_GOLD));
}
if (prizes[2] != null) {
List<PaperCard> individualCards = (ArrayList<PaperCard>) prizes[2];
if (!individualCards.isEmpty()) {
final CardListViewer c = new CardListViewer("Tournament Reward", "For participating in the tournament, you have been awarded the following promotional card:", individualCards);
c.setVisible(true);
c.dispose();
FModel.getQuest().getCards().addAllCards(individualCards);
}
if (prizes.hasIndividualCards()) {
final CardListViewer c = new CardListViewer("Tournament Reward", "For participating in the tournament, you have been awarded the following promotional card:", prizes.individualCards);
c.setVisible(true);
c.dispose();
}
if (prizes[1] != null) {
if (prizes.hasBoosterPacks()) {
List<BoosterPack> boosterPacks = (ArrayList<BoosterPack>) prizes[1];
if (!boosterPacks.isEmpty()) {
String packPlural = (boosterPacks.size() == 1) ? "" : "s";
FOptionPane.showMessageDialog("For placing " + placement + ", you have been awarded " + boosterPacks.size() + " booster pack" + packPlural + "!", "Booster Pack" + packPlural + " Awarded", FSkin.getImage(FSkinProp.ICO_QUEST_BOX));
if (FModel.getPreferences().getPrefBoolean(FPref.UI_OPEN_PACKS_INDIV) && boosterPacks.size() > 1) {
boolean skipTheRest = false;
List<PaperCard> remainingCards = new ArrayList<PaperCard>();
int totalPacks = boosterPacks.size();
int currentPack = 0;
while (boosterPacks.size() > 0) {
BoosterPack pack = boosterPacks.remove(0);
currentPack++;
if (skipTheRest) {
remainingCards.addAll(pack.getCards());
continue;
}
final BoxedProductCardListViewer c = new BoxedProductCardListViewer(pack.getName(), "You have found the following cards inside (Booster Pack " + currentPack + " of " + totalPacks + "):", pack.getCards());
c.setVisible(true);
c.dispose();
skipTheRest = c.skipTheRest();
FModel.getQuest().getCards().addAllCards(pack.getCards());
}
if (skipTheRest && !remainingCards.isEmpty()) {
final CardListViewer c = new CardListViewer("Tournament Reward", "You have found the following cards inside:", remainingCards);
c.setVisible(true);
c.dispose();
FModel.getQuest().getCards().addAllCards(remainingCards);
}
} else {
List<PaperCard> cards = new ArrayList<PaperCard>();
while (boosterPacks.size() > 0) {
BoosterPack pack = boosterPacks.remove(0);
cards.addAll(pack.getCards());
continue;
}
final CardListViewer c = new CardListViewer("Tournament Reward", "You have found the following cards inside:", cards);
c.setVisible(true);
c.dispose();
FModel.getQuest().getCards().addAllCards(cards);
}
}
String packPlural = (prizes.boosterPacks.size() == 1) ? "" : "s";
FOptionPane.showMessageDialog("For placing " + placement + ", you have been awarded " + prizes.boosterPacks.size() + " booster pack" + packPlural + "!", "Booster Pack" + packPlural + " Awarded", FSkin.getImage(FSkinProp.ICO_QUEST_BOX));
if (FModel.getPreferences().getPrefBoolean(FPref.UI_OPEN_PACKS_INDIV) && prizes.boosterPacks.size() > 1) {
boolean skipTheRest = false;
List<PaperCard> remainingCards = new ArrayList<>();
int totalPacks = prizes.boosterPacks.size();
int currentPack = 0;
while (prizes.boosterPacks.size() > 0) {
BoosterPack pack = prizes.boosterPacks.remove(0);
currentPack++;
if (skipTheRest) {
remainingCards.addAll(pack.getCards());
continue;
}
final BoxedProductCardListViewer c = new BoxedProductCardListViewer(pack.getName(), "You have found the following cards inside (Booster Pack " + currentPack + " of " + totalPacks + "):", pack.getCards());
c.setVisible(true);
c.dispose();
skipTheRest = c.skipTheRest();
}
if (skipTheRest && !remainingCards.isEmpty()) {
final CardListViewer c = new CardListViewer("Tournament Reward", "You have found the following cards inside:", remainingCards);
c.setVisible(true);
c.dispose();
}
} else {
List<PaperCard> cards = new ArrayList<PaperCard>();
while (prizes.boosterPacks.size() > 0) {
BoosterPack pack = prizes.boosterPacks.remove(0);
cards.addAll(pack.getCards());
}
final CardListViewer c = new CardListViewer("Tournament Reward", "You have found the following cards inside:", cards);
c.setVisible(true);
c.dispose();
}
}
@@ -235,35 +204,11 @@ public enum CSubmenuQuestDraft implements ICDoc {
boolean saveDraft = FOptionPane.showOptionDialog("Would you like to save this draft to the regular draft mode?", "Save Draft?", FSkin.getImage(FSkinProp.ICO_QUESTION).scale(2.0), new String[] { "Yes", "No" }, 0) == 0;
if (saveDraft) {
String tournamentName = FModel.getQuest().getName() + " Tournament Deck " + new SimpleDateFormat("EEE d MMM yyyy HH-mm-ss").format(new Date());
DeckGroup original = FModel.getQuest().getDraftDecks().get(QuestEventDraft.DECK_NAME);
DeckGroup output = new DeckGroup(tournamentName);
for (Deck aiDeck : original.getAiDecks()) {
output.addAiDeck(copyDeck(aiDeck));
}
output.setHumanDeck(copyDeck(original.getHumanDeck(), tournamentName));
FModel.getDecks().getDraft().add(output);
draft.saveToRegularDraft();
CSubmenuDraft.SINGLETON_INSTANCE.update();
}
String deckName = "Tournament Deck " + new SimpleDateFormat("EEE d MMM yyyy HH-mm-ss").format(new Date());
Deck tournamentDeck = FModel.getQuest().getDraftDecks().get(QuestEventDraft.DECK_NAME).getHumanDeck();
Deck deck = new Deck(deckName);
FModel.getQuest().getCards().addAllCards(tournamentDeck.getAllCardsInASinglePool().toFlatList());
if (tournamentDeck.get(DeckSection.Main).countAll() > 0) {
deck.getOrCreate(DeckSection.Main).addAll(tournamentDeck.get(DeckSection.Main));
FModel.getQuest().getMyDecks().add(deck);
}
FModel.getQuest().getDraftDecks().delete(QuestEventDraft.DECK_NAME);
FModel.getQuest().getAchievements().endCurrentTournament(FModel.getQuest().getAchievements().getCurrentDraft().getPlayerPlacement());
FModel.getQuest().save();
draft.addToQuestDecks();
VSubmenuQuestDraft view = VSubmenuQuestDraft.SINGLETON_INSTANCE;
CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
@@ -317,7 +262,6 @@ public enum CSubmenuQuestDraft implements ICDoc {
if (achievements != null) {
achievements.spendDraftToken();
FModel.getQuest().save();
update();
VSubmenuQuestDraft.SINGLETON_INSTANCE.populate();
@@ -492,27 +436,13 @@ public enum CSubmenuQuestDraft implements ICDoc {
}
public void setCompletedDraft(DeckGroup finishedDraft, String s) {
List<Deck> aiDecks = new ArrayList<Deck>(finishedDraft.getAiDecks());
finishedDraft.getAiDecks().clear();
for (int i = 0; i < aiDecks.size(); i++) {
Deck oldDeck = aiDecks.get(i);
Deck namedDeck = new Deck("AI Deck " + i);
namedDeck.putSection(DeckSection.Main, oldDeck.get(DeckSection.Main));
namedDeck.putSection(DeckSection.Sideboard, oldDeck.get(DeckSection.Sideboard));
finishedDraft.getAiDecks().add(namedDeck);
}
IStorage<DeckGroup> draft = FModel.getQuest().getDraftDecks();
draft.add(finishedDraft);
public void setCompletedDraft(DeckGroup finishedDraft) {
QuestDraftUtils.completeDraft(finishedDraft);
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_QUEST_TOURNAMENT);
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorQuestLimited(FModel.getQuest()));
FModel.getQuest().save();
drafting = false;
VSubmenuQuestDraft.SINGLETON_INSTANCE.setMode(Mode.PREPARE_DECK);
@@ -536,7 +466,7 @@ public enum CSubmenuQuestDraft implements ICDoc {
QuestEventDraft draftEvent = QuestUtil.getDraftEvent();
long creditsAvailable = FModel.getQuest().getAssets().getCredits();
if (creditsAvailable < draftEvent.getEntryFee()) {
if (draftEvent.canEnter()) {
FOptionPane.showMessageDialog("You need " + NUMBER_FORMATTER.format(draftEvent.getEntryFee() - creditsAvailable) + " more credits to enter this tournament.", "Not Enough Credits", FSkin.getImage(FSkinProp.ICO_WARNING).scale(2.0));
return;
}
@@ -548,13 +478,9 @@ public enum CSubmenuQuestDraft implements ICDoc {
}
drafting = true;
FModel.getQuest().getAchievements().setCurrentDraft(draftEvent);
FModel.getQuest().getAssets().subtractCredits(draftEvent.getEntryFee());
BoosterDraft draft = BoosterDraft.createDraft(LimitedPoolType.Block, FModel.getBlocks().get(draftEvent.getBlock()), draftEvent.getBoosterConfiguration());
BoosterDraft draft = draftEvent.enter();
final CEditorQuestDraftingProcess draftController = new CEditorQuestDraftingProcess();
draftController.showGui(draft);
@@ -585,9 +511,10 @@ public enum CSubmenuQuestDraft implements ICDoc {
}
private void startNextMatch() {
String message = GameType.QuestDraft.getDecksFormat().getDeckConformanceProblem(FModel.getQuest().getAssets().getDraftDeckStorage().get(QuestEventDraft.DECK_NAME).getHumanDeck());
if (message != null && FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
String message = QuestDraftUtils.getDeckLegality();
if (message != null) {
FOptionPane.showMessageDialog(message, "Deck Invalid");
return;
}
@@ -595,28 +522,6 @@ public enum CSubmenuQuestDraft implements ICDoc {
QuestDraftUtils.startNextMatch();
}
private Deck copyDeck(final Deck deck) {
Deck outputDeck = new Deck(deck.getName());
outputDeck.putSection(DeckSection.Main, new CardPool(deck.get(DeckSection.Main)));
outputDeck.putSection(DeckSection.Sideboard, new CardPool(deck.get(DeckSection.Sideboard)));
return outputDeck;
}
private Deck copyDeck(final Deck deck, final String deckName) {
Deck outputDeck = new Deck(deckName);
outputDeck.putSection(DeckSection.Main, new CardPool(deck.get(DeckSection.Main)));
outputDeck.putSection(DeckSection.Sideboard, new CardPool(deck.get(DeckSection.Sideboard)));
return outputDeck;
}
@Override
public UiCommand getCommandOnSelect() {

View File

@@ -1,11 +1,10 @@
package forge.quest;
import java.util.ArrayList;
import java.util.List;
import forge.FThreads;
import forge.GuiBase;
import forge.deck.Deck;
import forge.deck.DeckGroup;
import forge.deck.DeckSection;
import forge.game.Game;
import forge.game.GameRules;
import forge.game.GameType;
@@ -13,7 +12,10 @@ import forge.game.Match;
import forge.game.player.RegisteredPlayer;
import forge.model.FModel;
import forge.properties.ForgePreferences.FPref;
import forge.quest.QuestEventDraft;
import forge.util.storage.IStorage;
import java.util.ArrayList;
import java.util.List;
public class QuestDraftUtils {
private static List<DraftMatchup> matchups = new ArrayList<DraftMatchup>();
@@ -28,6 +30,34 @@ public class QuestDraftUtils {
}
GuiBase.getInterface().continueMatch(matchInProgress ? lastGame.getMatch() : null);
}
public static void completeDraft(DeckGroup finishedDraft) {
List<Deck> aiDecks = new ArrayList<Deck>(finishedDraft.getAiDecks());
finishedDraft.getAiDecks().clear();
for (int i = 0; i < aiDecks.size(); i++) {
Deck oldDeck = aiDecks.get(i);
Deck namedDeck = new Deck("AI Deck " + i);
namedDeck.putSection(DeckSection.Main, oldDeck.get(DeckSection.Main));
namedDeck.putSection(DeckSection.Sideboard, oldDeck.get(DeckSection.Sideboard));
finishedDraft.getAiDecks().add(namedDeck);
}
IStorage<DeckGroup> draft = FModel.getQuest().getDraftDecks();
draft.add(finishedDraft);
FModel.getQuest().save();
}
public static String getDeckLegality() {
String message = GameType.QuestDraft.getDecksFormat().getDeckConformanceProblem(FModel.getQuest().getAssets().getDraftDeckStorage().get(QuestEventDraft.DECK_NAME).getHumanDeck());
if (message != null && FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
return message;
}
return null;
}
public static void startNextMatch() {

View File

@@ -17,21 +17,18 @@
*/
package forge.quest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import com.google.common.base.Function;
import forge.GuiBase;
import forge.card.CardEdition;
import forge.card.CardEdition.CardInSet;
import forge.card.CardRarity;
import forge.deck.CardPool;
import forge.deck.Deck;
import forge.deck.DeckGroup;
import forge.deck.DeckSection;
import forge.item.BoosterPack;
import forge.item.PaperCard;
import forge.limited.BoosterDraft;
import forge.limited.LimitedPoolType;
import forge.model.CardBlock;
import forge.model.FModel;
@@ -39,6 +36,9 @@ import forge.quest.io.ReadPriceList;
import forge.util.NameGenerator;
import forge.util.storage.IStorage;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* <p>
* QuestEvent.
@@ -48,7 +48,27 @@ import forge.util.storage.IStorage;
* unique event types: battles, quests, and others.
*/
public class QuestEventDraft {
public static class QuestDraftPrizes {
public int credits;
public List<BoosterPack> boosterPacks;
public List<PaperCard> individualCards;
public boolean hasCredits() {
return credits > 0;
}
public boolean hasBoosterPacks() {
return boosterPacks != null && boosterPacks.size() > 0;
}
public boolean hasIndividualCards() {
return individualCards != null && individualCards.size() > 0;
}
}
public static final String UNDETERMINED = "quest_draft_undetermined_place";
public static final String HUMAN = "quest_draft_human_place";
public static final String DECK_NAME = "Tournament Deck";
@@ -149,7 +169,58 @@ public class QuestEventDraft {
public void addWin() {
age--;
}
public void saveToRegularDraft() {
String tournamentName = FModel.getQuest().getName() + " Tournament Deck " + new SimpleDateFormat("EEE d MMM yyyy HH-mm-ss").format(new Date());
DeckGroup original = FModel.getQuest().getDraftDecks().get(QuestEventDraft.DECK_NAME);
DeckGroup output = new DeckGroup(tournamentName);
for (Deck aiDeck : original.getAiDecks()) {
output.addAiDeck(copyDeck(aiDeck));
}
output.setHumanDeck(copyDeck(original.getHumanDeck(), tournamentName));
FModel.getDecks().getDraft().add(output);
}
public void addToQuestDecks() {
String deckName = "Tournament Deck " + new SimpleDateFormat("EEE d MMM yyyy HH-mm-ss").format(new Date());
Deck tournamentDeck = FModel.getQuest().getDraftDecks().get(QuestEventDraft.DECK_NAME).getHumanDeck();
Deck deck = new Deck(deckName);
FModel.getQuest().getCards().addAllCards(tournamentDeck.getAllCardsInASinglePool().toFlatList());
if (tournamentDeck.get(DeckSection.Main).countAll() > 0) {
deck.getOrCreate(DeckSection.Main).addAll(tournamentDeck.get(DeckSection.Main));
FModel.getQuest().getMyDecks().add(deck);
}
FModel.getQuest().getDraftDecks().delete(QuestEventDraft.DECK_NAME);
FModel.getQuest().getAchievements().endCurrentTournament(FModel.getQuest().getAchievements().getCurrentDraft().getPlayerPlacement());
FModel.getQuest().save();
}
private Deck copyDeck(final Deck deck) {
Deck outputDeck = new Deck(deck.getName());
outputDeck.putSection(DeckSection.Main, new CardPool(deck.get(DeckSection.Main)));
outputDeck.putSection(DeckSection.Sideboard, new CardPool(deck.get(DeckSection.Sideboard)));
return outputDeck;
}
private Deck copyDeck(final Deck deck, final String deckName) {
Deck outputDeck = new Deck(deckName);
outputDeck.putSection(DeckSection.Main, new CardPool(deck.get(DeckSection.Main)));
outputDeck.putSection(DeckSection.Sideboard, new CardPool(deck.get(DeckSection.Sideboard)));
return outputDeck;
}
public int getHumanLatestStanding() {
int humanIndex = 0;
for (int i = getStandings().length - 1; i >= 0; i--) {
@@ -242,12 +313,9 @@ public class QuestEventDraft {
}
/**
* Generates the prizes for the player in an Object array.
* Index 0: int - credits
* Index 1:
* Index 2: ArrayList<PaperCard> - single cards
* Generates the prizes for the player and saves them to the current quest.
*/
public Object[] getPrizes() {
public QuestDraftPrizes collectPrizes() {
int place = getPlayerPlacement();
int prizePool = entryFee * 9;
@@ -270,23 +338,49 @@ public class QuestEventDraft {
}
prizePool -= boosterPrices * 8;
QuestDraftPrizes prizes = null;
switch (place) {
case 1:
return generateFirstPlacePrizes(prizePool);
prizes = generateFirstPlacePrizes(prizePool);
break;
case 2:
return generateSecondPlacePrizes(prizePool);
prizes = generateSecondPlacePrizes(prizePool);
break;
case 3:
return generateThirdPlacePrizes(prizePool);
prizes = generateThirdPlacePrizes(prizePool);
break;
case 4:
return generateFourthPlacePrizes(prizePool);
prizes = generateFourthPlacePrizes(prizePool);
break;
}
if (prizes != null) {
if (prizes.hasCredits()) {
FModel.getQuest().getAssets().addCredits(prizes.credits);
}
if (prizes.hasBoosterPacks()) {
for (BoosterPack boosterPack : prizes.boosterPacks) {
FModel.getQuest().getCards().addAllCards(boosterPack.getCards());
}
}
if (prizes.hasIndividualCards()) {
FModel.getQuest().getCards().addAllCards(prizes.individualCards);
}
return prizes;
}
return null;
}
private Object[] generateFirstPlacePrizes(final int prizePool) {
private QuestDraftPrizes generateFirstPlacePrizes(final int prizePool) {
int credits = 2 * (prizePool / 3); //First place gets 2/3 the total prize pool
List<PaperCard> cards = new ArrayList<PaperCard>();
@@ -307,12 +401,17 @@ public class QuestEventDraft {
}
credits = (credits / 2) + creditsForPacks; //Add the leftover credits + 50%
return new Object[] { credits, boosters, cards };
QuestDraftPrizes prizes = new QuestDraftPrizes();
prizes.credits = credits;
prizes.boosterPacks = boosters;
prizes.individualCards = cards;
return prizes;
}
private Object[] generateSecondPlacePrizes(final int prizePool) {
private QuestDraftPrizes generateSecondPlacePrizes(final int prizePool) {
int credits = prizePool / 3; //Second place gets 1/3 the total prize pool
List<PaperCard> cards = new ArrayList<PaperCard>();
@@ -333,12 +432,17 @@ public class QuestEventDraft {
}
credits = (credits / 4) + creditsForPacks; //Add the leftover credits + 25%
return new Object[] { credits, boosters, cards };
QuestDraftPrizes prizes = new QuestDraftPrizes();
prizes.credits = credits;
prizes.boosterPacks = boosters;
prizes.individualCards = cards;
return prizes;
}
private Object[] generateThirdPlacePrizes(final int prizePool) {
private QuestDraftPrizes generateThirdPlacePrizes(final int prizePool) {
int credits = 0;
List<PaperCard> cards = new ArrayList<PaperCard>();
@@ -347,19 +451,28 @@ public class QuestEventDraft {
List<BoosterPack> boosters = new ArrayList<BoosterPack>();
boosters.add(getBoosterPack());
return new Object[] { credits, boosters, cards };
QuestDraftPrizes prizes = new QuestDraftPrizes();
prizes.credits = credits;
prizes.boosterPacks = boosters;
prizes.individualCards = cards;
return prizes;
}
private Object[] generateFourthPlacePrizes(final int prizePool) {
private QuestDraftPrizes generateFourthPlacePrizes(final int prizePool) {
int credits = 0;
List<PaperCard> cards = new ArrayList<PaperCard>();
cards.add(getPromoCard());
return new Object[] { credits, null, cards };
QuestDraftPrizes prizes = new QuestDraftPrizes();
prizes.credits = credits;
prizes.individualCards = cards;
return prizes;
}
@@ -379,7 +492,7 @@ public class QuestEventDraft {
}
CardInSet randomCard = cardsInEdition.get((int) (Math.random() * cardsInEdition.size()));
CardInSet randomCard;
PaperCard promo = null;
int attempts = 25;
@@ -411,7 +524,7 @@ public class QuestEventDraft {
private int getBoosterPrice(BoosterPack booster) {
int value = 0;
int value;
String boosterName = booster.getName() + " Booster Pack";
if (MAP_PRICES.containsKey(boosterName)) {
@@ -516,6 +629,17 @@ public class QuestEventDraft {
}
public boolean canEnter() {
long creditsAvailable = FModel.getQuest().getAssets().getCredits();
return creditsAvailable < getEntryFee();
}
public BoosterDraft enter() {
FModel.getQuest().getAchievements().setCurrentDraft(this);
FModel.getQuest().getAssets().subtractCredits(getEntryFee());
return BoosterDraft.createDraft(LimitedPoolType.Block, FModel.getBlocks().get(getBlock()), getBoosterConfiguration());
}
public boolean isStarted() {
return started;
}

View File

@@ -1,12 +1,12 @@
package forge.quest.data;
import java.util.ArrayList;
import java.util.List;
import forge.model.FModel;
import forge.quest.QuestEventDraft;
import forge.quest.data.QuestPreferences.DifficultyPrefs;
import java.util.ArrayList;
import java.util.List;
/**
* TODO: Write javadoc for this type.
*
@@ -316,6 +316,7 @@ public class QuestAchievements {
if (draftTokens > 0) {
draftTokens--;
draftsToGenerate++;
FModel.getQuest().save();
}
}