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/ConquestMultiverseScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneSelector.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/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/ConquestPrefsScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestRewardDialog.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestRewardDialog.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/LoadConquestScreen.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/LoadConquestScreen.java -text
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import forge.toolbox.FChoiceList;
|
|||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
|
|
||||||
public class CardListPreview extends FLabel {
|
public class CardListPreview extends FLabel {
|
||||||
|
public static final float CARD_PREVIEW_RATIO = 0.5f;
|
||||||
|
|
||||||
private final FChoiceList<PaperCard> list;
|
private final FChoiceList<PaperCard> list;
|
||||||
|
|
||||||
public CardListPreview(FChoiceList<PaperCard> list0) {
|
public CardListPreview(FChoiceList<PaperCard> list0) {
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ public class ConquestCommandersScreen extends FScreen {
|
|||||||
canCloseCallback.run(true);
|
canCloseCallback.run(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshCommanders() {
|
private void refreshCommanders() {
|
||||||
ConquestData model = FModel.getConquest().getModel();
|
ConquestData model = FModel.getConquest().getModel();
|
||||||
lstCommanders.setPool(model.getCommanders());
|
lstCommanders.setPool(model.getCommanders());
|
||||||
lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS);
|
lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
private static final ConquestMultiverseScreen multiverseScreen = new ConquestMultiverseScreen();
|
private static final ConquestMultiverseScreen multiverseScreen = new ConquestMultiverseScreen();
|
||||||
private static final ConquestAEtherScreen aetherScreen = new ConquestAEtherScreen();
|
private static final ConquestAEtherScreen aetherScreen = new ConquestAEtherScreen();
|
||||||
private static final ConquestCommandersScreen commandersScreen = new ConquestCommandersScreen();
|
private static final ConquestCommandersScreen commandersScreen = new ConquestCommandersScreen();
|
||||||
|
private static final ConquestPlaneswalkersScreen planeswalkersScreen = new ConquestPlaneswalkersScreen();
|
||||||
private static final ConquestCollectionScreen collectionScreen = new ConquestCollectionScreen();
|
private static final ConquestCollectionScreen collectionScreen = new ConquestCollectionScreen();
|
||||||
private static final ConquestPlaneswalkScreen planeswalkScreen = new ConquestPlaneswalkScreen();
|
private static final ConquestPlaneswalkScreen planeswalkScreen = new ConquestPlaneswalkScreen();
|
||||||
private static final ConquestPrefsScreen prefsScreen = new ConquestPrefsScreen();
|
private static final ConquestPrefsScreen prefsScreen = new ConquestPrefsScreen();
|
||||||
@@ -47,6 +48,12 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
Forge.openScreen(commandersScreen);
|
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() {
|
private static final FMenuItem collectionItem = new FMenuItem("Collection", FSkinImage.SPELLBOOK, new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
@@ -125,6 +132,7 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
addItem(multiverseItem); multiverseItem.setSelected(currentScreen == multiverseScreen);
|
addItem(multiverseItem); multiverseItem.setSelected(currentScreen == multiverseScreen);
|
||||||
addItem(aetherItem); aetherItem.setSelected(currentScreen == aetherScreen);
|
addItem(aetherItem); aetherItem.setSelected(currentScreen == aetherScreen);
|
||||||
addItem(commandersItem); commandersItem.setSelected(currentScreen == commandersScreen);
|
addItem(commandersItem); commandersItem.setSelected(currentScreen == commandersScreen);
|
||||||
|
addItem(planeswalkersItem); planeswalkersItem.setSelected(currentScreen == planeswalkersScreen);
|
||||||
addItem(collectionItem); collectionItem.setSelected(currentScreen == collectionScreen);
|
addItem(collectionItem); collectionItem.setSelected(currentScreen == collectionScreen);
|
||||||
addItem(planeswalkItem); planeswalkItem.setSelected(currentScreen == planeswalkScreen);
|
addItem(planeswalkItem); planeswalkItem.setSelected(currentScreen == planeswalkScreen);
|
||||||
addItem(prefsItem); prefsItem.setSelected(currentScreen == prefsScreen);
|
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> {
|
public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenModel> {
|
||||||
private static final float PADDING = FOptionPane.PADDING;
|
private static final float PADDING = FOptionPane.PADDING;
|
||||||
private static final float CARD_PREVIEW_RATIO = 0.5f;
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public NewConquestScreen() {
|
public NewConquestScreen() {
|
||||||
@@ -131,7 +130,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
float x = PADDING;
|
float x = PADDING;
|
||||||
float y = PADDING;
|
float y = PADDING;
|
||||||
float w = width - 2 * 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;
|
y += cardDisplay.getHeight() + PADDING;
|
||||||
lstCommanders.setBounds(x, y, w, height - y - PADDING);
|
lstCommanders.setBounds(x, y, w, height - y - PADDING);
|
||||||
}
|
}
|
||||||
@@ -190,7 +189,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
float x = PADDING;
|
float x = PADDING;
|
||||||
float y = PADDING;
|
float y = PADDING;
|
||||||
float w = width - 2 * 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;
|
y += tokenDisplay.getHeight() + PADDING;
|
||||||
lstPlaneswalkers.setBounds(x, y, w, height - y - PADDING);
|
lstPlaneswalkers.setBounds(x, y, w, height - y - PADDING);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,17 @@ public final class ConquestData {
|
|||||||
return planeswalkerToken;
|
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() {
|
public ConquestPlane getCurrentPlane() {
|
||||||
return currentLocation.getPlane();
|
return currentLocation.getPlane();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user