mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Support loading and displaying previous deck in Constructed screen
This commit is contained in:
@@ -48,7 +48,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
lstDecks.setItemActivateCommand(cmdViewDeck);
|
lstDecks.setItemActivateHandler(cmdViewDeck);
|
||||||
btnViewDeck.setCommand(cmdViewDeck);
|
btnViewDeck.setCommand(cmdViewDeck);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public final class DeckManager extends ItemManager<DeckProxy> {
|
public final class DeckManager extends ItemManager<DeckProxy> {
|
||||||
private final GameType gametype;
|
private final GameType gametype;
|
||||||
private FEventHandler cmdDelete, cmdSelect;
|
private FEventHandler cmdDelete;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates deck list for selected decks for quick deleting, editing, and
|
* Creates deck list for selected decks for quick deleting, editing, and
|
||||||
@@ -42,7 +42,7 @@ public final class DeckManager extends ItemManager<DeckProxy> {
|
|||||||
super(DeckProxy.class, true);
|
super(DeckProxy.class, true);
|
||||||
this.gametype = gt;
|
this.gametype = gt;
|
||||||
|
|
||||||
this.setItemActivateCommand(new FEventHandler() {
|
this.setItemActivateHandler(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
editDeck(getSelectedItem());
|
editDeck(getSelectedItem());
|
||||||
@@ -66,10 +66,6 @@ public final class DeckManager extends ItemManager<DeckProxy> {
|
|||||||
this.cmdDelete = c0;
|
this.cmdDelete = c0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectCommand(final FEventHandler c0) {
|
|
||||||
this.cmdSelect = c0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addDefaultFilters() {
|
protected void addDefaultFilters() {
|
||||||
if (this.getConfig() == ItemManagerConfig.STRING_ONLY) { return; }
|
if (this.getConfig() == ItemManagerConfig.STRING_ONLY) { return; }
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
|||||||
private boolean alwaysNonUnique = false;
|
private boolean alwaysNonUnique = false;
|
||||||
private boolean allowMultipleSelections = false;
|
private boolean allowMultipleSelections = false;
|
||||||
private boolean hideFilters = false;
|
private boolean hideFilters = false;
|
||||||
private FEventHandler itemActivateHandler;
|
private FEventHandler selectionChangedHandler, itemActivateHandler;
|
||||||
private final Class<T> genericType;
|
private final Class<T> genericType;
|
||||||
private ItemManagerConfig config;
|
private ItemManagerConfig config;
|
||||||
|
|
||||||
@@ -1053,7 +1053,14 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
|||||||
setHideFilters(false); //ensure filters shown
|
setHideFilters(false); //ensure filters shown
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setItemActivateCommand(FEventHandler itemActivateHandler0) {
|
public FEventHandler getSelectionChangedHandler() {
|
||||||
|
return selectionChangedHandler;
|
||||||
|
}
|
||||||
|
public void setSelectionChangedHandler(FEventHandler selectionChangedHandler0) {
|
||||||
|
selectionChangedHandler = selectionChangedHandler0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemActivateHandler(FEventHandler itemActivateHandler0) {
|
||||||
itemActivateHandler = itemActivateHandler0;
|
itemActivateHandler = itemActivateHandler0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -391,7 +391,6 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
if (itemsToSelect == null) {
|
if (itemsToSelect == null) {
|
||||||
clearSelection(); //just clear selection if no items to select
|
clearSelection(); //just clear selection if no items to select
|
||||||
setScrollValue(scrollValueToRestore); //ensure scroll value restored
|
setScrollValue(scrollValueToRestore); //ensure scroll value restored
|
||||||
onSelectionChange();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!setSelectedItems(itemsToSelect)) {
|
if (!setSelectedItems(itemsToSelect)) {
|
||||||
@@ -810,7 +809,6 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
for (Integer i : selectedIndices) {
|
for (Integer i : selectedIndices) {
|
||||||
orderedItems.get(i).selected = true;
|
orderedItems.get(i).selected = true;
|
||||||
}
|
}
|
||||||
onSelectionChange();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.itemmanager.ItemManagerModel;
|
|||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
import forge.toolbox.FEvent.FEventType;
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FScrollPane;
|
import forge.toolbox.FScrollPane;
|
||||||
|
|
||||||
@@ -171,6 +172,7 @@ public abstract class ItemView<T extends InventoryItem> {
|
|||||||
if (scrollIntoView) {
|
if (scrollIntoView) {
|
||||||
scrollSelectionIntoView();
|
scrollSelectionIntoView();
|
||||||
}
|
}
|
||||||
|
onSelectionChange();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -194,6 +196,8 @@ public abstract class ItemView<T extends InventoryItem> {
|
|||||||
if (scrollIntoView) {
|
if (scrollIntoView) {
|
||||||
scrollSelectionIntoView();
|
scrollSelectionIntoView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSelectionChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedIndices(Iterable<Integer> indices) {
|
public void setSelectedIndices(Iterable<Integer> indices) {
|
||||||
@@ -222,15 +226,16 @@ public abstract class ItemView<T extends InventoryItem> {
|
|||||||
if (scrollIntoView) {
|
if (scrollIntoView) {
|
||||||
scrollSelectionIntoView();
|
scrollSelectionIntoView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSelectionChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onSelectionChange() {
|
protected void onSelectionChange() {
|
||||||
final int index = getSelectedIndex();
|
final int index = getSelectedIndex();
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
/*ListSelectionEvent event = new ListSelectionEvent(itemManager, index, index, false);
|
if (itemManager.getSelectionChangedHandler() != null) {
|
||||||
for (ListSelectionListener listener : itemManager.getSelectionListeners()) {
|
itemManager.getSelectionChangedHandler().handleEvent(new FEvent(itemManager, FEventType.CHANGE));
|
||||||
listener.valueChanged(event);
|
}
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
// General variables
|
// General variables
|
||||||
private final FLabel lblPlayers = new FLabel.Builder().text("Players:").fontSize(VARIANTS_FONT_SIZE).build();
|
private final FLabel lblPlayers = new FLabel.Builder().text("Players:").fontSize(VARIANTS_FONT_SIZE).build();
|
||||||
private final FComboBox<Integer> cmbPlayerCount;
|
private final FComboBox<Integer> cmbPlayerCount;
|
||||||
private GameType currentGameMode = GameType.Constructed;
|
|
||||||
private List<Integer> teams = new ArrayList<Integer>(MAX_PLAYERS);
|
private List<Integer> teams = new ArrayList<Integer>(MAX_PLAYERS);
|
||||||
private List<Integer> archenemyTeams = new ArrayList<Integer>(MAX_PLAYERS);
|
private List<Integer> archenemyTeams = new ArrayList<Integer>(MAX_PLAYERS);
|
||||||
|
|
||||||
@@ -91,9 +90,6 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final FCheckBox cbSingletons = new FCheckBox("Singleton Mode");
|
|
||||||
private final FCheckBox cbArtifacts = new FCheckBox("Remove Artifacts");
|
|
||||||
|
|
||||||
// Variants
|
// Variants
|
||||||
private final List<PaperCard> vgdAllAvatars = new ArrayList<PaperCard>();
|
private final List<PaperCard> vgdAllAvatars = new ArrayList<PaperCard>();
|
||||||
private final List<PaperCard> vgdAllAiAvatars = new ArrayList<PaperCard>();
|
private final List<PaperCard> vgdAllAiAvatars = new ArrayList<PaperCard>();
|
||||||
@@ -152,36 +148,6 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/*lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////
|
|
||||||
//////////////////// Variants Panel ////////////////////
|
|
||||||
|
|
||||||
// Populate and add variants panel
|
|
||||||
vntVanguard.addItemListener(iListenerVariants);
|
|
||||||
vntCommander.addItemListener(iListenerVariants);
|
|
||||||
vntPlanechase.addItemListener(iListenerVariants);
|
|
||||||
vntArchenemy.addItemListener(iListenerVariants);
|
|
||||||
comboArchenemy.setSelectedIndex(0);
|
|
||||||
comboArchenemy.setEnabled(vntArchenemy.isSelected());
|
|
||||||
comboArchenemy.addActionListener(aeComboListener);
|
|
||||||
|
|
||||||
variantsPanel.setOpaque(false);
|
|
||||||
variantsPanel.add(newLabel("Variants:"));
|
|
||||||
variantsPanel.add(vntVanguard);
|
|
||||||
variantsPanel.add(vntCommander);
|
|
||||||
variantsPanel.add(vntPlanechase);
|
|
||||||
variantsPanel.add(vntArchenemy);
|
|
||||||
comboArchenemy.addTo(variantsPanel);
|
|
||||||
|
|
||||||
constructedFrame.add(new FScrollPane(variantsPanel, false, true,
|
|
||||||
ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,
|
|
||||||
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED),
|
|
||||||
"w 100%, h 45px!, gapbottom 10px, spanx 2, wrap");*/
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////
|
|
||||||
///////////////////// Player Panel /////////////////////
|
|
||||||
|
|
||||||
// Construct individual player panels
|
// Construct individual player panels
|
||||||
for (int i = 0; i < MAX_PLAYERS; i++) {
|
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||||
teams.add(i + 1);
|
teams.add(i + 1);
|
||||||
@@ -207,26 +173,6 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
getDeckChooser(6).initialize(FPref.CONSTRUCTED_P7_DECK_STATE, DeckType.COLOR_DECK);
|
getDeckChooser(6).initialize(FPref.CONSTRUCTED_P7_DECK_STATE, DeckType.COLOR_DECK);
|
||||||
getDeckChooser(7).initialize(FPref.CONSTRUCTED_P8_DECK_STATE, DeckType.COLOR_DECK);
|
getDeckChooser(7).initialize(FPref.CONSTRUCTED_P8_DECK_STATE, DeckType.COLOR_DECK);
|
||||||
|
|
||||||
// Checkbox event handling
|
|
||||||
cbSingletons.setCommand(new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
prefs.setPref(FPref.DECKGEN_SINGLETONS, String.valueOf(cbSingletons.isSelected()));
|
|
||||||
prefs.save();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
cbArtifacts.setCommand(new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
prefs.setPref(FPref.DECKGEN_ARTIFACTS, String.valueOf(cbArtifacts.isSelected()));
|
|
||||||
prefs.save();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Pre-select checkboxes
|
|
||||||
cbSingletons.setSelected(prefs.getPrefBoolean(FPref.DECKGEN_SINGLETONS));
|
|
||||||
cbArtifacts.setSelected(prefs.getPrefBoolean(FPref.DECKGEN_ARTIFACTS));
|
|
||||||
|
|
||||||
updatePlayersFromPrefs();
|
updatePlayersFromPrefs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -483,14 +429,14 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
index = index0;
|
index = index0;
|
||||||
playerIsArchenemy = index == 0;
|
playerIsArchenemy = index == 0;
|
||||||
deckChooser = new FDeckChooser(isPlayerAI());
|
deckChooser = new FDeckChooser(isPlayerAI());
|
||||||
deckChooser.initialize();
|
deckChooser.getLstDecks().setSelectionChangedHandler(new FEventHandler() {
|
||||||
deckChooser.getLstDecks().setSelectCommand(new FEventHandler() {
|
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
String text = deckChooser.getSelectedDeckType().toString() + ": " + Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME);
|
deckBtn.setText(deckChooser.getSelectedDeckType().toString() + ": " +
|
||||||
setDeckSelectorButtonText(text);
|
Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
deckChooser.initialize();
|
||||||
schemeDeckList = new DeckList();
|
schemeDeckList = new DeckList();
|
||||||
commanderDeckList = new DeckList();
|
commanderDeckList = new DeckList();
|
||||||
planarDeckList = new DeckList();
|
planarDeckList = new DeckList();
|
||||||
@@ -519,8 +465,11 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
|
|
||||||
add(deckLabel);
|
add(deckLabel);
|
||||||
add(deckBtn);
|
add(deckBtn);
|
||||||
|
deckBtn.setCommand(new FEventHandler() {
|
||||||
addHandlersDeckSelector();
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
add(cmdLabel);
|
add(cmdLabel);
|
||||||
add(cmdDeckSelectorBtn);
|
add(cmdDeckSelectorBtn);
|
||||||
@@ -595,6 +544,7 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
w = x - avatarSize - 3 * PADDING;
|
w = x - avatarSize - 3 * PADDING;
|
||||||
x = avatarSize + 2 * PADDING;
|
x = avatarSize + 2 * PADDING;
|
||||||
teamComboBox.setBounds(x, y, w, fieldHeight);
|
teamComboBox.setBounds(x, y, w, fieldHeight);
|
||||||
|
aeTeamComboBox.setBounds(x, y, width, fieldHeight);
|
||||||
|
|
||||||
y += fieldHeight + PADDING;
|
y += fieldHeight + PADDING;
|
||||||
x = PADDING;
|
x = PADDING;
|
||||||
@@ -717,10 +667,6 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
vgdSelectorBtn.setText(text);
|
vgdSelectorBtn.setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDeckSelectorButtonText(String text) {
|
|
||||||
deckBtn.setText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void populateTeamsComboBoxes() {
|
private void populateTeamsComboBoxes() {
|
||||||
aeTeamComboBox.addItem("Archenemy");
|
aeTeamComboBox.addItem("Archenemy");
|
||||||
aeTeamComboBox.addItem("Heroes");
|
aeTeamComboBox.addItem("Heroes");
|
||||||
@@ -775,14 +721,12 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
scmDeckSelectorBtn.setCommand(new FEventHandler() {
|
scmDeckSelectorBtn.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
scmDeckEditor.setCommand(new FEventHandler() {
|
scmDeckEditor.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble;
|
|
||||||
Predicate<PaperCard> predSchemes = new Predicate<PaperCard>() {
|
Predicate<PaperCard> predSchemes = new Predicate<PaperCard>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(PaperCard arg0) {
|
public boolean apply(PaperCard arg0) {
|
||||||
@@ -800,14 +744,12 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
cmdDeckSelectorBtn.setCommand(new FEventHandler() {
|
cmdDeckSelectorBtn.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
currentGameMode = GameType.Commander;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
cmdDeckEditor.setCommand(new FEventHandler() {
|
cmdDeckEditor.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
currentGameMode = GameType.Commander;
|
|
||||||
//Forge.setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER);
|
//Forge.setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -816,14 +758,12 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
pchDeckSelectorBtn.setCommand(new FEventHandler() {
|
pchDeckSelectorBtn.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
currentGameMode = GameType.Planechase;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
pchDeckEditor.setCommand(new FEventHandler() {
|
pchDeckEditor.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
currentGameMode = GameType.Planechase;
|
|
||||||
/*Predicate<PaperCard> predPlanes = new Predicate<PaperCard>() {
|
/*Predicate<PaperCard> predPlanes = new Predicate<PaperCard>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(PaperCard arg0) {
|
public boolean apply(PaperCard arg0) {
|
||||||
@@ -841,16 +781,6 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
vgdSelectorBtn.setCommand(new FEventHandler() {
|
vgdSelectorBtn.setCommand(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
currentGameMode = GameType.Vanguard;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addHandlersDeckSelector() {
|
|
||||||
deckBtn.setCommand(new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
currentGameMode = GameType.Constructed;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user