Add launch screen for Planar Conquest events

Support remembering which commander you last selected for an event
This commit is contained in:
drdev
2016-01-07 05:08:14 +00:00
parent ff99e36816
commit 103e2be7b2
6 changed files with 79 additions and 27 deletions

1
.gitattributes vendored
View File

@@ -1342,6 +1342,7 @@ forge-gui-mobile/src/forge/screens/planarconquest/ConquestAEtherScreen.java -tex
forge-gui-mobile/src/forge/screens/planarconquest/ConquestCollectionScreen.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestDeckEditor.java -text
forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java -text
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

View File

@@ -0,0 +1,59 @@
package forge.screens.planarconquest;
import forge.Forge;
import forge.model.FModel;
import forge.planarconquest.ConquestEvent;
import forge.planarconquest.ConquestController.GameRunner;
import forge.planarconquest.ConquestEvent.IConquestEventLauncher;
import forge.screens.LaunchScreen;
import forge.screens.LoadingOverlay;
import forge.toolbox.FOptionPane;
import forge.util.ThreadUtil;
public class ConquestEventScreen extends LaunchScreen implements IConquestEventLauncher {
protected static final float PADDING = FOptionPane.PADDING;
private final ConquestEvent event;
private boolean launchedEvent;
public ConquestEventScreen(ConquestEvent event0) {
super(event0.getEventName());
event = event0;
}
@Override
public void onActivate() {
if (launchedEvent) {
//when returning to this screen from launched event, close it immediately
Forge.back();
}
}
@Override
protected void doLayoutAboveBtnStart(float startY, float width, float height) {
}
@Override
protected void startMatch() {
if (launchedEvent) { return; } //avoid launching event more than once
launchedEvent = true;
ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
FModel.getConquest().launchEvent(ConquestEventScreen.this, FModel.getConquest().getModel().getSelectedCommander(), event);
}
});
}
@Override
public void startGame(final GameRunner gameRunner) {
LoadingOverlay.show("Loading new game...", new Runnable() {
@Override
public void run() {
gameRunner.finishStartingGame();
}
});
}
}

View File

@@ -4,8 +4,7 @@ import java.util.List;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector2;
import com.google.common.collect.Iterables;
import forge.Forge;
import forge.Graphics;
import forge.animation.ForgeAnimation;
import forge.assets.FImage;
@@ -15,23 +14,17 @@ import forge.card.CardDetailUtil;
import forge.card.CardRenderer;
import forge.card.CardDetailUtil.DetailColors;
import forge.model.FModel;
import forge.planarconquest.ConquestCommander;
import forge.planarconquest.ConquestController.GameRunner;
import forge.planarconquest.ConquestData;
import forge.planarconquest.ConquestEvent;
import forge.planarconquest.ConquestEvent.IConquestEventLauncher;
import forge.planarconquest.ConquestLocation;
import forge.planarconquest.ConquestPlane;
import forge.planarconquest.ConquestPlane.Region;
import forge.planarconquest.ConquestPlaneData;
import forge.planarconquest.ConquestRecord;
import forge.screens.FScreen;
import forge.screens.LoadingOverlay;
import forge.toolbox.FScrollPane;
import forge.util.ThreadUtil;
import forge.util.collect.FCollectionView;
public class ConquestMultiverseScreen extends FScreen implements IConquestEventLauncher {
public class ConquestMultiverseScreen extends FScreen {
private static final Color FOG_OF_WAR_COLOR = FSkinColor.alphaColor(Color.BLACK, 0.75f);
private static final Color UNCONQUERED_COLOR = FSkinColor.alphaColor(Color.BLACK, 0.1f);
@@ -63,24 +56,7 @@ public class ConquestMultiverseScreen extends FScreen implements IConquestEventL
}
private void launchEvent() {
final ConquestCommander commander = Iterables.getFirst(model.getCommanders(), null);
final ConquestEvent event = model.getCurrentLocation().getEvent();
ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
FModel.getConquest().launchEvent(ConquestMultiverseScreen.this, commander, event);
}
});
}
@Override
public void startGame(final GameRunner gameRunner) {
LoadingOverlay.show("Loading new game...", new Runnable() {
@Override
public void run() {
gameRunner.finishStartingGame();
}
});
Forge.openScreen(new ConquestEventScreen(model.getCurrentLocation().getEvent()));
}
private class PlaneGrid extends FScrollPane {

View File

@@ -52,6 +52,7 @@ public final class ConquestData {
private PaperCard planeswalker;
private ISkinImage planeswalkerToken;
private ConquestLocation currentLocation;
private int selectedCommanderIndex;
private int aetherShards;
private final File directory;
@@ -93,6 +94,7 @@ public final class ConquestData {
setPlaneswalker(xml.read("planeswalker", cardDb));
aetherShards = xml.read("aetherShards", aetherShards);
currentLocation = xml.read("currentLocation", ConquestLocation.class);
selectedCommanderIndex = xml.read("selectedCommanderIndex", selectedCommanderIndex);
xml.read("unlockedCards", unlockedCards, cardDb);
xml.read("newCards", newCards, cardDb);
xml.read("commanders", commanders, ConquestCommander.class);
@@ -148,6 +150,13 @@ public final class ConquestData {
return getOrCreatePlaneData(getCurrentPlane());
}
public ConquestCommander getSelectedCommander() {
return commanders.get(selectedCommanderIndex);
}
public void setSelectedCommanderIndex(int index0) {
selectedCommanderIndex = index0;
}
public Iterable<PaperCard> getUnlockedCards() {
return unlockedCards;
}
@@ -220,6 +229,7 @@ public final class ConquestData {
xml.write("planeswalker", planeswalker);
xml.write("aetherShards", aetherShards);
xml.write("currentLocation", currentLocation);
xml.write("selectedCommanderIndex", selectedCommanderIndex);
xml.write("unlockedCards", unlockedCards);
xml.write("newCards", newCards);
xml.write("commanders", commanders);

View File

@@ -33,6 +33,7 @@ public abstract class ConquestEvent {
protected abstract Deck buildOpponentDeck();
public abstract void addVariants(Set<GameType> variants);
public abstract String getEventName();
public abstract String getOpponentName();
public abstract String getAvatarImageKey();

View File

@@ -123,6 +123,11 @@ public class ConquestLocation implements IXmlWritable {
return ConquestUtil.generateDeck(commander, getRegion().getCardPool(), true);
}
@Override
public String getEventName() {
return commander.getName();
}
@Override
public String getOpponentName() {
return commander.getName();