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.itemmanager.filters.TextSearchFilter;
import forge.model.FModel; import forge.model.FModel;
import forge.planarconquest.ConquestCommander; import forge.planarconquest.ConquestCommander;
import forge.planarconquest.ConquestData;
import forge.planarconquest.ConquestPlane; import forge.planarconquest.ConquestPlane;
import forge.planarconquest.ConquestRecord; import forge.planarconquest.ConquestRecord;
import forge.screens.FScreen; import forge.screens.FScreen;
import forge.toolbox.FButton;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
import forge.toolbox.FLabel;
import forge.toolbox.FList; import forge.toolbox.FList;
import forge.toolbox.FTextField;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FList.CompactModeHandler; import forge.toolbox.FList.CompactModeHandler;
public class ConquestCommandersScreen extends FScreen { public class ConquestCommandersScreen extends FScreen {
private static final float PADDING = FDeckChooser.PADDING;
private final CommanderManager lstCommanders = add(new CommanderManager()); private final CommanderManager lstCommanders = add(new CommanderManager());
private final FLabel lblTip = add(new FLabel.Builder() private final FButton btnViewDeck = add(new FButton("View Deck"));
.text("Double-tap to edit deck (Long-press to view)") private final FButton btnEditDeck = add(new FButton("Edit Deck"));
.textColor(FLabel.INLINE_LABEL_COLOR)
.align(HAlignment.CENTER).font(FSkinFont.get(12)).build()); 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() { public ConquestCommandersScreen() {
super("", ConquestMenu.getMenu()); super("", ConquestMenu.getMenu());
@@ -50,7 +66,25 @@ public class ConquestCommandersScreen extends FScreen {
lstCommanders.setItemActivateHandler(new FEventHandler() { lstCommanders.setItemActivateHandler(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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() { 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); lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS);
ConquestCommander commander = model.getSelectedCommander();
if (commander != null) {
lstCommanders.setSelectedItem(commander);
}
else {
lstCommanders.setSelectedIndex(0);
onCommanderSelectionChanged.handleEvent(null); //update selected command
} }
private void editSelectedDeck() { lstCommanders.setSelectionChangedHandler(onCommanderSelectionChanged);
final ConquestCommander commander = lstCommanders.getSelectedItem();
if (commander == null) { return; }
Forge.openScreen(new ConquestDeckEditor(commander));
} }
@Override @Override
protected void doLayout(float startY, float width, float height) { protected void doLayout(float startY, float width, float height) {
float x = ItemFilter.PADDING; float x = PADDING;
float y = startY; float y = startY;
float w = width - 2 * x; float w = width - 2 * PADDING;
float labelHeight = lblTip.getAutoSizeBounds().height;
float listHeight = height - labelHeight - y - 2 * FDeckChooser.PADDING; float buttonWidth = (w - PADDING) / 2;
float buttonHeight = FTextField.getDefaultHeight();
float listHeight = height - buttonHeight - y - 2 * PADDING;
lstCommanders.setBounds(x, y, w, listHeight); lstCommanders.setBounds(x, y, w, listHeight);
y += listHeight + FDeckChooser.PADDING; y += listHeight + PADDING;
lblTip.setBounds(x, y, w, labelHeight); btnViewDeck.setBounds(x, y, buttonWidth, buttonHeight);
btnEditDeck.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight);
} }
private static class CommanderManager extends ItemManager<ConquestCommander> { 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 @Override
protected void buildMenu() { protected void buildMenu() {
FScreen currentScreen = Forge.getCurrentScreen(); FScreen currentScreen = Forge.getCurrentScreen();

View File

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

View File

@@ -164,16 +164,16 @@ public class QuestDecksScreen extends FScreen {
lblInfo.setBounds(x, y, w, lblInfo.getAutoSizeBounds().height); lblInfo.setBounds(x, y, w, lblInfo.getAutoSizeBounds().height);
y += lblInfo.getHeight(); y += lblInfo.getHeight();
float buttonWidth = (w - FDeckChooser.PADDING) / 2; float buttonWidth = (w - PADDING) / 2;
float buttonHeight = FTextField.getDefaultHeight(); float buttonHeight = FTextField.getDefaultHeight();
float listHeight = height - 2 * buttonHeight - y - 3 * PADDING; float listHeight = height - 2 * buttonHeight - y - 3 * PADDING;
lstDecks.setBounds(x, y, w, listHeight); lstDecks.setBounds(x, y, w, listHeight);
y += listHeight + PADDING; y += listHeight + PADDING;
btnNewDeck.setBounds(x, y, buttonWidth, buttonHeight); 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; y += buttonHeight + PADDING;
btnViewDeck.setBounds(x, y, buttonWidth, buttonHeight); 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() { public ConquestCommander getSelectedCommander() {
return commanders.get(selectedCommanderIndex); return commanders.get(selectedCommanderIndex);
} }
public void setSelectedCommanderIndex(int index0) { public void setSelectedCommander(ConquestCommander commander) {
selectedCommanderIndex = index0; selectedCommanderIndex = commanders.indexOf(commander);
} }
public Iterable<PaperCard> getUnlockedCards() { public Iterable<PaperCard> getUnlockedCards() {