diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestChaosWheel.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestChaosWheel.java index 255f391276c..5ed53cc0782 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestChaosWheel.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestChaosWheel.java @@ -13,9 +13,14 @@ import forge.util.PhysicsObject; import forge.util.ThreadUtil; public class ConquestChaosWheel extends FOverlay { + public static void spin() { + ConquestChaosWheel wheel = new ConquestChaosWheel(); + wheel.show(); + } + private final WheelSpinAnimation animation = new WheelSpinAnimation(); - public ConquestChaosWheel() { + private ConquestChaosWheel() { } @Override diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java index 700f601541a..d2dd6f27427 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestEventScreen.java @@ -6,23 +6,27 @@ import forge.planarconquest.ConquestEvent; import forge.screens.LaunchScreen; import forge.screens.LoadingOverlay; import forge.toolbox.FOptionPane; +import forge.util.Callback; public class ConquestEventScreen extends LaunchScreen { protected static final float PADDING = FOptionPane.PADDING; private final ConquestEvent event; + private final Callback callback; private boolean launchedEvent; - public ConquestEventScreen(ConquestEvent event0) { + public ConquestEventScreen(ConquestEvent event0, Callback callback0) { super(event0.getEventName()); event = event0; + callback = callback0; } @Override public void onActivate() { if (launchedEvent) { - //when returning to this screen from launched event, close it immediately + //when returning to this screen from launched event, close it immediately and call callback Forge.back(); + callback.run(event); } } diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java index c2321d44243..5ff4d7e307b 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java @@ -17,12 +17,14 @@ import forge.card.CardDetailUtil.DetailColors; import forge.model.FModel; import forge.planarconquest.ConquestData; import forge.planarconquest.ConquestEvent.ConquestEventRecord; +import forge.planarconquest.ConquestEvent; import forge.planarconquest.ConquestLocation; import forge.planarconquest.ConquestPlane; import forge.planarconquest.ConquestPlane.Region; import forge.planarconquest.ConquestPlaneData; import forge.screens.FScreen; import forge.toolbox.FScrollPane; +import forge.util.Callback; import forge.util.collect.FCollectionView; public class ConquestMultiverseScreen extends FScreen { @@ -57,7 +59,15 @@ public class ConquestMultiverseScreen extends FScreen { } private void launchEvent() { - Forge.openScreen(new ConquestEventScreen(model.getCurrentLocation().getEvent())); + Forge.openScreen(new ConquestEventScreen(model.getCurrentLocation().createEvent(), new Callback() { + @Override + public void run(ConquestEvent event) { + if (event.wasConquered()) { + //spin Chaos Wheel if event was conquered + ConquestChaosWheel.spin(); + } + } + })); } 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 012a9cd6281..ab5c0ccf938 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java @@ -187,6 +187,7 @@ public final class ConquestData { public void addWin(ConquestEvent event) { getOrCreatePlaneData(event.getLocation().getPlane()).addWin(event); getSelectedCommander().getRecord().addWin(); + event.setConquered(true); } public void addLoss(ConquestEvent event) { diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java b/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java index cc23bfa550f..126a216b2d8 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java @@ -12,6 +12,7 @@ public abstract class ConquestEvent { private final ConquestLocation location; private final int tier; private Deck opponentDeck; + private boolean conquered; public ConquestEvent(ConquestLocation location0, int tier0) { location = location0; @@ -33,6 +34,13 @@ public abstract class ConquestEvent { return opponentDeck; } + public boolean wasConquered() { + return conquered; + } + public void setConquered(boolean conquered0) { + conquered = conquered0; + } + protected abstract Deck buildOpponentDeck(); public abstract void addVariants(Set variants); public abstract String getEventName(); diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java b/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java index ed8a681a867..f297254c5c5 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java @@ -113,7 +113,7 @@ public class ConquestLocation implements IXmlWritable { catch (Exception e) { return false; } } - public ConquestEvent getEvent() { + public ConquestEvent createEvent() { //TODO: Make this pull from predefined events return new ConquestEvent(this, 0) { private final PaperCard commander = Aggregates.random(getRegion().getCommanders());