mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Support selecting commander
This commit is contained in:
@@ -27,21 +27,37 @@ import forge.itemmanager.filters.StatTypeFilter;
|
||||
import forge.itemmanager.filters.TextSearchFilter;
|
||||
import forge.model.FModel;
|
||||
import forge.planarconquest.ConquestCommander;
|
||||
import forge.planarconquest.ConquestData;
|
||||
import forge.planarconquest.ConquestPlane;
|
||||
import forge.planarconquest.ConquestRecord;
|
||||
import forge.screens.FScreen;
|
||||
import forge.toolbox.FButton;
|
||||
import forge.toolbox.FEvent;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FList;
|
||||
import forge.toolbox.FTextField;
|
||||
import forge.toolbox.FEvent.FEventHandler;
|
||||
import forge.toolbox.FList.CompactModeHandler;
|
||||
|
||||
public class ConquestCommandersScreen extends FScreen {
|
||||
private static final float PADDING = FDeckChooser.PADDING;
|
||||
|
||||
private final CommanderManager lstCommanders = add(new CommanderManager());
|
||||
private final FLabel lblTip = add(new FLabel.Builder()
|
||||
.text("Double-tap to edit deck (Long-press to view)")
|
||||
.textColor(FLabel.INLINE_LABEL_COLOR)
|
||||
.align(HAlignment.CENTER).font(FSkinFont.get(12)).build());
|
||||
private final FButton btnViewDeck = add(new FButton("View Deck"));
|
||||
private final FButton btnEditDeck = add(new FButton("Edit Deck"));
|
||||
|
||||
private final FEventHandler onCommanderSelectionChanged = new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
final ConquestCommander commander = lstCommanders.getSelectedItem();
|
||||
if (commander != null) {
|
||||
ConquestData model = FModel.getConquest().getModel();
|
||||
if (model.getSelectedCommander() != commander) {
|
||||
model.setSelectedCommander(commander);
|
||||
model.saveData();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public ConquestCommandersScreen() {
|
||||
super("", ConquestMenu.getMenu());
|
||||
@@ -50,7 +66,25 @@ public class ConquestCommandersScreen extends FScreen {
|
||||
lstCommanders.setItemActivateHandler(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
editSelectedDeck();
|
||||
Forge.back();
|
||||
}
|
||||
});
|
||||
btnViewDeck.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
final ConquestCommander commander = lstCommanders.getSelectedItem();
|
||||
if (commander != null) {
|
||||
FDeckViewer.show(commander.getDeck());
|
||||
}
|
||||
}
|
||||
});
|
||||
btnEditDeck.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
final ConquestCommander commander = lstCommanders.getSelectedItem();
|
||||
if (commander != null) {
|
||||
Forge.openScreen(new ConquestDeckEditor(commander));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -62,28 +96,38 @@ public class ConquestCommandersScreen extends FScreen {
|
||||
}
|
||||
|
||||
public void refreshCommanders() {
|
||||
lstCommanders.setPool(FModel.getConquest().getModel().getCommanders());
|
||||
lstCommanders.setSelectionChangedHandler(null); //set to null temporarily
|
||||
|
||||
ConquestData model = FModel.getConquest().getModel();
|
||||
lstCommanders.setPool(model.getCommanders());
|
||||
lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS);
|
||||
}
|
||||
|
||||
private void editSelectedDeck() {
|
||||
final ConquestCommander commander = lstCommanders.getSelectedItem();
|
||||
if (commander == null) { return; }
|
||||
ConquestCommander commander = model.getSelectedCommander();
|
||||
if (commander != null) {
|
||||
lstCommanders.setSelectedItem(commander);
|
||||
}
|
||||
else {
|
||||
lstCommanders.setSelectedIndex(0);
|
||||
onCommanderSelectionChanged.handleEvent(null); //update selected command
|
||||
}
|
||||
|
||||
Forge.openScreen(new ConquestDeckEditor(commander));
|
||||
lstCommanders.setSelectionChangedHandler(onCommanderSelectionChanged);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLayout(float startY, float width, float height) {
|
||||
float x = ItemFilter.PADDING;
|
||||
float x = PADDING;
|
||||
float y = startY;
|
||||
float w = width - 2 * x;
|
||||
float labelHeight = lblTip.getAutoSizeBounds().height;
|
||||
float listHeight = height - labelHeight - y - 2 * FDeckChooser.PADDING;
|
||||
float w = width - 2 * PADDING;
|
||||
|
||||
float buttonWidth = (w - PADDING) / 2;
|
||||
float buttonHeight = FTextField.getDefaultHeight();
|
||||
float listHeight = height - buttonHeight - y - 2 * PADDING;
|
||||
|
||||
lstCommanders.setBounds(x, y, w, listHeight);
|
||||
y += listHeight + FDeckChooser.PADDING;
|
||||
lblTip.setBounds(x, y, w, labelHeight);
|
||||
y += listHeight + PADDING;
|
||||
btnViewDeck.setBounds(x, y, buttonWidth, buttonHeight);
|
||||
btnEditDeck.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight);
|
||||
}
|
||||
|
||||
private static class CommanderManager extends ItemManager<ConquestCommander> {
|
||||
|
||||
@@ -108,6 +108,10 @@ public class ConquestMenu extends FPopupMenu {
|
||||
}
|
||||
}
|
||||
|
||||
public static void selectCommander() {
|
||||
Forge.openScreen(commandersScreen);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildMenu() {
|
||||
FScreen currentScreen = Forge.getCurrentScreen();
|
||||
|
||||
@@ -723,7 +723,7 @@ public class ConquestMultiverseScreen extends FScreen {
|
||||
CardZoom.show(card);
|
||||
}
|
||||
else {
|
||||
//TODO: Allow picking a different commander
|
||||
ConquestMenu.selectCommander();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -164,16 +164,16 @@ public class QuestDecksScreen extends FScreen {
|
||||
lblInfo.setBounds(x, y, w, lblInfo.getAutoSizeBounds().height);
|
||||
y += lblInfo.getHeight();
|
||||
|
||||
float buttonWidth = (w - FDeckChooser.PADDING) / 2;
|
||||
float buttonWidth = (w - PADDING) / 2;
|
||||
float buttonHeight = FTextField.getDefaultHeight();
|
||||
float listHeight = height - 2 * buttonHeight - y - 3 * PADDING;
|
||||
|
||||
lstDecks.setBounds(x, y, w, listHeight);
|
||||
y += listHeight + PADDING;
|
||||
btnNewDeck.setBounds(x, y, buttonWidth, buttonHeight);
|
||||
btnEditDeck.setBounds(x + buttonWidth + FDeckChooser.PADDING, y, buttonWidth, buttonHeight);
|
||||
btnEditDeck.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight);
|
||||
y += buttonHeight + PADDING;
|
||||
btnViewDeck.setBounds(x, y, buttonWidth, buttonHeight);
|
||||
btnRandom.setBounds(x + buttonWidth + FDeckChooser.PADDING, y, buttonWidth, buttonHeight);
|
||||
btnRandom.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,8 +159,8 @@ public final class ConquestData {
|
||||
public ConquestCommander getSelectedCommander() {
|
||||
return commanders.get(selectedCommanderIndex);
|
||||
}
|
||||
public void setSelectedCommanderIndex(int index0) {
|
||||
selectedCommanderIndex = index0;
|
||||
public void setSelectedCommander(ConquestCommander commander) {
|
||||
selectedCommanderIndex = commanders.indexOf(commander);
|
||||
}
|
||||
|
||||
public Iterable<PaperCard> getUnlockedCards() {
|
||||
|
||||
Reference in New Issue
Block a user