mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Support viewing and editing variant deck types on Deck Manager
This commit is contained in:
@@ -97,21 +97,6 @@ public class FDeckChooser extends FScreen {
|
|||||||
btnNewDeck.setCommand(new FEventHandler() {
|
btnNewDeck.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
EditorType editorType;
|
|
||||||
switch (lstDecks.getGameType()) {
|
|
||||||
case Commander:
|
|
||||||
editorType = EditorType.Commander;
|
|
||||||
break;
|
|
||||||
case Archenemy:
|
|
||||||
editorType = EditorType.Archenemy;
|
|
||||||
break;
|
|
||||||
case Planechase:
|
|
||||||
editorType = EditorType.Planechase;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
editorType = EditorType.Constructed;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
FDeckEditor editor;
|
FDeckEditor editor;
|
||||||
switch (selectedDeckType) {
|
switch (selectedDeckType) {
|
||||||
case COLOR_DECK:
|
case COLOR_DECK:
|
||||||
@@ -123,7 +108,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
if (generatedDeck == null) { return; }
|
if (generatedDeck == null) { return; }
|
||||||
|
|
||||||
generatedDeck = (Deck)generatedDeck.copyTo(""); //prevent deck having a name by default
|
generatedDeck = (Deck)generatedDeck.copyTo(""); //prevent deck having a name by default
|
||||||
editor = new FDeckEditor(editorType, generatedDeck, true);
|
editor = new FDeckEditor(getEditorType(), generatedDeck, true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FOptionPane.showErrorDialog("You must select something before you can generate a new deck.");
|
FOptionPane.showErrorDialog("You must select something before you can generate a new deck.");
|
||||||
@@ -131,16 +116,29 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
editor = new FDeckEditor(editorType, "", false);
|
editor = new FDeckEditor(getEditorType(), "", false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
editor.setSaveHandler(new FEventHandler() {
|
editor.setSaveHandler(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
//ensure user returns to custom user deck and that list is refreshed if new deck is saved
|
//ensure user returns to proper deck type and that list is refreshed if new deck is saved
|
||||||
if (!needRefreshOnActivate) {
|
if (!needRefreshOnActivate) {
|
||||||
needRefreshOnActivate = true;
|
needRefreshOnActivate = true;
|
||||||
setSelectedDeckType(DeckType.CUSTOM_DECK);
|
if (lstDecks.getGameType() == GameType.DeckManager) {
|
||||||
|
switch (selectedDeckType) {
|
||||||
|
case COMMANDER_DECK:
|
||||||
|
case SCHEME_DECKS:
|
||||||
|
case PLANAR_DECKS:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setSelectedDeckType(DeckType.CONSTRUCTED_DECK);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setSelectedDeckType(DeckType.CUSTOM_DECK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -183,9 +181,11 @@ public class FDeckChooser extends FScreen {
|
|||||||
break; //delay initialize for constructed until saved decks can be reloaded
|
break; //delay initialize for constructed until saved decks can be reloaded
|
||||||
case Commander:
|
case Commander:
|
||||||
case Gauntlet:
|
case Gauntlet:
|
||||||
case DeckManager:
|
|
||||||
initialize(null, DeckType.CUSTOM_DECK);
|
initialize(null, DeckType.CUSTOM_DECK);
|
||||||
break;
|
break;
|
||||||
|
case DeckManager:
|
||||||
|
initialize(null, DeckType.CONSTRUCTED_DECK);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
initialize(null, DeckType.RANDOM_DECK);
|
initialize(null, DeckType.RANDOM_DECK);
|
||||||
break;
|
break;
|
||||||
@@ -204,7 +204,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
public void onActivate() {
|
public void onActivate() {
|
||||||
if (needRefreshOnActivate) {
|
if (needRefreshOnActivate) {
|
||||||
needRefreshOnActivate = false;
|
needRefreshOnActivate = false;
|
||||||
refreshDecksList(DeckType.CUSTOM_DECK, true, null);
|
refreshDecksList(selectedDeckType, true, null);
|
||||||
switch (lstDecks.getGameType()) {
|
switch (lstDecks.getGameType()) {
|
||||||
case Commander:
|
case Commander:
|
||||||
lstDecks.setSelectedString(DeckPreferences.getCommanderDeck());
|
lstDecks.setSelectedString(DeckPreferences.getCommanderDeck());
|
||||||
@@ -215,6 +215,22 @@ public class FDeckChooser extends FScreen {
|
|||||||
case Planechase:
|
case Planechase:
|
||||||
lstDecks.setSelectedString(DeckPreferences.getPlanarDeck());
|
lstDecks.setSelectedString(DeckPreferences.getPlanarDeck());
|
||||||
break;
|
break;
|
||||||
|
case DeckManager:
|
||||||
|
switch (selectedDeckType) {
|
||||||
|
case COMMANDER_DECK:
|
||||||
|
lstDecks.setSelectedString(DeckPreferences.getCommanderDeck());
|
||||||
|
break;
|
||||||
|
case SCHEME_DECKS:
|
||||||
|
lstDecks.setSelectedString(DeckPreferences.getSchemeDeck());
|
||||||
|
break;
|
||||||
|
case PLANAR_DECKS:
|
||||||
|
lstDecks.setSelectedString(DeckPreferences.getPlanarDeck());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
lstDecks.setSelectedString(DeckPreferences.getCurrentDeck());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
lstDecks.setSelectedString(DeckPreferences.getCurrentDeck());
|
lstDecks.setSelectedString(DeckPreferences.getCurrentDeck());
|
||||||
break;
|
break;
|
||||||
@@ -226,52 +242,80 @@ public class FDeckChooser extends FScreen {
|
|||||||
final DeckProxy deck = lstDecks.getSelectedItem();
|
final DeckProxy deck = lstDecks.getSelectedItem();
|
||||||
if (deck == null) { return; }
|
if (deck == null) { return; }
|
||||||
|
|
||||||
if (selectedDeckType == DeckType.CUSTOM_DECK) {
|
switch (selectedDeckType) {
|
||||||
|
case CUSTOM_DECK:
|
||||||
|
case CONSTRUCTED_DECK:
|
||||||
|
case COMMANDER_DECK:
|
||||||
|
case SCHEME_DECKS:
|
||||||
|
case PLANAR_DECKS:
|
||||||
editDeck(deck);
|
editDeck(deck);
|
||||||
return;
|
break;
|
||||||
}
|
default:
|
||||||
|
final DeckType fallbackType = lstDecks.getGameType() == GameType.DeckManager ? DeckType.CONSTRUCTED_DECK : DeckType.CUSTOM_DECK;
|
||||||
|
|
||||||
//see if deck with selected name exists already
|
//see if deck with selected name exists already
|
||||||
final IStorage<Deck> decks = FModel.getDecks().getConstructed();
|
final IStorage<Deck> decks = FModel.getDecks().getConstructed();
|
||||||
Deck existingDeck = decks.get(deck.getName());
|
Deck existingDeck = decks.get(deck.getName());
|
||||||
if (existingDeck != null) {
|
if (existingDeck != null) {
|
||||||
setSelectedDeckType(DeckType.CUSTOM_DECK);
|
setSelectedDeckType(fallbackType);
|
||||||
editDeck(new DeckProxy(existingDeck, "Constructed", lstDecks.getGameType(), decks));
|
editDeck(new DeckProxy(existingDeck, "Constructed", lstDecks.getGameType(), decks));
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
//prompt to duplicate deck if deck doesn't exist already
|
|
||||||
FOptionPane.showConfirmDialog(selectedDeckType + " cannot be edited directly. Would you like to duplicate " + deck.getName() + " for editing as a custom user deck?",
|
|
||||||
"Duplicate Deck?", "Duplicate", "Cancel", new Callback<Boolean>() {
|
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
|
||||||
Deck copiedDeck = (Deck)deck.getDeck().copyTo(deck.getName());
|
|
||||||
decks.add(copiedDeck);
|
|
||||||
setSelectedDeckType(DeckType.CUSTOM_DECK);
|
|
||||||
editDeck(new DeckProxy(copiedDeck, "Constructed", lstDecks.getGameType(), decks));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
//prompt to duplicate deck if deck doesn't exist already
|
||||||
|
FOptionPane.showConfirmDialog(selectedDeckType + " cannot be edited directly. Would you like to duplicate " + deck.getName() + " for editing as a custom user deck?",
|
||||||
|
"Duplicate Deck?", "Duplicate", "Cancel", new Callback<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void run(Boolean result) {
|
||||||
|
if (result) {
|
||||||
|
Deck copiedDeck = (Deck)deck.getDeck().copyTo(deck.getName());
|
||||||
|
decks.add(copiedDeck);
|
||||||
|
setSelectedDeckType(fallbackType);
|
||||||
|
editDeck(new DeckProxy(copiedDeck, "Constructed", lstDecks.getGameType(), decks));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private EditorType getEditorType() {
|
||||||
|
switch (lstDecks.getGameType()) {
|
||||||
|
case DeckManager:
|
||||||
|
switch (selectedDeckType) {
|
||||||
|
case COMMANDER_DECK:
|
||||||
|
return EditorType.Commander;
|
||||||
|
case SCHEME_DECKS:
|
||||||
|
return EditorType.Archenemy;
|
||||||
|
case PLANAR_DECKS:
|
||||||
|
return EditorType.Planechase;
|
||||||
|
default:
|
||||||
|
return EditorType.Constructed;
|
||||||
|
}
|
||||||
|
case Commander:
|
||||||
|
return EditorType.Commander;
|
||||||
|
case Archenemy:
|
||||||
|
return EditorType.Archenemy;
|
||||||
|
case Planechase:
|
||||||
|
return EditorType.Planechase;
|
||||||
|
default:
|
||||||
|
return EditorType.Constructed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void editDeck(DeckProxy deck) {
|
private void editDeck(DeckProxy deck) {
|
||||||
EditorType editorType;
|
EditorType editorType = getEditorType();
|
||||||
switch (lstDecks.getGameType()) {
|
switch (editorType) {
|
||||||
case Commander:
|
case Commander:
|
||||||
editorType = EditorType.Commander;
|
|
||||||
DeckPreferences.setCommanderDeck(deck.getName());
|
DeckPreferences.setCommanderDeck(deck.getName());
|
||||||
break;
|
break;
|
||||||
case Archenemy:
|
case Archenemy:
|
||||||
editorType = EditorType.Archenemy;
|
|
||||||
DeckPreferences.setSchemeDeck(deck.getName());
|
DeckPreferences.setSchemeDeck(deck.getName());
|
||||||
break;
|
break;
|
||||||
case Planechase:
|
case Planechase:
|
||||||
editorType = EditorType.Planechase;
|
|
||||||
DeckPreferences.setPlanarDeck(deck.getName());
|
DeckPreferences.setPlanarDeck(deck.getName());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
editorType = EditorType.Constructed;
|
|
||||||
DeckPreferences.setCurrentDeck(deck.getName());
|
DeckPreferences.setCurrentDeck(deck.getName());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -302,7 +346,10 @@ public class FDeckChooser extends FScreen {
|
|||||||
cmbDeckTypes.addItem(DeckType.NET_DECK);
|
cmbDeckTypes.addItem(DeckType.NET_DECK);
|
||||||
break;
|
break;
|
||||||
case DeckManager:
|
case DeckManager:
|
||||||
cmbDeckTypes.addItem(DeckType.CUSTOM_DECK);
|
cmbDeckTypes.addItem(DeckType.CONSTRUCTED_DECK);
|
||||||
|
cmbDeckTypes.addItem(DeckType.COMMANDER_DECK);
|
||||||
|
cmbDeckTypes.addItem(DeckType.SCHEME_DECKS);
|
||||||
|
cmbDeckTypes.addItem(DeckType.PLANAR_DECKS);
|
||||||
cmbDeckTypes.addItem(DeckType.PRECONSTRUCTED_DECK);
|
cmbDeckTypes.addItem(DeckType.PRECONSTRUCTED_DECK);
|
||||||
cmbDeckTypes.addItem(DeckType.QUEST_OPPONENT_DECK);
|
cmbDeckTypes.addItem(DeckType.QUEST_OPPONENT_DECK);
|
||||||
cmbDeckTypes.addItem(DeckType.NET_DECK);
|
cmbDeckTypes.addItem(DeckType.NET_DECK);
|
||||||
@@ -393,6 +440,22 @@ public class FDeckChooser extends FScreen {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case CONSTRUCTED_DECK:
|
||||||
|
pool = DeckProxy.getAllConstructedDecks();
|
||||||
|
config = ItemManagerConfig.CONSTRUCTED_DECKS;
|
||||||
|
break;
|
||||||
|
case COMMANDER_DECK:
|
||||||
|
pool = DeckProxy.getAllCommanderDecks();
|
||||||
|
config = ItemManagerConfig.COMMANDER_DECKS;
|
||||||
|
break;
|
||||||
|
case SCHEME_DECKS:
|
||||||
|
pool = DeckProxy.getAllSchemeDecks();
|
||||||
|
config = ItemManagerConfig.SCHEME_DECKS;
|
||||||
|
break;
|
||||||
|
case PLANAR_DECKS:
|
||||||
|
pool = DeckProxy.getAllPlanarDecks();
|
||||||
|
config = ItemManagerConfig.PLANAR_DECKS;
|
||||||
|
break;
|
||||||
case COLOR_DECK:
|
case COLOR_DECK:
|
||||||
maxSelections = 3;
|
maxSelections = 3;
|
||||||
pool = ColorDeckGenerator.getColorDecks(lstDecks, isAi);
|
pool = ColorDeckGenerator.getColorDecks(lstDecks, isAi);
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ package forge.deck;
|
|||||||
|
|
||||||
public enum DeckType {
|
public enum DeckType {
|
||||||
CUSTOM_DECK ("Custom User Decks"),
|
CUSTOM_DECK ("Custom User Decks"),
|
||||||
|
CONSTRUCTED_DECK ("Constructed Decks"),
|
||||||
|
COMMANDER_DECK ("Commander Decks"),
|
||||||
|
SCHEME_DECKS ("Scheme Decks"),
|
||||||
|
PLANAR_DECKS ("Planar Decks"),
|
||||||
PRECONSTRUCTED_DECK("Preconstructed Decks"),
|
PRECONSTRUCTED_DECK("Preconstructed Decks"),
|
||||||
QUEST_OPPONENT_DECK ("Quest Opponent Decks"),
|
QUEST_OPPONENT_DECK ("Quest Opponent Decks"),
|
||||||
COLOR_DECK ("Random Color Decks"),
|
COLOR_DECK ("Random Color Decks"),
|
||||||
|
|||||||
Reference in New Issue
Block a user