Support changing planeswalkers to any you unlock

This commit is contained in:
drdev
2016-03-19 19:06:29 +00:00
parent 448bce81b7
commit f3bf978f8e
7 changed files with 109 additions and 4 deletions

1
.gitattributes vendored
View File

@@ -1349,6 +1349,7 @@ forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneSelector.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneswalkScreen.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneswalkersScreen.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestPrefsScreen.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestRewardDialog.java -text
forge-gui-mobile/src/forge/screens/planarconquest/LoadConquestScreen.java -text

View File

@@ -8,6 +8,8 @@ import forge.toolbox.FChoiceList;
import forge.toolbox.FLabel;
public class CardListPreview extends FLabel {
public static final float CARD_PREVIEW_RATIO = 0.5f;
private final FChoiceList<PaperCard> list;
public CardListPreview(FChoiceList<PaperCard> list0) {

View File

@@ -122,7 +122,7 @@ public class ConquestCommandersScreen extends FScreen {
canCloseCallback.run(true);
}
public void refreshCommanders() {
private void refreshCommanders() {
ConquestData model = FModel.getConquest().getModel();
lstCommanders.setPool(model.getCommanders());
lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS);

View File

@@ -25,6 +25,7 @@ public class ConquestMenu extends FPopupMenu {
private static final ConquestMultiverseScreen multiverseScreen = new ConquestMultiverseScreen();
private static final ConquestAEtherScreen aetherScreen = new ConquestAEtherScreen();
private static final ConquestCommandersScreen commandersScreen = new ConquestCommandersScreen();
private static final ConquestPlaneswalkersScreen planeswalkersScreen = new ConquestPlaneswalkersScreen();
private static final ConquestCollectionScreen collectionScreen = new ConquestCollectionScreen();
private static final ConquestPlaneswalkScreen planeswalkScreen = new ConquestPlaneswalkScreen();
private static final ConquestPrefsScreen prefsScreen = new ConquestPrefsScreen();
@@ -47,6 +48,12 @@ public class ConquestMenu extends FPopupMenu {
Forge.openScreen(commandersScreen);
}
});
private static final FMenuItem planeswalkersItem = new FMenuItem("Planeswalkers", FSkinImage.PLANESWALKER, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
Forge.openScreen(planeswalkersScreen);
}
});
private static final FMenuItem collectionItem = new FMenuItem("Collection", FSkinImage.SPELLBOOK, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
@@ -125,6 +132,7 @@ public class ConquestMenu extends FPopupMenu {
addItem(multiverseItem); multiverseItem.setSelected(currentScreen == multiverseScreen);
addItem(aetherItem); aetherItem.setSelected(currentScreen == aetherScreen);
addItem(commandersItem); commandersItem.setSelected(currentScreen == commandersScreen);
addItem(planeswalkersItem); planeswalkersItem.setSelected(currentScreen == planeswalkersScreen);
addItem(collectionItem); collectionItem.setSelected(currentScreen == collectionScreen);
addItem(planeswalkItem); planeswalkItem.setSelected(currentScreen == planeswalkScreen);
addItem(prefsItem); prefsItem.setSelected(currentScreen == prefsScreen);

View File

@@ -0,0 +1,84 @@
package forge.screens.planarconquest;
import forge.Forge;
import forge.achievement.PlaneswalkerAchievements;
import forge.assets.FImage;
import forge.card.CardListPreview;
import forge.deck.FDeckChooser;
import forge.item.PaperCard;
import forge.model.FModel;
import forge.planarconquest.ConquestData;
import forge.screens.FScreen;
import forge.toolbox.FChoiceList;
import forge.util.Callback;
public class ConquestPlaneswalkersScreen extends FScreen {
private static final float PADDING = FDeckChooser.PADDING;
private final FChoiceList<PaperCard> lstPlaneswalkers = add(new FChoiceList<PaperCard>(FModel.getPlanes().iterator().next().getCommanders()) { //just use commanders as temporary list
@Override
protected void onItemActivate(Integer index, PaperCard value) {
Forge.back();
}
@Override
protected void onSelectionChange() {
if (tokenDisplay == null) { return; }
updatePreview();
}
});
private final CardListPreview tokenDisplay = add(new CardListPreview(lstPlaneswalkers));
public ConquestPlaneswalkersScreen() {
super("Select Planeswalker", ConquestMenu.getMenu());
}
@Override
public void onActivate() {
refreshPlaneswalkers();
}
@Override
public void onClose(final Callback<Boolean> canCloseCallback) {
if (canCloseCallback == null) { return; }
final PaperCard planeswalker = lstPlaneswalkers.getSelectedItem();
if (planeswalker == null) {
canCloseCallback.run(true); //shouldn't happen, but don't block closing screen if no commanders
return;
}
ConquestData model = FModel.getConquest().getModel();
if (model.getPlaneswalker() != planeswalker) {
model.setPlaneswalker(planeswalker);
model.saveData();
}
canCloseCallback.run(true);
}
private void refreshPlaneswalkers() {
ConquestData model = FModel.getConquest().getModel();
lstPlaneswalkers.setListData(model.getSortedPlaneswalkers());
lstPlaneswalkers.setSelectedItem(model.getPlaneswalker());
}
private void updatePreview() {
PaperCard planeswalker = lstPlaneswalkers.getSelectedItem();
if (planeswalker != null) {
tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName()));
}
else {
tokenDisplay.setIcon(null);
}
}
@Override
protected void doLayout(float startY, float width, float height) {
float x = PADDING;
float y = startY + PADDING;
float w = width - 2 * PADDING;
tokenDisplay.setBounds(x, y, w, (height - startY) * CardListPreview.CARD_PREVIEW_RATIO);
y += tokenDisplay.getHeight() + PADDING;
lstPlaneswalkers.setBounds(x, y, w, height - y - PADDING);
}
}

View File

@@ -23,7 +23,6 @@ import forge.util.ThreadUtil;
public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenModel> {
private static final float PADDING = FOptionPane.PADDING;
private static final float CARD_PREVIEW_RATIO = 0.5f;
@SuppressWarnings("unchecked")
public NewConquestScreen() {
@@ -131,7 +130,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
float x = PADDING;
float y = PADDING;
float w = width - 2 * PADDING;
cardDisplay.setBounds(x, y, w, height * CARD_PREVIEW_RATIO);
cardDisplay.setBounds(x, y, w, height * CardListPreview.CARD_PREVIEW_RATIO);
y += cardDisplay.getHeight() + PADDING;
lstCommanders.setBounds(x, y, w, height - y - PADDING);
}
@@ -190,7 +189,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
float x = PADDING;
float y = PADDING;
float w = width - 2 * PADDING;
tokenDisplay.setBounds(x, y, w, height * CARD_PREVIEW_RATIO);
tokenDisplay.setBounds(x, y, w, height * CardListPreview.CARD_PREVIEW_RATIO);
y += tokenDisplay.getHeight() + PADDING;
lstPlaneswalkers.setBounds(x, y, w, height - y - PADDING);
}

View File

@@ -155,6 +155,17 @@ public final class ConquestData {
return planeswalkerToken;
}
public Iterable<PaperCard> getSortedPlaneswalkers() {
List<PaperCard> planeswalkers = new ArrayList<PaperCard>();
for (PaperCard card : unlockedCards) {
if (card.getRules().getType().isPlaneswalker()) {
planeswalkers.add(card);
}
}
Collections.sort(planeswalkers);
return planeswalkers;
}
public ConquestPlane getCurrentPlane() {
return currentLocation.getPlane();
}