DeckManager is known as DeckController

Quest decks are accessed from a class that implements IFolderMap (made a transient field for saves compatibility)
This commit is contained in:
Maxmtg
2012-02-19 12:16:43 +00:00
parent 06c3c6b244
commit 170df71893
20 changed files with 127 additions and 261 deletions

6
.gitattributes vendored
View File

@@ -11263,15 +11263,14 @@ src/main/java/forge/gui/ListChooser.java svneol=native#text/plain
src/main/java/forge/gui/MultiLineLabel.java svneol=native#text/plain
src/main/java/forge/gui/MultiLineLabelUI.java svneol=native#text/plain
src/main/java/forge/gui/MultiPhaseProgressMonitorWithETA.java svneol=native#text/plain
src/main/java/forge/gui/deckeditor/DeckController.java -text
src/main/java/forge/gui/deckeditor/DeckEditorBase.java -text
src/main/java/forge/gui/deckeditor/DeckEditorConstructed.java svneol=native#text/plain
src/main/java/forge/gui/deckeditor/DeckEditorLimited.java -text
src/main/java/forge/gui/deckeditor/DeckEditorQuest.java svneol=native#text/plain
src/main/java/forge/gui/deckeditor/DeckImport.java -text
src/main/java/forge/gui/deckeditor/DeckManagerOnDisk.java -text
src/main/java/forge/gui/deckeditor/DeckManagerQuest.java -text
src/main/java/forge/gui/deckeditor/DraftingProcess.java svneol=native#text/plain
src/main/java/forge/gui/deckeditor/IDeckManager.java -text
src/main/java/forge/gui/deckeditor/IDeckController.java -text
src/main/java/forge/gui/deckeditor/MenuBase.java -text
src/main/java/forge/gui/deckeditor/MenuCommon.java svneol=native#text/plain
src/main/java/forge/gui/deckeditor/MenuLimited.java -text
@@ -11326,6 +11325,7 @@ 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/QuestDeckMap.java -text
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

View File

