Preconstructed Decks added to quest mode shop.

This commit is contained in:
Maxmtg
2012-01-28 00:22:04 +00:00
parent 2f0d95cf9b
commit c09a618cf1
25 changed files with 317 additions and 62 deletions

13
.gitattributes vendored
View File

@@ -11234,6 +11234,7 @@ src/main/java/forge/item/InventoryItem.java -text
src/main/java/forge/item/InventoryItemFromSet.java -text
src/main/java/forge/item/ItemPool.java -text
src/main/java/forge/item/ItemPoolView.java -text
src/main/java/forge/item/PreconDeck.java -text
src/main/java/forge/item/package-info.java -text
src/main/java/forge/model/BuildInfo.java -text
src/main/java/forge/model/FGameState.java -text
@@ -11248,12 +11249,18 @@ src/main/java/forge/properties/NewConstants.java svneol=native#text/plain
src/main/java/forge/properties/Preferences.java svneol=native#text/plain
src/main/java/forge/properties/SavePreferencesListener.java svneol=native#text/plain
src/main/java/forge/properties/package-info.java svneol=native#text/plain
src/main/java/forge/quest/ReadPriceList.java svneol=native#text/plain
src/main/java/forge/quest/SellRules.java -text
src/main/java/forge/quest/data/QuestChallenge.java svneol=native#text/plain
src/main/java/forge/quest/data/QuestData.java svneol=native#text/plain
src/main/java/forge/quest/data/QuestDataIO.java svneol=native#text/plain
src/main/java/forge/quest/data/QuestDuel.java svneol=native#text/plain
src/main/java/forge/quest/data/QuestEvent.java -text
src/main/java/forge/quest/data/QuestEventManager.java svneol=native#text/plain
src/main/java/forge/quest/data/QuestPreconManager.java -text
src/main/java/forge/quest/data/QuestPreferences.java svneol=native#text/plain
src/main/java/forge/quest/data/QuestUtil.java svneol=native#text/plain
src/main/java/forge/quest/data/QuestUtilCards.java -text
src/main/java/forge/quest/data/ReadPriceList.java svneol=native#text/plain
src/main/java/forge/quest/data/bazaar/QuestStallDefinition.java svneol=native#text/plain
src/main/java/forge/quest/data/bazaar/QuestStallManager.java svneol=native#text/plain
src/main/java/forge/quest/data/bazaar/QuestStallPurchasable.java svneol=native#text/plain
@@ -11286,12 +11293,8 @@ src/main/java/forge/quest/gui/bazaar/QuestBazaarItem.java svneol=native#text/pla
src/main/java/forge/quest/gui/bazaar/QuestBazaarPanel.java svneol=native#text/plain
src/main/java/forge/quest/gui/bazaar/QuestBazaarStall.java svneol=native#text/plain
src/main/java/forge/quest/gui/bazaar/package-info.java svneol=native#text/plain
src/main/java/forge/quest/gui/main/QuestChallenge.java svneol=native#text/plain
src/main/java/forge/quest/gui/main/QuestChallengePanel.java -text
src/main/java/forge/quest/gui/main/QuestDuel.java svneol=native#text/plain
src/main/java/forge/quest/gui/main/QuestDuelPanel.java -text
src/main/java/forge/quest/gui/main/QuestEvent.java -text
src/main/java/forge/quest/gui/main/QuestEventManager.java svneol=native#text/plain
src/main/java/forge/quest/gui/main/QuestSelectablePanel.java -text
src/main/java/forge/quest/gui/main/package-info.java svneol=native#text/plain
src/main/java/forge/quest/gui/package-info.java svneol=native#text/plain

View File

