mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Support changing planeswalkers to any you unlock
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user