Support creating new deck

This commit is contained in:
drdev
2014-06-19 02:35:11 +00:00
parent 72653430a1
commit 5050b25daa
2 changed files with 38 additions and 7 deletions

View File

@@ -35,6 +35,7 @@ public class FDeckChooser extends FScreen {
private FComboBox<DeckType> cmbDeckTypes;
private DeckType selectedDeckType;
private boolean needRefreshOnActivate;
private final DeckManager lstDecks = new DeckManager(GameType.Constructed);
private final FButton btnNewDeck = new FButton("New Deck");
@@ -60,6 +61,7 @@ public class FDeckChooser extends FScreen {
btnNewDeck.setCommand(new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
needRefreshOnActivate = true;
Forge.openScreen(new FDeckEditor(EditorType.Constructed, ""));
}
});
@@ -87,10 +89,20 @@ public class FDeckChooser extends FScreen {
});
}
@Override
public void onActivate() {
if (needRefreshOnActivate) {
needRefreshOnActivate = false;
updateCustom();
lstDecks.setSelectedString(DeckPreferences.getCurrentDeck());
}
}
private void editSelectedDeck() {
final DeckProxy deck = lstDecks.getSelectedItem();
if (deck == null) { return; }
needRefreshOnActivate = true;
DeckPreferences.setCurrentDeck(deck.getName());
Forge.openScreen(new FDeckEditor(EditorType.Constructed, deck));
}

View File

@@ -175,11 +175,14 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
editorType.getController().editor = this;
if (StringUtils.isEmpty(editDeckName)) {
setDeck(new Deck());
if (editorType == EditorType.Draft) {
//hide deck header on while drafting
setDeck(new Deck());
deckHeader.setVisible(false);
}
else {
editorType.getController().newModel();
}
}
else {
if (editorType == EditorType.Draft) {
@@ -274,9 +277,21 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}
}
//if opening brand new sealed deck, show sideboard (card pool) by default
if (editorType == EditorType.Sealed && deck.getMain().isEmpty()) {
setSelectedPage(sideboardPage);
switch (editorType) {
case Sealed:
//if opening brand new sealed deck, show sideboard (card pool) by default
if (deck.getMain().isEmpty()) {
setSelectedPage(sideboardPage);
}
break;
case Draft:
break;
default:
//if editing existing non-limited deck, show main deck by default
if (!deck.getMain().isEmpty()) {
setSelectedPage(mainDeckPage);
}
break;
}
}
@@ -327,6 +342,8 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
FOptionPane.showInputDialog("Enter name for new deck:", "New Deck", new Callback<String>() {
@Override
public void run(String result) {
if (StringUtils.isEmpty(result)) { return; }
editorType.getController().saveAs(result);
if (callback != null) {
callback.run(true);
@@ -468,7 +485,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}
public void refresh() {
ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class);
cardManager.setPool(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class));
}
@Override
@@ -689,6 +706,9 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
if (editor != null) {
String name = this.getModelName();
if (name.isEmpty()) {
name = "[New Deck]";
}
if (!saved) {
name = "*" + name;
}
@@ -797,8 +817,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}
public void newModel() {
model = newModelCreator.get();
setSaved(true);
setModel(newModelCreator.get());
}
public String getModelName() {