Fix so quest deck editor can work properly after first opening other editor or switching quests

This commit is contained in:
drdev
2014-08-05 22:43:08 +00:00
parent 73a9c7e889
commit 0d4bdcec2b
2 changed files with 13 additions and 4 deletions

View File

@@ -101,7 +101,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
return new Deck(); return new Deck();
} }
})), })),
Quest(new DeckController<Deck>(FModel.getQuest().getMyDecks(), new Supplier<Deck>() { Quest(new DeckController<Deck>(null, new Supplier<Deck>() { //delay setting root folder until quest loaded
@Override @Override
public Deck get() { public Deck get() {
return new Deck(); return new Deck();
@@ -1199,20 +1199,24 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
private T model; private T model;
private boolean saved; private boolean saved;
private boolean modelInStorage; private boolean modelInStorage;
private final IStorage<T> rootFolder; private IStorage<T> rootFolder;
private IStorage<T> currentFolder; private IStorage<T> currentFolder;
private String modelPath; private String modelPath;
private FDeckEditor editor; private FDeckEditor editor;
private final Supplier<T> newModelCreator; private final Supplier<T> newModelCreator;
protected DeckController(final IStorage<T> folder0, final Supplier<T> newModelCreator0) { protected DeckController(final IStorage<T> folder0, final Supplier<T> newModelCreator0) {
setRootFolder(folder0);
newModelCreator = newModelCreator0;
}
public void setRootFolder(IStorage<T> folder0) {
rootFolder = folder0; rootFolder = folder0;
currentFolder = rootFolder; currentFolder = folder0;
model = null; model = null;
saved = true; saved = true;
modelInStorage = false; modelInStorage = false;
modelPath = ""; modelPath = "";
newModelCreator = newModelCreator0;
} }
public Deck getDeck() { public Deck getDeck() {

View File

@@ -5,6 +5,9 @@ import java.io.File;
import forge.FThreads; import forge.FThreads;
import forge.Forge; import forge.Forge;
import forge.assets.FSkinImage; import forge.assets.FSkinImage;
import forge.deck.Deck;
import forge.deck.FDeckEditor.DeckController;
import forge.deck.FDeckEditor.EditorType;
import forge.interfaces.IButton; import forge.interfaces.IButton;
import forge.interfaces.ICheckBox; import forge.interfaces.ICheckBox;
import forge.interfaces.IComboBox; import forge.interfaces.IComboBox;
@@ -152,8 +155,10 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
if (data.exists()) { if (data.exists()) {
LoadingOverlay.show("Loading current quest...", new Runnable() { LoadingOverlay.show("Loading current quest...", new Runnable() {
@Override @Override
@SuppressWarnings("unchecked")
public void run() { public void run() {
FModel.getQuest().load(QuestDataIO.loadData(data)); FModel.getQuest().load(QuestDataIO.loadData(data));
((DeckController<Deck>)EditorType.Quest.getController()).setRootFolder(FModel.getQuest().getMyDecks());
if (reason == LaunchReason.StartQuestMode) { if (reason == LaunchReason.StartQuestMode) {
if (QuestUtil.getCurrentDeck() == null) { if (QuestUtil.getCurrentDeck() == null) {
Forge.openScreen(decksScreen); //if quest doesn't have a deck specified, open decks screen by default Forge.openScreen(decksScreen); //if quest doesn't have a deck specified, open decks screen by default