Support selecting commander

This commit is contained in:
drdev
2016-02-08 01:23:15 +00:00
parent 8d463f3d5e
commit 85ffe0e540
5 changed files with 72 additions and 24 deletions

View File

@@ -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> {

View File

@@ -108,6 +108,10 @@ public class ConquestMenu extends FPopupMenu {
}
}
public static void selectCommander() {
Forge.openScreen(commandersScreen);
}
@Override
protected void buildMenu() {
FScreen currentScreen = Forge.getCurrentScreen();

View File

@@ -723,7 +723,7 @@ public class ConquestMultiverseScreen extends FScreen {
CardZoom.show(card);
}
else {
//TODO: Allow picking a different commander
ConquestMenu.selectCommander();
}
}
return true;

View File

@@ -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);
}
}

View File

@@ -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() {