@@ -34,8 +34,8 @@ import forge.model.FMatchState;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.quest.data.QuestData;
import forge.quest.gui.main.QuestEvent;
import forge.quest.gui.main.QuestEventManager;
import forge.quest.data.QuestEvent;
import forge.quest.data.QuestEventManager;
import forge.view.toolbox.FOverlay;
/**
@@ -172,7 +172,7 @@ public final class AllZone {
* getQuestEvent.
* </p>
*
* @return a {@link forge.quest.gui.main.QuestEvent} object.
* @return a {@link forge.quest.data.QuestEvent} object.
* @since 1.0.15
*/
public static QuestEvent getQuestEvent() {
@@ -185,7 +185,7 @@ public final class AllZone {
* </p>
*
* @param q
* a {@link forge.quest.gui.main.QuestEvent} object.
* a {@link forge.quest.data.QuestEvent} object.
*/
public static void setQuestEvent(final QuestEvent q) {
AllZone.questEvent = q;
@@ -196,7 +196,7 @@ public final class AllZone {
* getQuestEventManager.
* </p>
*
* @return {@link forge.quest.gui.main.QuestEventManager} object.
* @return {@link forge.quest.data.QuestEventManager} object.
* @since 1.0.15
*/
public static QuestEventManager getQuestEventManager() {
@@ -209,7 +209,7 @@ public final class AllZone {
* </p>
*
* @param qem
* a {@link forge.quest.gui.main.QuestEventManager} object
* a {@link forge.quest.data.QuestEventManager} object
*/
public static void setQuestEventManager(final QuestEventManager qem) {
AllZone.questEventManager = qem;

View File

@@ -114,7 +114,7 @@ public class ImageCache {
}
File file = null;
final String fName = key.endsWith(".png") ? key : key + ".jpg";
final String fName = key.endsWith(".png") || key.endsWith(".jpg") ? key : key + ".jpg";
file = new File(path, fName);
if (!file.exists()) {
// DEBUG

View File

@@ -16,11 +16,11 @@ import forge.deck.Deck;
import forge.game.GameType;
import forge.gui.deckeditor.DeckEditorQuest;
import forge.gui.deckeditor.DeckEditorShop;
import forge.quest.data.QuestChallenge;
import forge.quest.data.QuestData;
import forge.quest.data.QuestEvent;
import forge.quest.data.QuestUtil;
import forge.quest.data.item.QuestItemZeppelin;
import forge.quest.gui.main.QuestChallenge;
import forge.quest.gui.main.QuestEvent;
import forge.view.GuiTopLevel;
import forge.view.home.ViewQuest;

View File

@@ -95,19 +95,22 @@ public class DeckIO {
* a {@link java.io.File} object.
* @return a {@link forge.deck.Deck} object.
*/
public static Deck readDeck(final File deckFile) {
final List<String> lines = FileUtil.readFile(deckFile);
final Map<String, List<String>> sections = SectionUtil.parseSections(lines);
public static Deck readDeck(final File deckFile) {
return readDeck(FileUtil.readFile(deckFile));
}
public static Deck readDeck(final List<String> deckFileLines) {
final Map<String, List<String>> sections = SectionUtil.parseSections(deckFileLines);
if (sections.isEmpty()) {
return null;
}
final Deck d = new Deck();
final String firstLine = lines.get(0);
final String firstLine = deckFileLines.get(0);
if (!firstLine.startsWith("[") || firstLine.equalsIgnoreCase("[general]")) {
readDeckOldMetadata(lines.iterator(), d);
readDeckOldMetadata(deckFileLines.iterator(), d);
} else {
readDeckMetadata(sections.get("metadata"), d);
}

View File

@@ -45,8 +45,9 @@ import forge.item.BoosterPack;
import forge.item.CardPrinted;
import forge.item.InventoryItem;
import forge.item.ItemPoolView;
import forge.item.PreconDeck;
import forge.quest.ReadPriceList;
import forge.quest.data.QuestData;
import forge.quest.data.ReadPriceList;
/**
* <p>
@@ -295,6 +296,8 @@ public final class DeckEditorShop extends DeckEditorBase {
}
} else if (card instanceof BoosterPack) {
return 395;
} else if (card instanceof PreconDeck) {
return ((PreconDeck)card).getRecommendedDeals().getCost();
}
return 1337;
}
@@ -308,14 +311,17 @@ public final class DeckEditorShop extends DeckEditorBase {
final int value = this.getCardValue(item);
if (value <= this.questData.getCredits()) {
if (item instanceof CardPrinted) {
this.getTopTableWithCards().removeCard(item);
final CardPrinted card = (CardPrinted) item;
this.getBottomTableWithCards().addCard(card);
this.getTopTableWithCards().removeCard(card);
this.questData.getCards().buyCard(card, value);
} else if (item instanceof BoosterPack) {
this.getTopTableWithCards().removeCard(item);
final BoosterPack booster = (BoosterPack) ((BoosterPack) item).clone();
this.questData.getCards().buyBooster(booster, value);
final List<CardPrinted> newCards = booster.getCards();
@@ -325,7 +331,18 @@ public final class DeckEditorShop extends DeckEditorBase {
final CardListViewer c = new CardListViewer(booster.getName(),
"You have found the following cards inside:", newCards);
c.show();
} else if ( item instanceof PreconDeck ) {
this.getTopTableWithCards().removeCard(item);
final PreconDeck deck = (PreconDeck)item;
this.questData.getCards().buyPreconDeck(deck, value);
for (final CardPrinted card : deck.getDeck().getMain().toFlatList()) {
this.getBottomTableWithCards().addCard(card);
}
JOptionPane.showMessageDialog(null, String.format("Deck '%s' was added to youd decklist.%n%nCards from it were also added to your pool.", deck.getName()), "Thanks for purchase!", JOptionPane.INFORMATION_MESSAGE);
}
this.creditsLabel.setText("Total credits: " + this.questData.getCredits());
} else {

View File

@@ -0,0 +1,77 @@
package forge.item;
import java.io.File;
import java.util.List;
import java.util.Map;
import forge.SetUtils;
import forge.deck.Deck;
import forge.deck.DeckIO;
import forge.quest.SellRules;
import forge.util.FileUtil;
import forge.util.SectionUtil;
/**
* TODO: Write javadoc for this type.
*
*/
public class PreconDeck implements InventoryItemFromSet {
private final Deck deck;
private final String imageFilename;
private final String set;
private final SellRules recommendedDeals;
@Override
public String getName() {
return deck.getName();
}
@Override
public String getImageFilename() {
return "precons/" + this.imageFilename;
}
@Override
public String getType() {
return "Prebuilt Deck";
}
public PreconDeck(final File f)
{
List<String> deckLines = FileUtil.readFile(f);
Map<String, List<String>> sections = SectionUtil.parseSections(deckLines);
deck = DeckIO.readDeck(deckLines);
String filenameProxy = null;
String setProxy = "n/a";
List<String> metadata = sections.get("metadata");
if ( null != metadata && !metadata.isEmpty() ) for(String s : metadata) {
String[] kv = s.split("=");
if( "Image".equalsIgnoreCase(kv[0]))
filenameProxy = kv[1];
if( "set".equalsIgnoreCase(kv[0]) && SetUtils.getSetByCode(kv[1].toUpperCase()) != null )
setProxy = kv[1];
}
imageFilename = filenameProxy;
set = setProxy;
recommendedDeals = new SellRules(sections.get("shop"));
}
public final Deck getDeck() {
return deck;
}
public final SellRules getRecommendedDeals() {
return recommendedDeals;
}
@Override
public String getSet() {
return set;
}
}

View File

@@ -50,6 +50,7 @@ public final class NewConstants {
/** Constant <code>NEW_DECKS="decks-dir"</code>. */
public static final String NEW_DECKS = "decks-dir";
/** Constant <code>TOKENS="tokens"</code>. */
public static final String TOKENS = "tokens";
/** Constant <code>CARD_PICTURES="card-pictures"</code>. */
@@ -206,6 +207,8 @@ public final class NewConstants {
/** The PET_TOKEN_IMAGES. */
public static final String PET_TOKEN_IMAGES = "quest/pet/tokens";
public static final String PRECONS = "quest/precons-dir";
}
/**

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.quest.data;
package forge.quest;
import java.io.BufferedReader;
import java.io.File;

View File

@@ -0,0 +1,45 @@
package forge.quest;
import java.util.List;
import forge.quest.data.QuestData;
/**
* TODO: Write javadoc for this type.
*
*/
public class SellRules {
private int minWins = 0;
private int cost = 250;
private int minDifficulty = 0;
private int maxDifficulty = 5;
public SellRules(List<String> questShop) {
if( null == questShop || questShop.isEmpty() ) return;
for( String s : questShop ) {
String[] kv = s.split("=");
if( "WinsToUnlock".equalsIgnoreCase(kv[0]) ) minWins = Integer.parseInt(kv[1]);
else if ("Credits".equalsIgnoreCase(kv[0])) cost = Integer.parseInt(kv[1]);
else if ("MaxDifficulty".equalsIgnoreCase(kv[0])) maxDifficulty = Integer.parseInt(kv[1]);
else if ("MinDifficulty".equalsIgnoreCase(kv[0])) minDifficulty = Integer.parseInt(kv[1]);
}
}
public boolean meetsRequiremnts(QuestData quest)
{
if( quest.getWin() < minWins ) return false;
if( quest.getDifficultyIndex() < minDifficulty || quest.getDifficultyIndex() > maxDifficulty ) return false;
return true;
}
public final int getCost() {
return cost;
}
}

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.quest.gui.main;
package forge.quest.data;
import java.util.ArrayList;
import java.util.List;

View File

@@ -155,6 +155,9 @@ public final class QuestData {
// complex
private transient QuestUtilCards myCards;
// This is used by shop. Had no idea where else to place this
private static transient QuestPreconManager preconManager = new QuestPreconManager(ForgeProps.getFile(NewConstants.Quest.PRECONS));
/** The Constant RANK_TITLES. */
public static final String[] RANK_TITLES = new String[] { "Level 0 - Confused Wizard", "Level 1 - Mana Mage",
"Level 2 - Death by Megrim", "Level 3 - Shattered the Competition", "Level 4 - Black Knighted",
@@ -681,6 +684,10 @@ public final class QuestData {
this.myDecks = myDecks0;
}
public static final QuestPreconManager getPreconManager() {
return preconManager;
}
/**
* Sets the inventory.
*

View File

@@ -52,6 +52,7 @@ import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.item.InventoryItem;
import forge.item.ItemPool;
import forge.item.PreconDeck;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.quest.data.item.QuestInventory;
@@ -283,6 +284,13 @@ public class QuestDataIO {
writer.endNode();
}
private void write(final PreconDeck deck, final Integer count, final HierarchicalStreamWriter writer) {
writer.startNode("precon");
writer.addAttribute("s", deck.getName());
writer.addAttribute("n", count.toString());
writer.endNode();
}
@Override
public void marshal(final Object source, final HierarchicalStreamWriter writer, final MarshallingContext context) {
@SuppressWarnings("unchecked")
@@ -294,6 +302,8 @@ public class QuestDataIO {
this.write((CardPrinted) item, count, writer);
} else if (item instanceof BoosterPack) {
this.write((BoosterPack) item, count, writer);
} else if (item instanceof PreconDeck) {
this.write((PreconDeck) item, count, writer);
}
}
@@ -314,12 +324,24 @@ public class QuestDataIO {
result.add(this.readCardPrinted(reader), cnt);
} else if ("booster".equals(nodename)) {
result.add(this.readBooster(reader), cnt);
} else if ("precon".equals(nodename)) {
PreconDeck toAdd = this.readPreconDeck(reader);
result.add(toAdd, cnt);
}
reader.moveUp();
}
return result;
}
private PreconDeck readPreconDeck(final HierarchicalStreamReader reader) {
final String name = reader.getAttribute("n");
for( PreconDeck d : QuestData.getPreconManager().getDecks() )
if ( name.equalsIgnoreCase( d.getName() ) )
return d;
return null;
}
private BoosterPack readBooster(final HierarchicalStreamReader reader) {
final String set = reader.getAttribute("s");
return new BoosterPack(set);

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.quest.gui.main;
package forge.quest.data;
/**
* <p>

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.quest.gui.main;
package forge.quest.data;
import forge.deck.Deck;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.quest.gui.main;
package forge.quest.data;
import java.io.File;
import java.util.ArrayList;
@@ -25,11 +25,8 @@ import java.util.Random;
import forge.AllZone;
import forge.deck.DeckIO;
import forge.deck.DeckManager;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.quest.data.QuestPreferences;
import forge.quest.data.QuestUtil;
import forge.util.FileUtil;
/**
@@ -75,10 +72,6 @@ public class QuestEventManager {
List<String> contents;
QuestEvent tempEvent;
final File file = ForgeProps.getFile(NewConstants.Quest.DECKS);
final DeckManager manager = new DeckManager(file);
final File[] allFiles = ForgeProps.getFile(NewConstants.Quest.DECKS).listFiles(DeckIO.DCK_FILE_FILTER);
for (final File f : allFiles) {
@@ -97,7 +90,7 @@ public class QuestEventManager {
// Assemble metadata (may not be necessary later) and deck object.
this.assembleEventMetadata(contents, tempEvent);
tempEvent.setEventDeck(manager.getDeck(tempEvent.getName()));
tempEvent.setEventDeck(DeckIO.readDeck(contents));
} // End for(allFiles)
this.assembleDuelDifficultyLists();

View File

@@ -0,0 +1,59 @@
package forge.quest.data;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;
import javax.swing.JOptionPane;
import org.apache.commons.lang3.StringUtils;
import forge.deck.DeckIO;
import forge.item.PreconDeck;
/**
* Very simple function - store all precons
*
*/
public class QuestPreconManager {
final List<PreconDeck> decks = new ArrayList<PreconDeck>();
public QuestPreconManager(File deckDir) {
final List<String> decksThatFailedToLoad = new ArrayList<String>();
File[] files = deckDir.listFiles(DeckIO.DCK_FILE_FILTER);
for (final File file : files) {
try {
decks.add(new PreconDeck(file));
} catch (final NoSuchElementException ex) {
final String message = String.format("%s failed to load because ---- %s", file.getName(), ex.getMessage());
decksThatFailedToLoad.add(message);
}
}
if (!decksThatFailedToLoad.isEmpty()) {
JOptionPane.showMessageDialog(null,
StringUtils.join(decksThatFailedToLoad, System.getProperty("line.separator")),
"Some of your decks were not loaded.", JOptionPane.WARNING_MESSAGE);
}
}
/**
* TODO: Write javadoc for this method.
* @param q
* @return
*/
public List<PreconDeck> getDecksForCurrent(QuestData q) {
return decks;
}
public final List<PreconDeck> getDecks() {
return decks;
}
}

View File

@@ -28,8 +28,6 @@ import forge.Player;
import forge.card.BoosterUtils;
import forge.card.CardRarity;
import forge.item.CardPrinted;
import forge.quest.gui.main.QuestChallenge;
import forge.quest.gui.main.QuestEvent;
/**
* <p>
@@ -63,7 +61,7 @@ public class QuestUtil {
* @param qd
* a {@link forge.quest.data.QuestData} object.
* @param qe
* a {@link forge.quest.gui.main.QuestEvent} object.
* a {@link forge.quest.data.QuestEvent} object.
* @return a {@link forge.CardList} object.
*/
public static CardList getComputerStartingCards(final QuestData qd, final QuestEvent qe) {
@@ -114,7 +112,7 @@ public class QuestUtil {
* @param qd
* a {@link forge.quest.data.QuestData} object.
* @param qe
* a {@link forge.quest.gui.main.QuestEvent} object.
* a {@link forge.quest.data.QuestEvent} object.
* @return a {@link forge.CardList} object.
*/
public static CardList getHumanStartingCards(final QuestData qd, final QuestEvent qe) {

View File

@@ -35,6 +35,7 @@ import forge.item.CardPrinted;
import forge.item.InventoryItem;
import forge.item.ItemPool;
import forge.item.ItemPoolView;
import forge.item.PreconDeck;
import forge.util.MyRandom;
/**
@@ -204,6 +205,15 @@ public final class QuestUtilCards {
}
}
public void buyPreconDeck(final PreconDeck precon, final int value) {
if (this.q.getCredits() >= value) {
this.q.setCredits(this.q.getCredits() - value);
this.q.getShopList().remove(precon);
this.q.addDeck(precon.getDeck());
this.addAllCards(precon.getDeck().getMain().toFlatList());
}
}
/**
* Sell card.
*
@@ -293,13 +303,6 @@ public final class QuestUtilCards {
/**
* Generate cards in shop.
*/
public void generateCardsInShop() {
final BoosterGenerator pack = new BoosterGenerator(CardDb.instance().getAllCards());
final int levelPacks = this.q.getLevel() > 0 ? 4 / this.q.getLevel() : 4;
final int winPacks = this.q.getWin() / 10;
final int totalPacks = Math.min(levelPacks + winPacks, 6);
final Predicate<CardSet> filterExt = CardSet.Predicates.Presets.SETS_IN_EXT;
final Predicate<CardSet> filterT2booster = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
CardSet.Predicates.Presets.SETS_IN_STANDARD);
@@ -308,16 +311,37 @@ public final class QuestUtilCards {
final Predicate<CardSet> filterNotExt = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
Predicate.not(filterExt));
this.q.getShopList().clear();
for (int i = 0; i < totalPacks; i++) {
this.q.getShopList().addAllCards(pack.getBoosterPack(7, 3, 1, 0, 0, 0, 0, 0, 0));
// add some boosters
public void generateBoostersInShop(int count)
{
for (int i = 0; i < count; i++) {
final int rollD100 = MyRandom.getRandom().nextInt(100);
final Predicate<CardSet> filter = rollD100 < 40 ? filterT2booster : (rollD100 < 75 ? filterExtButT2
: filterNotExt);
this.q.getShopList().addAllCards(filter.random(SetUtils.getAllSets(), 1, BoosterPack.FN_FROM_SET));
}
}
public void generatePreconsInShop(int count)
{
List<PreconDeck> validDecks = QuestData.getPreconManager().getDecksForCurrent(q);
this.q.getShopList().addAllCards(Predicate.getTrue(PreconDeck.class).random(validDecks, count));
}
public void generateCardsInShop() {
final BoosterGenerator pack = new BoosterGenerator(CardDb.instance().getAllCards());
final int levelPacks = this.q.getLevel() > 0 ? 4 / this.q.getLevel() : 4;
final int winPacks = this.q.getWin() / 10;
final int totalPacks = Math.min(levelPacks + winPacks, 6);
this.q.getShopList().clear();
for (int i = 0; i < totalPacks; i++) {
this.q.getShopList().addAllCards(pack.getBoosterPack(7, 3, 1, 0, 0, 0, 0, 0, 0));
}
generateBoostersInShop(totalPacks);
generatePreconsInShop(totalPacks);
this.addBasicLands(this.q.getShopList(), 10, 5);
}

View File

@@ -52,14 +52,14 @@ import forge.deck.Deck;
import forge.gui.GuiUtils;
import forge.gui.deckeditor.DeckEditorQuest;
import forge.gui.deckeditor.DeckEditorShop;
import forge.quest.data.QuestChallenge;
import forge.quest.data.QuestData;
import forge.quest.data.QuestDuel;
import forge.quest.data.QuestEventManager;
import forge.quest.data.QuestUtil;
import forge.quest.data.item.QuestItemZeppelin;
import forge.quest.gui.main.QuestChallenge;
import forge.quest.gui.main.QuestChallengePanel;
import forge.quest.gui.main.QuestDuel;
import forge.quest.gui.main.QuestDuelPanel;
import forge.quest.gui.main.QuestEventManager;
import forge.quest.gui.main.QuestSelectablePanel;
import forge.view.GuiTopLevel;
@@ -77,7 +77,7 @@ public class QuestMainPanel extends QuestAbstractPanel {
private static final long serialVersionUID = 6142934729724012402L;
private final forge.quest.data.QuestData questData;
private forge.quest.gui.main.QuestEventManager qem;
private forge.quest.data.QuestEventManager qem;
/** The credits label. */
private final JLabel creditsLabel = new JLabel();

View File

@@ -45,11 +45,11 @@ import forge.gui.GuiUtils;
import forge.gui.ListChooser;
import forge.item.CardPrinted;
import forge.model.FMatchState;
import forge.quest.data.QuestChallenge;
import forge.quest.data.QuestData;
import forge.quest.data.QuestEvent;
import forge.quest.data.QuestPreferences;
import forge.quest.data.QuestUtil;
import forge.quest.gui.main.QuestChallenge;
import forge.quest.gui.main.QuestEvent;
import forge.util.MyRandom;
import forge.view.GuiTopLevel;
import forge.view.match.ViewWinLose;

View File

@@ -20,6 +20,7 @@ package forge.quest.gui.main;
import javax.swing.JLabel;
import forge.gui.GuiUtils;
import forge.quest.data.QuestChallenge;
/**
* <p>

View File

@@ -17,6 +17,8 @@
*/
package forge.quest.gui.main;
import forge.quest.data.QuestDuel;
/**
* <p>
* QuestDuelPanel.

View File

@@ -34,6 +34,7 @@ import javax.swing.border.LineBorder;
import forge.gui.GuiUtils;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.quest.data.QuestEvent;
/**
* <p>

View File

@@ -31,14 +31,14 @@ import forge.control.home.ControlQuest;
import forge.gui.GuiUtils;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.quest.data.QuestChallenge;
import forge.quest.data.QuestData;
import forge.quest.data.QuestDataIO;
import forge.quest.data.QuestDuel;
import forge.quest.data.QuestEvent;
import forge.quest.data.QuestEventManager;
import forge.quest.data.item.QuestItemZeppelin;
import forge.quest.data.pet.QuestPetAbstract;
import forge.quest.gui.main.QuestChallenge;
import forge.quest.gui.main.QuestDuel;
import forge.quest.gui.main.QuestEvent;
import forge.quest.gui.main.QuestEventManager;
import forge.view.toolbox.FList;
import forge.view.toolbox.FProgressBar;
import forge.view.toolbox.FScrollPane;