mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +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);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import java.util.Set;
|
||||
*/
|
||||
public final class DeckManager extends ItemManager<DeckProxy> {
|
||||
private final GameType gametype;
|
||||
private FEventHandler cmdDelete, cmdSelect;
|
||||
private FEventHandler cmdDelete;
|
||||
|
||||
/**
|
||||
* 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);
|
||||
this.gametype = gt;
|
||||
|
||||
this.setItemActivateCommand(new FEventHandler() {
|
||||
this.setItemActivateHandler(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
editDeck(getSelectedItem());
|
||||
@@ -66,10 +66,6 @@ public final class DeckManager extends ItemManager<DeckProxy> {
|
||||
this.cmdDelete = c0;
|
||||
}
|
||||
|
||||
public void setSelectCommand(final FEventHandler c0) {
|
||||
this.cmdSelect = c0;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addDefaultFilters() {
|
||||
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 allowMultipleSelections = false;
|
||||
private boolean hideFilters = false;
|
||||
private FEventHandler itemActivateHandler;
|
||||
private FEventHandler selectionChangedHandler, itemActivateHandler;
|
||||
private final Class<T> genericType;
|
||||
private ItemManagerConfig config;
|
||||
|
||||
@@ -1053,7 +1053,14 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -391,7 +391,6 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
if (itemsToSelect == null) {
|
||||
clearSelection(); //just clear selection if no items to select
|
||||
setScrollValue(scrollValueToRestore); //ensure scroll value restored
|
||||
onSelectionChange();
|
||||
}
|
||||
else {
|
||||
if (!setSelectedItems(itemsToSelect)) {
|
||||
@@ -810,7 +809,6 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
for (Integer i : selectedIndices) {
|
||||
orderedItems.get(i).selected = true;
|
||||
}
|
||||
onSelectionChange();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import forge.itemmanager.ItemManagerModel;
|
||||
import forge.toolbox.FDisplayObject;
|
||||
import forge.toolbox.FEvent;
|
||||
import forge.toolbox.FEvent.FEventHandler;
|
||||
import forge.toolbox.FEvent.FEventType;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
|
||||
@@ -171,6 +172,7 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
if (scrollIntoView) {
|
||||
scrollSelectionIntoView();
|
||||
}
|
||||
onSelectionChange();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -194,6 +196,8 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
if (scrollIntoView) {
|
||||
scrollSelectionIntoView();
|
||||
}
|
||||
|
||||
onSelectionChange();
|
||||
}
|
||||
|
||||
public void setSelectedIndices(Iterable<Integer> indices) {
|
||||
@@ -222,15 +226,16 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
if (scrollIntoView) {
|
||||
scrollSelectionIntoView();
|
||||
}
|
||||
|
||||
onSelectionChange();
|
||||
}
|
||||
|
||||
protected void onSelectionChange() {
|
||||
final int index = getSelectedIndex();
|
||||
if (index != -1) {
|
||||
/*ListSelectionEvent event = new ListSelectionEvent(itemManager, index, index, false);
|
||||
for (ListSelectionListener listener : itemManager.getSelectionListeners()) {
|
||||
listener.valueChanged(event);
|
||||
}*/
|
||||
if (itemManager.getSelectionChangedHandler() != null) {
|
||||
itemManager.getSelectionChangedHandler().handleEvent(new FEvent(itemManager, FEventType.CHANGE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
// General variables
|
||||
private final FLabel lblPlayers = new FLabel.Builder().text("Players:").fontSize(VARIANTS_FONT_SIZE).build();
|
||||
private final FComboBox<Integer> cmbPlayerCount;
|
||||
private GameType currentGameMode = GameType.Constructed;
|
||||
private List<Integer> teams = 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
|
||||
private final List<PaperCard> vgdAllAvatars = 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
|
||||
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||
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(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();
|
||||
}
|
||||
|
||||
@@ -483,14 +429,14 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
index = index0;
|
||||
playerIsArchenemy = index == 0;
|
||||
deckChooser = new FDeckChooser(isPlayerAI());
|
||||
deckChooser.initialize();
|
||||
deckChooser.getLstDecks().setSelectCommand(new FEventHandler() {
|
||||
deckChooser.getLstDecks().setSelectionChangedHandler(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
String text = deckChooser.getSelectedDeckType().toString() + ": " + Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME);
|
||||
setDeckSelectorButtonText(text);
|
||||
deckBtn.setText(deckChooser.getSelectedDeckType().toString() + ": " +
|
||||
Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME));
|
||||
}
|
||||
});
|
||||
deckChooser.initialize();
|
||||
schemeDeckList = new DeckList();
|
||||
commanderDeckList = new DeckList();
|
||||
planarDeckList = new DeckList();
|
||||
@@ -519,8 +465,11 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
|
||||
add(deckLabel);
|
||||
add(deckBtn);
|
||||
|
||||
addHandlersDeckSelector();
|
||||
deckBtn.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
});
|
||||
|
||||
add(cmdLabel);
|
||||
add(cmdDeckSelectorBtn);
|
||||
@@ -595,6 +544,7 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
w = x - avatarSize - 3 * PADDING;
|
||||
x = avatarSize + 2 * PADDING;
|
||||
teamComboBox.setBounds(x, y, w, fieldHeight);
|
||||
aeTeamComboBox.setBounds(x, y, width, fieldHeight);
|
||||
|
||||
y += fieldHeight + PADDING;
|
||||
x = PADDING;
|
||||
@@ -717,10 +667,6 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
vgdSelectorBtn.setText(text);
|
||||
}
|
||||
|
||||
public void setDeckSelectorButtonText(String text) {
|
||||
deckBtn.setText(text);
|
||||
}
|
||||
|
||||
private void populateTeamsComboBoxes() {
|
||||
aeTeamComboBox.addItem("Archenemy");
|
||||
aeTeamComboBox.addItem("Heroes");
|
||||
@@ -775,14 +721,12 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
scmDeckSelectorBtn.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble;
|
||||
}
|
||||
});
|
||||
|
||||
scmDeckEditor.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble;
|
||||
Predicate<PaperCard> predSchemes = new Predicate<PaperCard>() {
|
||||
@Override
|
||||
public boolean apply(PaperCard arg0) {
|
||||
@@ -800,14 +744,12 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
cmdDeckSelectorBtn.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
currentGameMode = GameType.Commander;
|
||||
}
|
||||
});
|
||||
|
||||
cmdDeckEditor.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
currentGameMode = GameType.Commander;
|
||||
//Forge.setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER);
|
||||
}
|
||||
});
|
||||
@@ -816,14 +758,12 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
pchDeckSelectorBtn.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
currentGameMode = GameType.Planechase;
|
||||
}
|
||||
});
|
||||
|
||||
pchDeckEditor.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
currentGameMode = GameType.Planechase;
|
||||
/*Predicate<PaperCard> predPlanes = new Predicate<PaperCard>() {
|
||||
@Override
|
||||
public boolean apply(PaperCard arg0) {
|
||||
@@ -841,16 +781,6 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
vgdSelectorBtn.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
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