mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Preconstructed Decks added to quest mode shop.
This commit is contained in:
13
.gitattributes
vendored
13
.gitattributes
vendored
@@ -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/InventoryItemFromSet.java -text
|
||||||
src/main/java/forge/item/ItemPool.java -text
|
src/main/java/forge/item/ItemPool.java -text
|
||||||
src/main/java/forge/item/ItemPoolView.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/item/package-info.java -text
|
||||||
src/main/java/forge/model/BuildInfo.java -text
|
src/main/java/forge/model/BuildInfo.java -text
|
||||||
src/main/java/forge/model/FGameState.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/Preferences.java svneol=native#text/plain
|
||||||
src/main/java/forge/properties/SavePreferencesListener.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/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/QuestData.java svneol=native#text/plain
|
||||||
src/main/java/forge/quest/data/QuestDataIO.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/QuestPreferences.java svneol=native#text/plain
|
||||||
src/main/java/forge/quest/data/QuestUtil.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/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/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/QuestStallManager.java svneol=native#text/plain
|
||||||
src/main/java/forge/quest/data/bazaar/QuestStallPurchasable.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/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/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/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/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/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/QuestSelectablePanel.java -text
|
||||||
src/main/java/forge/quest/gui/main/package-info.java svneol=native#text/plain
|
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
|
src/main/java/forge/quest/gui/package-info.java svneol=native#text/plain
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ import forge.model.FMatchState;
|
|||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
import forge.properties.NewConstants;
|
import forge.properties.NewConstants;
|
||||||
import forge.quest.data.QuestData;
|
import forge.quest.data.QuestData;
|
||||||
import forge.quest.gui.main.QuestEvent;
|
import forge.quest.data.QuestEvent;
|
||||||
import forge.quest.gui.main.QuestEventManager;
|
import forge.quest.data.QuestEventManager;
|
||||||
import forge.view.toolbox.FOverlay;
|
import forge.view.toolbox.FOverlay;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -172,7 +172,7 @@ public final class AllZone {
|
|||||||
* getQuestEvent.
|
* getQuestEvent.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @return a {@link forge.quest.gui.main.QuestEvent} object.
|
* @return a {@link forge.quest.data.QuestEvent} object.
|
||||||
* @since 1.0.15
|
* @since 1.0.15
|
||||||
*/
|
*/
|
||||||
public static QuestEvent getQuestEvent() {
|
public static QuestEvent getQuestEvent() {
|
||||||
@@ -185,7 +185,7 @@ public final class AllZone {
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param q
|
* @param q
|
||||||
* a {@link forge.quest.gui.main.QuestEvent} object.
|
* a {@link forge.quest.data.QuestEvent} object.
|
||||||
*/
|
*/
|
||||||
public static void setQuestEvent(final QuestEvent q) {
|
public static void setQuestEvent(final QuestEvent q) {
|
||||||
AllZone.questEvent = q;
|
AllZone.questEvent = q;
|
||||||
@@ -196,7 +196,7 @@ public final class AllZone {
|
|||||||
* getQuestEventManager.
|
* getQuestEventManager.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @return {@link forge.quest.gui.main.QuestEventManager} object.
|
* @return {@link forge.quest.data.QuestEventManager} object.
|
||||||
* @since 1.0.15
|
* @since 1.0.15
|
||||||
*/
|
*/
|
||||||
public static QuestEventManager getQuestEventManager() {
|
public static QuestEventManager getQuestEventManager() {
|
||||||
@@ -209,7 +209,7 @@ public final class AllZone {
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param qem
|
* @param qem
|
||||||
* a {@link forge.quest.gui.main.QuestEventManager} object
|
* a {@link forge.quest.data.QuestEventManager} object
|
||||||
*/
|
*/
|
||||||
public static void setQuestEventManager(final QuestEventManager qem) {
|
public static void setQuestEventManager(final QuestEventManager qem) {
|
||||||
AllZone.questEventManager = qem;
|
AllZone.questEventManager = qem;
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public class ImageCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
File file = null;
|
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);
|
file = new File(path, fName);
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
// DEBUG
|
// DEBUG
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ import forge.deck.Deck;
|
|||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.gui.deckeditor.DeckEditorQuest;
|
import forge.gui.deckeditor.DeckEditorQuest;
|
||||||
import forge.gui.deckeditor.DeckEditorShop;
|
import forge.gui.deckeditor.DeckEditorShop;
|
||||||
|
import forge.quest.data.QuestChallenge;
|
||||||
import forge.quest.data.QuestData;
|
import forge.quest.data.QuestData;
|
||||||
|
import forge.quest.data.QuestEvent;
|
||||||
import forge.quest.data.QuestUtil;
|
import forge.quest.data.QuestUtil;
|
||||||
import forge.quest.data.item.QuestItemZeppelin;
|
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.GuiTopLevel;
|
||||||
import forge.view.home.ViewQuest;
|
import forge.view.home.ViewQuest;
|
||||||
|
|
||||||
|
|||||||
@@ -95,19 +95,22 @@ public class DeckIO {
|
|||||||
* a {@link java.io.File} object.
|
* a {@link java.io.File} object.
|
||||||
* @return a {@link forge.deck.Deck} object.
|
* @return a {@link forge.deck.Deck} object.
|
||||||
*/
|
*/
|
||||||
public static Deck readDeck(final File deckFile) {
|
|
||||||
|
|
||||||
final List<String> lines = FileUtil.readFile(deckFile);
|
public static Deck readDeck(final File deckFile) {
|
||||||
final Map<String, List<String>> sections = SectionUtil.parseSections(lines);
|
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()) {
|
if (sections.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Deck d = new Deck();
|
final Deck d = new Deck();
|
||||||
|
|
||||||
final String firstLine = lines.get(0);
|
final String firstLine = deckFileLines.get(0);
|
||||||
if (!firstLine.startsWith("[") || firstLine.equalsIgnoreCase("[general]")) {
|
if (!firstLine.startsWith("[") || firstLine.equalsIgnoreCase("[general]")) {
|
||||||
readDeckOldMetadata(lines.iterator(), d);
|
readDeckOldMetadata(deckFileLines.iterator(), d);
|
||||||
} else {
|
} else {
|
||||||
readDeckMetadata(sections.get("metadata"), d);
|
readDeckMetadata(sections.get("metadata"), d);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,8 +45,9 @@ import forge.item.BoosterPack;
|
|||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.item.ItemPoolView;
|
import forge.item.ItemPoolView;
|
||||||
|
import forge.item.PreconDeck;
|
||||||
|
import forge.quest.ReadPriceList;
|
||||||
import forge.quest.data.QuestData;
|
import forge.quest.data.QuestData;
|
||||||
import forge.quest.data.ReadPriceList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -295,6 +296,8 @@ public final class DeckEditorShop extends DeckEditorBase {
|
|||||||
}
|
}
|
||||||
} else if (card instanceof BoosterPack) {
|
} else if (card instanceof BoosterPack) {
|
||||||
return 395;
|
return 395;
|
||||||
|
} else if (card instanceof PreconDeck) {
|
||||||
|
return ((PreconDeck)card).getRecommendedDeals().getCost();
|
||||||
}
|
}
|
||||||
return 1337;
|
return 1337;
|
||||||
}
|
}
|
||||||
@@ -308,14 +311,17 @@ public final class DeckEditorShop extends DeckEditorBase {
|
|||||||
final int value = this.getCardValue(item);
|
final int value = this.getCardValue(item);
|
||||||
|
|
||||||
if (value <= this.questData.getCredits()) {
|
if (value <= this.questData.getCredits()) {
|
||||||
|
|
||||||
if (item instanceof CardPrinted) {
|
if (item instanceof CardPrinted) {
|
||||||
|
this.getTopTableWithCards().removeCard(item);
|
||||||
|
|
||||||
final CardPrinted card = (CardPrinted) item;
|
final CardPrinted card = (CardPrinted) item;
|
||||||
this.getBottomTableWithCards().addCard(card);
|
this.getBottomTableWithCards().addCard(card);
|
||||||
this.getTopTableWithCards().removeCard(card);
|
|
||||||
|
|
||||||
this.questData.getCards().buyCard(card, value);
|
this.questData.getCards().buyCard(card, value);
|
||||||
|
|
||||||
} else if (item instanceof BoosterPack) {
|
} else if (item instanceof BoosterPack) {
|
||||||
this.getTopTableWithCards().removeCard(item);
|
this.getTopTableWithCards().removeCard(item);
|
||||||
|
|
||||||
final BoosterPack booster = (BoosterPack) ((BoosterPack) item).clone();
|
final BoosterPack booster = (BoosterPack) ((BoosterPack) item).clone();
|
||||||
this.questData.getCards().buyBooster(booster, value);
|
this.questData.getCards().buyBooster(booster, value);
|
||||||
final List<CardPrinted> newCards = booster.getCards();
|
final List<CardPrinted> newCards = booster.getCards();
|
||||||
@@ -325,8 +331,19 @@ public final class DeckEditorShop extends DeckEditorBase {
|
|||||||
final CardListViewer c = new CardListViewer(booster.getName(),
|
final CardListViewer c = new CardListViewer(booster.getName(),
|
||||||
"You have found the following cards inside:", newCards);
|
"You have found the following cards inside:", newCards);
|
||||||
c.show();
|
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());
|
this.creditsLabel.setText("Total credits: " + this.questData.getCredits());
|
||||||
} else {
|
} else {
|
||||||
JOptionPane.showMessageDialog(null, "Not enough credits!");
|
JOptionPane.showMessageDialog(null, "Not enough credits!");
|
||||||
|
|||||||
77
src/main/java/forge/item/PreconDeck.java
Normal file
77
src/main/java/forge/item/PreconDeck.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -50,6 +50,7 @@ public final class NewConstants {
|
|||||||
/** Constant <code>NEW_DECKS="decks-dir"</code>. */
|
/** Constant <code>NEW_DECKS="decks-dir"</code>. */
|
||||||
public static final String NEW_DECKS = "decks-dir";
|
public static final String NEW_DECKS = "decks-dir";
|
||||||
|
|
||||||
|
|
||||||
/** Constant <code>TOKENS="tokens"</code>. */
|
/** Constant <code>TOKENS="tokens"</code>. */
|
||||||
public static final String TOKENS = "tokens";
|
public static final String TOKENS = "tokens";
|
||||||
/** Constant <code>CARD_PICTURES="card-pictures"</code>. */
|
/** Constant <code>CARD_PICTURES="card-pictures"</code>. */
|
||||||
@@ -206,6 +207,8 @@ public final class NewConstants {
|
|||||||
|
|
||||||
/** The PET_TOKEN_IMAGES. */
|
/** The PET_TOKEN_IMAGES. */
|
||||||
public static final String PET_TOKEN_IMAGES = "quest/pet/tokens";
|
public static final String PET_TOKEN_IMAGES = "quest/pet/tokens";
|
||||||
|
|
||||||
|
public static final String PRECONS = "quest/precons-dir";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
45
src/main/java/forge/quest/SellRules.java
Normal file
45
src/main/java/forge/quest/SellRules.java
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -155,6 +155,9 @@ public final class QuestData {
|
|||||||
// complex
|
// complex
|
||||||
private transient QuestUtilCards myCards;
|
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. */
|
/** The Constant RANK_TITLES. */
|
||||||
public static final String[] RANK_TITLES = new String[] { "Level 0 - Confused Wizard", "Level 1 - Mana Mage",
|
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",
|
"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;
|
this.myDecks = myDecks0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final QuestPreconManager getPreconManager() {
|
||||||
|
return preconManager;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the inventory.
|
* Sets the inventory.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import forge.item.CardDb;
|
|||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.item.ItemPool;
|
import forge.item.ItemPool;
|
||||||
|
import forge.item.PreconDeck;
|
||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
import forge.properties.NewConstants;
|
import forge.properties.NewConstants;
|
||||||
import forge.quest.data.item.QuestInventory;
|
import forge.quest.data.item.QuestInventory;
|
||||||
@@ -283,6 +284,13 @@ public class QuestDataIO {
|
|||||||
writer.endNode();
|
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
|
@Override
|
||||||
public void marshal(final Object source, final HierarchicalStreamWriter writer, final MarshallingContext context) {
|
public void marshal(final Object source, final HierarchicalStreamWriter writer, final MarshallingContext context) {
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@@ -294,6 +302,8 @@ public class QuestDataIO {
|
|||||||
this.write((CardPrinted) item, count, writer);
|
this.write((CardPrinted) item, count, writer);
|
||||||
} else if (item instanceof BoosterPack) {
|
} else if (item instanceof BoosterPack) {
|
||||||
this.write((BoosterPack) item, count, writer);
|
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);
|
result.add(this.readCardPrinted(reader), cnt);
|
||||||
} else if ("booster".equals(nodename)) {
|
} else if ("booster".equals(nodename)) {
|
||||||
result.add(this.readBooster(reader), cnt);
|
result.add(this.readBooster(reader), cnt);
|
||||||
|
} else if ("precon".equals(nodename)) {
|
||||||
|
PreconDeck toAdd = this.readPreconDeck(reader);
|
||||||
|
result.add(toAdd, cnt);
|
||||||
}
|
}
|
||||||
reader.moveUp();
|
reader.moveUp();
|
||||||
}
|
}
|
||||||
return result;
|
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) {
|
private BoosterPack readBooster(final HierarchicalStreamReader reader) {
|
||||||
final String set = reader.getAttribute("s");
|
final String set = reader.getAttribute("s");
|
||||||
return new BoosterPack(set);
|
return new BoosterPack(set);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package forge.quest.gui.main;
|
package forge.quest.data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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;
|
import forge.deck.Deck;
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -25,11 +25,8 @@ import java.util.Random;
|
|||||||
|
|
||||||
import forge.AllZone;
|
import forge.AllZone;
|
||||||
import forge.deck.DeckIO;
|
import forge.deck.DeckIO;
|
||||||
import forge.deck.DeckManager;
|
|
||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
import forge.properties.NewConstants;
|
import forge.properties.NewConstants;
|
||||||
import forge.quest.data.QuestPreferences;
|
|
||||||
import forge.quest.data.QuestUtil;
|
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,10 +72,6 @@ public class QuestEventManager {
|
|||||||
List<String> contents;
|
List<String> contents;
|
||||||
QuestEvent tempEvent;
|
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);
|
final File[] allFiles = ForgeProps.getFile(NewConstants.Quest.DECKS).listFiles(DeckIO.DCK_FILE_FILTER);
|
||||||
|
|
||||||
for (final File f : allFiles) {
|
for (final File f : allFiles) {
|
||||||
@@ -97,7 +90,7 @@ public class QuestEventManager {
|
|||||||
|
|
||||||
// Assemble metadata (may not be necessary later) and deck object.
|
// Assemble metadata (may not be necessary later) and deck object.
|
||||||
this.assembleEventMetadata(contents, tempEvent);
|
this.assembleEventMetadata(contents, tempEvent);
|
||||||
tempEvent.setEventDeck(manager.getDeck(tempEvent.getName()));
|
tempEvent.setEventDeck(DeckIO.readDeck(contents));
|
||||||
} // End for(allFiles)
|
} // End for(allFiles)
|
||||||
|
|
||||||
this.assembleDuelDifficultyLists();
|
this.assembleDuelDifficultyLists();
|
||||||
59
src/main/java/forge/quest/data/QuestPreconManager.java
Normal file
59
src/main/java/forge/quest/data/QuestPreconManager.java
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -28,8 +28,6 @@ import forge.Player;
|
|||||||
import forge.card.BoosterUtils;
|
import forge.card.BoosterUtils;
|
||||||
import forge.card.CardRarity;
|
import forge.card.CardRarity;
|
||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.quest.gui.main.QuestChallenge;
|
|
||||||
import forge.quest.gui.main.QuestEvent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -63,7 +61,7 @@ public class QuestUtil {
|
|||||||
* @param qd
|
* @param qd
|
||||||
* a {@link forge.quest.data.QuestData} object.
|
* a {@link forge.quest.data.QuestData} object.
|
||||||
* @param qe
|
* @param qe
|
||||||
* a {@link forge.quest.gui.main.QuestEvent} object.
|
* a {@link forge.quest.data.QuestEvent} object.
|
||||||
* @return a {@link forge.CardList} object.
|
* @return a {@link forge.CardList} object.
|
||||||
*/
|
*/
|
||||||
public static CardList getComputerStartingCards(final QuestData qd, final QuestEvent qe) {
|
public static CardList getComputerStartingCards(final QuestData qd, final QuestEvent qe) {
|
||||||
@@ -114,7 +112,7 @@ public class QuestUtil {
|
|||||||
* @param qd
|
* @param qd
|
||||||
* a {@link forge.quest.data.QuestData} object.
|
* a {@link forge.quest.data.QuestData} object.
|
||||||
* @param qe
|
* @param qe
|
||||||
* a {@link forge.quest.gui.main.QuestEvent} object.
|
* a {@link forge.quest.data.QuestEvent} object.
|
||||||
* @return a {@link forge.CardList} object.
|
* @return a {@link forge.CardList} object.
|
||||||
*/
|
*/
|
||||||
public static CardList getHumanStartingCards(final QuestData qd, final QuestEvent qe) {
|
public static CardList getHumanStartingCards(final QuestData qd, final QuestEvent qe) {
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import forge.item.CardPrinted;
|
|||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.item.ItemPool;
|
import forge.item.ItemPool;
|
||||||
import forge.item.ItemPoolView;
|
import forge.item.ItemPoolView;
|
||||||
|
import forge.item.PreconDeck;
|
||||||
import forge.util.MyRandom;
|
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.
|
* Sell card.
|
||||||
*
|
*
|
||||||
@@ -293,6 +303,30 @@ public final class QuestUtilCards {
|
|||||||
/**
|
/**
|
||||||
* Generate cards in shop.
|
* Generate cards in shop.
|
||||||
*/
|
*/
|
||||||
|
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);
|
||||||
|
final Predicate<CardSet> filterExtButT2 = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
|
||||||
|
Predicate.and(filterExt, Predicate.not(CardSet.Predicates.Presets.SETS_IN_STANDARD)));
|
||||||
|
final Predicate<CardSet> filterNotExt = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
|
||||||
|
Predicate.not(filterExt));
|
||||||
|
|
||||||
|
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() {
|
public void generateCardsInShop() {
|
||||||
final BoosterGenerator pack = new BoosterGenerator(CardDb.instance().getAllCards());
|
final BoosterGenerator pack = new BoosterGenerator(CardDb.instance().getAllCards());
|
||||||
|
|
||||||
@@ -300,25 +334,15 @@ public final class QuestUtilCards {
|
|||||||
final int winPacks = this.q.getWin() / 10;
|
final int winPacks = this.q.getWin() / 10;
|
||||||
final int totalPacks = Math.min(levelPacks + winPacks, 6);
|
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);
|
|
||||||
final Predicate<CardSet> filterExtButT2 = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
|
|
||||||
Predicate.and(filterExt, Predicate.not(CardSet.Predicates.Presets.SETS_IN_STANDARD)));
|
|
||||||
final Predicate<CardSet> filterNotExt = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
|
|
||||||
Predicate.not(filterExt));
|
|
||||||
|
|
||||||
this.q.getShopList().clear();
|
this.q.getShopList().clear();
|
||||||
for (int i = 0; i < totalPacks; i++) {
|
for (int i = 0; i < totalPacks; i++) {
|
||||||
this.q.getShopList().addAllCards(pack.getBoosterPack(7, 3, 1, 0, 0, 0, 0, 0, 0));
|
this.q.getShopList().addAllCards(pack.getBoosterPack(7, 3, 1, 0, 0, 0, 0, 0, 0));
|
||||||
|
|
||||||
// add some boosters
|
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generateBoostersInShop(totalPacks);
|
||||||
|
generatePreconsInShop(totalPacks);
|
||||||
|
|
||||||
this.addBasicLands(this.q.getShopList(), 10, 5);
|
this.addBasicLands(this.q.getShopList(), 10, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,14 +52,14 @@ import forge.deck.Deck;
|
|||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
import forge.gui.deckeditor.DeckEditorQuest;
|
import forge.gui.deckeditor.DeckEditorQuest;
|
||||||
import forge.gui.deckeditor.DeckEditorShop;
|
import forge.gui.deckeditor.DeckEditorShop;
|
||||||
|
import forge.quest.data.QuestChallenge;
|
||||||
import forge.quest.data.QuestData;
|
import forge.quest.data.QuestData;
|
||||||
|
import forge.quest.data.QuestDuel;
|
||||||
|
import forge.quest.data.QuestEventManager;
|
||||||
import forge.quest.data.QuestUtil;
|
import forge.quest.data.QuestUtil;
|
||||||
import forge.quest.data.item.QuestItemZeppelin;
|
import forge.quest.data.item.QuestItemZeppelin;
|
||||||
import forge.quest.gui.main.QuestChallenge;
|
|
||||||
import forge.quest.gui.main.QuestChallengePanel;
|
import forge.quest.gui.main.QuestChallengePanel;
|
||||||
import forge.quest.gui.main.QuestDuel;
|
|
||||||
import forge.quest.gui.main.QuestDuelPanel;
|
import forge.quest.gui.main.QuestDuelPanel;
|
||||||
import forge.quest.gui.main.QuestEventManager;
|
|
||||||
import forge.quest.gui.main.QuestSelectablePanel;
|
import forge.quest.gui.main.QuestSelectablePanel;
|
||||||
import forge.view.GuiTopLevel;
|
import forge.view.GuiTopLevel;
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ public class QuestMainPanel extends QuestAbstractPanel {
|
|||||||
private static final long serialVersionUID = 6142934729724012402L;
|
private static final long serialVersionUID = 6142934729724012402L;
|
||||||
|
|
||||||
private final forge.quest.data.QuestData questData;
|
private final forge.quest.data.QuestData questData;
|
||||||
private forge.quest.gui.main.QuestEventManager qem;
|
private forge.quest.data.QuestEventManager qem;
|
||||||
|
|
||||||
/** The credits label. */
|
/** The credits label. */
|
||||||
private final JLabel creditsLabel = new JLabel();
|
private final JLabel creditsLabel = new JLabel();
|
||||||
|
|||||||
@@ -45,11 +45,11 @@ import forge.gui.GuiUtils;
|
|||||||
import forge.gui.ListChooser;
|
import forge.gui.ListChooser;
|
||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.model.FMatchState;
|
import forge.model.FMatchState;
|
||||||
|
import forge.quest.data.QuestChallenge;
|
||||||
import forge.quest.data.QuestData;
|
import forge.quest.data.QuestData;
|
||||||
|
import forge.quest.data.QuestEvent;
|
||||||
import forge.quest.data.QuestPreferences;
|
import forge.quest.data.QuestPreferences;
|
||||||
import forge.quest.data.QuestUtil;
|
import forge.quest.data.QuestUtil;
|
||||||
import forge.quest.gui.main.QuestChallenge;
|
|
||||||
import forge.quest.gui.main.QuestEvent;
|
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
import forge.view.GuiTopLevel;
|
import forge.view.GuiTopLevel;
|
||||||
import forge.view.match.ViewWinLose;
|
import forge.view.match.ViewWinLose;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ package forge.quest.gui.main;
|
|||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
|
||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
|
import forge.quest.data.QuestChallenge;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
package forge.quest.gui.main;
|
package forge.quest.gui.main;
|
||||||
|
|
||||||
|
import forge.quest.data.QuestDuel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* QuestDuelPanel.
|
* QuestDuelPanel.
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import javax.swing.border.LineBorder;
|
|||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
import forge.properties.NewConstants;
|
import forge.properties.NewConstants;
|
||||||
|
import forge.quest.data.QuestEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -31,14 +31,14 @@ import forge.control.home.ControlQuest;
|
|||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
import forge.properties.NewConstants;
|
import forge.properties.NewConstants;
|
||||||
|
import forge.quest.data.QuestChallenge;
|
||||||
import forge.quest.data.QuestData;
|
import forge.quest.data.QuestData;
|
||||||
import forge.quest.data.QuestDataIO;
|
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.item.QuestItemZeppelin;
|
||||||
import forge.quest.data.pet.QuestPetAbstract;
|
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.FList;
|
||||||
import forge.view.toolbox.FProgressBar;
|
import forge.view.toolbox.FProgressBar;
|
||||||
import forge.view.toolbox.FScrollPane;
|
import forge.view.toolbox.FScrollPane;
|
||||||
|
|||||||
Reference in New Issue
Block a user