mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38: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.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);
|
||||||
}
|
|
||||||
|
|
||||||
private void editSelectedDeck() {
|
ConquestCommander commander = model.getSelectedCommander();
|
||||||
final ConquestCommander commander = lstCommanders.getSelectedItem();
|
if (commander != null) {
|
||||||
if (commander == null) { return; }
|
lstCommanders.setSelectedItem(commander);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lstCommanders.setSelectedIndex(0);
|
||||||
|
onCommanderSelectionChanged.handleEvent(null); //update selected command
|
||||||
|
}
|
||||||
|
|
||||||
Forge.openScreen(new ConquestDeckEditor(commander));
|
lstCommanders.setSelectionChangedHandler(onCommanderSelectionChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
@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> {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user