mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Add launch screen for Planar Conquest events
Support remembering which commander you last selected for an event
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user