@@ -9,7 +9,6 @@ import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -399,21 +398,20 @@ public class ControlQuest {
/** Resets decks, then retrieves and sets current deck. */
public void refreshDecks() {
// Retrieve and set all decks
List<Deck> temp = new ArrayList<Deck>();
if (qData != null) {
temp.addAll(qData.getMyDecks().values());
}
view.getLstDecks().setDecks(temp);
view.getLstDecks().setDecks(qData != null ? qData.getMyDecks() : new ArrayList<Deck>() );
// Look through list for preferred deck from prefs
currentDeck = null;
final String cd = qPrefs.getPreference(QPref.CURRENT_DECK);
for (Deck d : temp) {
if (d.getName().equals(cd)) {
currentDeck = d;
view.getLstDecks().setSelectedDeck(d);
break;
if( qData != null)
{
final String cd = qPrefs.getPreference(QPref.CURRENT_DECK);
for (Deck d : qData.getMyDecks()) {
if (d.getName().equals(cd)) {
currentDeck = d;
view.getLstDecks().setSelectedDeck(d);
break;
}
}
}

View File

@@ -109,21 +109,16 @@ public class CustomLimited extends DeckBase {
Map<String, String> data = SectionUtil.parseKvPairs(dfData, ":");
final CustomLimited cd = new CustomLimited(data.get("Name"));
cd.setIgnoreRarity("True".equalsIgnoreCase(data.get("IgnoreRarity")));
cd.setSingleton("True".equalsIgnoreCase(data.get("Singleton")));
for (final String dd : dfData) {
final String[] v = dd.split(":", 2);
final String key = v[0];
final String value = v.length > 1 ? v[1].trim() : "";
if (key.equalsIgnoreCase("DeckFile")) {
cd.setDeckFile(value);
}
if (key.equalsIgnoreCase("IgnoreRarity")) {
cd.setIgnoreRarity(value.equals("True"));
}
if (key.equalsIgnoreCase("Singleton")) {
cd.setSingleton(value.equals("True"));
}
if (key.equalsIgnoreCase("LandSetCode")) {
cd.setLandSetCode(value);
}

View File

@@ -13,7 +13,7 @@ import forge.util.IFolderMap;
* TODO: Write javadoc for this type.
*
*/
public class DeckManagerOnDisk<T extends DeckBase> implements IDeckManager<T> {
public class DeckController<T extends DeckBase> implements IDeckController<T> {
private T model;
private boolean saved;
@@ -22,7 +22,7 @@ public class DeckManagerOnDisk<T extends DeckBase> implements IDeckManager<T> {
private final DeckEditorBase<?, T> view;
private final Lambda0<T> newModelCreator;
public DeckManagerOnDisk(IFolderMap<T> folder0, DeckEditorBase<?, T> view0, Lambda0<T> newModelCreator0)
public DeckController(IFolderMap<T> folder0, DeckEditorBase<?, T> view0, Lambda0<T> newModelCreator0)
{
folder = folder0;
view = view0;

View File

@@ -93,7 +93,7 @@ public abstract class DeckEditorBase<T extends InventoryItem, TModel> extends JF
}
public abstract IDeckManager<TModel> getController();
public abstract IDeckController<TModel> getController();
// THIS IS HERE FOR OVERLOADING!!!1
// or may be return abstract getFilter from derived class + this filter ...

View File

@@ -75,7 +75,7 @@ public final class DeckEditorConstructed extends DeckEditorBase<CardPrinted, Dec
private final JLabel jLabelAnalysisGap = new JLabel("");
private FilterNameTypeSetPanel filterNameTypeSet;
private final IDeckManager<Deck> controller;
private final IDeckController<Deck> controller;
/**
* Show.
*
@@ -154,7 +154,7 @@ public final class DeckEditorConstructed extends DeckEditorBase<CardPrinted, Dec
}
Lambda0<Deck> newCreator = new Lambda0<Deck>(){ @Override public Deck apply() { return new Deck(); } };
controller = new DeckManagerOnDisk<Deck>(AllZone.getDecks().getConstructed(), this, newCreator);
controller = new DeckController<Deck>(AllZone.getDecks().getConstructed(), this, newCreator);
}
private void jbInit() {
@@ -388,7 +388,7 @@ public final class DeckEditorConstructed extends DeckEditorBase<CardPrinted, Dec
* @see forge.gui.deckeditor.DeckEditorBase#getController()
*/
@Override
public IDeckManager<Deck> getController() {
public IDeckController<Deck> getController() {
return controller;
}

View File

@@ -72,7 +72,7 @@ public final class DeckEditorLimited extends DeckEditorBase<CardPrinted, DeckSet
private final JLabel jLabelAnalysisGap = new JLabel("");
private FilterNameTypeSetPanel filterNameTypeSet;
private final DeckManagerOnDisk<DeckSet> controller;
private final DeckController<DeckSet> controller;
/**
* Show.
@@ -153,7 +153,7 @@ public final class DeckEditorLimited extends DeckEditorBase<CardPrinted, DeckSet
}
Lambda0<DeckSet> newCreator = new Lambda0<DeckSet>(){ @Override public DeckSet apply() { return new DeckSet(""); } };
controller = new DeckManagerOnDisk<DeckSet>(deckMap, this, newCreator);
controller = new DeckController<DeckSet>(deckMap, this, newCreator);
}
private void jbInit() {
@@ -379,7 +379,7 @@ public final class DeckEditorLimited extends DeckEditorBase<CardPrinted, DeckSet
* @see forge.gui.deckeditor.DeckEditorBase#getController()
*/
@Override
public IDeckManager<DeckSet> getController() {
public IDeckController<DeckSet> getController() {
return controller;
}

View File

@@ -30,6 +30,7 @@ import java.util.List;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import net.slightlymagic.braids.util.lambda.Lambda0;
import net.slightlymagic.maxmtg.Predicate;
import forge.Command;
import forge.Constant;
@@ -73,7 +74,7 @@ public final class DeckEditorQuest extends DeckEditorBase<CardPrinted, Deck> {
private FilterNameTypeSetPanel filterNameTypeSet;
private final QuestData questData;
private final DeckManagerQuest controller;
private final DeckController<Deck> controller ;
/**
* Show.
@@ -185,7 +186,8 @@ public final class DeckEditorQuest extends DeckEditorBase<CardPrinted, Deck> {
ErrorViewer.showError(ex);
}
controller = new DeckManagerQuest(questData2, this);
Lambda0<Deck> newCreator = new Lambda0<Deck>(){ @Override public Deck apply() { return new Deck(); } };
controller = new DeckController<Deck>(questData2.getMyDecks(), this, newCreator);
}
private void jbInit() throws Exception {
@@ -350,7 +352,7 @@ public final class DeckEditorQuest extends DeckEditorBase<CardPrinted, Deck> {
* @see forge.gui.deckeditor.DeckEditorBase#getController()
*/
@Override
public IDeckManager<Deck> getController() {
public IDeckController<Deck> getController() {
return controller;
}

View File

@@ -1,172 +0,0 @@
package forge.gui.deckeditor;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import forge.deck.Deck;
import forge.quest.data.QuestData;
/**
* TODO: Write javadoc for this type.
*
*/
public class DeckManagerQuest implements IDeckManager<Deck>{
private Deck model;
private boolean saved;
private boolean modelInStore;
private final Map<String, Deck> decks;
private final DeckEditorBase<?, Deck> view;
public DeckManagerQuest(QuestData questData0, DeckEditorBase<?, Deck> view0)
{
decks = questData0.getMyDecks();
view = view0;
}
@Override
public Deck getModel() { return model; }
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#newModel()
*/
@Override
public void newModel() {
setModel(new Deck());
}
/**
* @param document0 the document to set
*/
public void setModel(Deck document) {
setModel( document, false );
}
public void setModel(Deck document, boolean isStored) {
modelInStore = isStored;
this.model = document;
view.updateView();
saved = true; // unless set to false in notify
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#getModel()
*/
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#notifyModelChanged()
*/
@Override
public void notifyModelChanged() {
saved = false;
// view.setTitle()
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#getOwnerWindow()
*/
@Override
public Component getOwnerWindow() {
return view;
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#getView()
*/
@Override
public DeckEditorBase<?, Deck> getView() {
return view;
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#getSavedNames()
*/
@Override
public List<String> getSavedNames() {
return new ArrayList<String>(decks.keySet());
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#load(java.lang.String)
*/
@Override
public void load(String name) {
Deck deck = decks.get(name);
if ( null != deck )
setModel(deck, true);
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#save()
*/
@Override
public void save() {
decks.put(model.getName(), model);
// save to disk is done from outside
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#isSaved()
*/
@Override
public boolean isSaved() {
return saved;
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#delete()
*/
@Override
public void delete() {
if ( StringUtils.isNotBlank(model.getName())) {
decks.remove(model.getName());
}
modelInStore = false;
newModel();
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#isGoodName(java.lang.String)
*/
@Override
public boolean isGoodName(String deckName) {
return false;
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#importDeck(java.lang.Object)
*/
@Override
public void importDeck(Deck newDeck) {
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#isModelInStore()
*/
@Override
public boolean isModelInStore() {
return modelInStore;
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#saveAs(java.lang.String)
*/
@Override
public void saveAs(String name0) {
}
/* (non-Javadoc)
* @see forge.gui.deckeditor.IDeckManager#fileExists(java.lang.String)
*/
@Override
public boolean fileExists(String deckName) {
return false;
}
}

View File

@@ -355,7 +355,7 @@ public class DraftingProcess extends DeckEditorBase<CardPrinted, DeckSet> {
* @see forge.gui.deckeditor.DeckEditorBase#getController()
*/
@Override
public IDeckManager<DeckSet> getController() {
public IDeckController<DeckSet> getController() {
return null;
}

View File

@@ -7,7 +7,7 @@ import java.util.List;
* TODO: Write javadoc for this type.
*
*/
public interface IDeckManager<T> {
public interface IDeckController<T> {
void newModel();
void setModel(T model);

View File

@@ -46,7 +46,7 @@ public class MenuBase<T extends DeckBase> extends JMenuBar {
private static final long serialVersionUID = -4037993759604768755L;
private final Command exitCommand;
private final IDeckManager<T> controller;
private final IDeckController<T> controller;
/**
*
@@ -59,14 +59,14 @@ public class MenuBase<T extends DeckBase> extends JMenuBar {
* @param exit
* a Command
*/
public MenuBase(final IDeckManager<T> ctrl, final Command exit) {
public MenuBase(final IDeckController<T> ctrl, final Command exit) {
this.controller = ctrl;
this.exitCommand = exit;
this.setupMenu();
}
protected final IDeckManager<T> getController() {
protected final IDeckController<T> getController() {
return controller;
}

View File

@@ -59,7 +59,7 @@ public final class MenuCommon extends MenuBase<Deck> {
* @param exit
* a Command
*/
public MenuCommon(final IDeckManager<Deck> ctrl, final Command exit) {
public MenuCommon(final IDeckController<Deck> ctrl, final Command exit) {
super(ctrl, exit);
// this is added just to make save() and saveAs() work ok

View File

@@ -44,7 +44,7 @@ public final class MenuLimited extends MenuBase<DeckSet> {
* @param exit
* a Command
*/
public MenuLimited(final IDeckManager<DeckSet> ctrl, final Command exit) {
public MenuLimited(final IDeckController<DeckSet> ctrl, final Command exit) {
super( ctrl, exit );
}

View File

@@ -66,7 +66,7 @@ public class MenuQuest extends MenuBase<Deck> {
* @param exit
* a {@link forge.Command} object.
*/
public MenuQuest(final IDeckManager<Deck> d, final Command exit) {
public MenuQuest(final IDeckController<Deck> d, final Command exit) {
super(d, exit);

View File

@@ -144,7 +144,7 @@ public final class QuestCardShop extends DeckEditorBase<InventoryItem, Object> {
// fills number of decks using each card
private Map<CardPrinted, Integer> countDecksForEachCard() {
final Map<CardPrinted, Integer> result = new HashMap<CardPrinted, Integer>();
for (final Deck deck : this.questData.getMyDecks().values()) {
for (final Deck deck : this.questData.getMyDecks()) {
for (final Entry<CardPrinted, Integer> e : deck.getMain()) {
final CardPrinted card = e.getKey();
final Integer amount = result.get(card);
@@ -420,7 +420,7 @@ public final class QuestCardShop extends DeckEditorBase<InventoryItem, Object> {
* @see forge.gui.deckeditor.DeckEditorBase#getController()
*/
@Override
public IDeckManager<Object> getController() {
public IDeckController<Object> getController() {
return null;
}

View File

@@ -26,7 +26,6 @@ import net.slightlymagic.maxmtg.Predicate;
import forge.SetUtils;
import forge.Singletons;
import forge.deck.Deck;
import forge.error.ErrorViewer;
import forge.item.CardPrinted;
import forge.item.InventoryItem;
import forge.item.ItemPool;
@@ -36,6 +35,7 @@ import forge.properties.NewConstants;
import forge.quest.data.QuestPreferences.QPref;
import forge.quest.data.item.QuestInventory;
import forge.quest.data.pet.QuestPetManager;
import forge.util.IFolderMap;
import forge.util.MyRandom;
//when you create QuestDataOld and AFTER you copy the AI decks over
@@ -115,7 +115,9 @@ public final class QuestData {
// Decks collected by player
/** The my decks. */
private final Map<String, Deck> myDecks = new HashMap<String, Deck>();
private final HashMap<String, Deck> myDecks = new HashMap<String, Deck>();
private transient IFolderMap<Deck> decks;
// Cards associated with quest
/** The card pool. */
@@ -204,6 +206,7 @@ public final class QuestData {
private void initTransients() {
// These are helper classes that hold no data.
this.decks = new QuestDeckMap(myDecks);
this.myCards = new QuestUtilCards(this);
// to avoid NPE some pools will be created here if they are null
@@ -549,41 +552,6 @@ public final class QuestData {
// decks management
/** @return List<Deck> */
public List<Deck> getDecks() {
return new ArrayList<Deck>(this.getMyDecks().values());
}
/**
* Removes the deck.
*
* @param deckName
* the deck name
*/
public void removeDeck(final String deckName) {
this.getMyDecks().remove(deckName);
}
/**
* <p>
* getDeck.
* </p>
*
* @param deckName
* a {@link java.lang.String} object.
* @return a {@link forge.deck.Deck} object.
*/
public Deck getDeck(final String deckName) {
if (!this.getMyDecks().containsKey(deckName)) {
ErrorViewer.showError(new Exception(),
"QuestData : getDeckFromMap(String deckName) error, deck name not found - %s", deckName);
return null;
}
final Deck d = this.getMyDecks().get(deckName);
d.getSideboard().clear();
return d;
}
// randomizer - related
/**
* Gets the random seed.
@@ -674,8 +642,8 @@ public final class QuestData {
*
* @return the myDecks
*/
public Map<String, Deck> getMyDecks() {
return this.myDecks;
public IFolderMap<Deck> getMyDecks() {
return this.decks;
}

View File

@@ -0,0 +1,75 @@
package forge.quest.data;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import forge.deck.Deck;
import forge.util.IFolderMap;
/**
* TODO: Write javadoc for this type.
*
*/
public class QuestDeckMap implements IFolderMap<Deck> {
public QuestDeckMap() {
map = new HashMap<String,Deck>();
}
public QuestDeckMap(Map<String,Deck> inMap) {
map = inMap;
}
private final Map<String, Deck> map;
/* (non-Javadoc)
* @see forge.util.IFolderMapView#get(java.lang.String)
*/
@Override
public Deck get(String name) {
return map.get(name);
}
/* (non-Javadoc)
* @see forge.util.IFolderMapView#getNames()
*/
@Override
public Collection<String> getNames() {
return map.keySet();
}
/* (non-Javadoc)
* @see java.lang.Iterable#iterator()
*/
@Override
public Iterator<Deck> iterator() {
return map.values().iterator();
}
/* (non-Javadoc)
* @see forge.util.IFolderMap#add(forge.util.IHasName)
*/
@Override
public void add(Deck deck) {
map.put(deck.getName(), deck);
}
/* (non-Javadoc)
* @see forge.util.IFolderMap#delete(java.lang.String)
*/
@Override
public void delete(String deckName) {
map.remove(deckName);
}
/* (non-Javadoc)
* @see forge.util.IFolderMap#isUnique(java.lang.String)
*/
@Override
public boolean isUnique(String name) {
return !map.containsKey(name);
}
}

View File

@@ -223,7 +223,7 @@ public final class QuestUtilCards {
if (this.q.getCredits() >= value) {
this.q.setCredits(this.q.getCredits() - value);
this.q.getShopList().remove(precon);
this.q.getMyDecks().put(precon.getDeck().getName(), precon.getDeck());
this.q.getMyDecks().add(precon.getDeck());
this.addAllCards(precon.getDeck().getMain().toFlatList());
}
}
@@ -262,7 +262,7 @@ public final class QuestUtilCards {
// remove card being sold from all decks
final int leftInPool = this.q.getCardPool().count(card);
// remove sold cards from all decks:
for (final Deck deck : this.q.getMyDecks().values()) {
for (final Deck deck : this.q.getMyDecks()) {
deck.getMain().remove(card, deck.getMain().count(card) - leftInPool);
}
}

View File

@@ -399,7 +399,7 @@ public class DeckLister extends JPanel {
AllZone.getDecks().getSealed().delete(d0.getName());
}
else if (gametype.equals(GameType.Quest)) {
AllZone.getQuestData().removeDeck(d0.getName());
AllZone.getQuestData().getMyDecks().delete(d0.getName());
AllZone.getQuestData().saveData();
Singletons.getView().getViewHome().getBtnQuest().grabFocus();
}