mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Support creating new deck
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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,10 +277,22 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
}
|
||||
}
|
||||
|
||||
switch (editorType) {
|
||||
case Sealed:
|
||||
//if opening brand new sealed deck, show sideboard (card pool) by default
|
||||
if (editorType == EditorType.Sealed && deck.getMain().isEmpty()) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user