diff --git a/.gitattributes b/.gitattributes index 2a67b0e9df2..ad69e25c24f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java new file mode 100644 index 00000000000..720b599066b --- /dev/null +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java @@ -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(); + } + }); + } +} diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java index cea50e8c760..1d5a45bafec 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java @@ -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 { diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java index 074b5781445..51534ac1739 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java @@ -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 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); diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java b/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java index dbb5d0f24c3..9998cc15375 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java @@ -33,6 +33,7 @@ public abstract class ConquestEvent { protected abstract Deck buildOpponentDeck(); public abstract void addVariants(Set variants); + public abstract String getEventName(); public abstract String getOpponentName(); public abstract String getAvatarImageKey(); diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java b/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java index 8948d177727..bd495161d67 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java @@ -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();