mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Create drafting process screen and prevent leaving it without user being prompted
This commit is contained in:
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -1164,7 +1164,11 @@ forge-gui-mobile/src/forge/screens/SplashScreen.java -text
|
|||||||
forge-gui-mobile/src/forge/screens/TabPageScreen.java -text
|
forge-gui-mobile/src/forge/screens/TabPageScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java -text
|
forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java -text
|
||||||
forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java -text
|
forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/draft/CurrentPackPage.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/draft/DraftDeckPage.java -text
|
||||||
forge-gui-mobile/src/forge/screens/draft/DraftScreen.java -text
|
forge-gui-mobile/src/forge/screens/draft/DraftScreen.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/draft/DraftSideboardPage.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/draft/DraftingProcessScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/gauntlet/GauntletScreen.java -text
|
forge-gui-mobile/src/forge/screens/gauntlet/GauntletScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/home/HomeScreen.java -text
|
forge-gui-mobile/src/forge/screens/home/HomeScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/match/FControl.java -text
|
forge-gui-mobile/src/forge/screens/match/FControl.java -text
|
||||||
|
|||||||
@@ -145,11 +145,15 @@ public class Forge implements ApplicationListener {
|
|||||||
exit(); //prompt to exit if attempting to go back from home screen
|
exit(); //prompt to exit if attempting to go back from home screen
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!currentScreen.onClose(true)) {
|
currentScreen.onClose(new Callback<Boolean>() {
|
||||||
return;
|
@Override
|
||||||
}
|
public void run(Boolean result) {
|
||||||
screens.pop();
|
if (result) {
|
||||||
setCurrentScreen(screens.lastElement());
|
screens.pop();
|
||||||
|
setCurrentScreen(screens.lastElement());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void exit() {
|
public static void exit() {
|
||||||
@@ -163,13 +167,24 @@ public class Forge implements ApplicationListener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void openScreen(FScreen screen0) {
|
public static void openScreen(final FScreen screen0) {
|
||||||
if (currentScreen == screen0) { return; }
|
if (currentScreen == screen0) { return; }
|
||||||
if (currentScreen != null && !currentScreen.onSwitchAway()) {
|
|
||||||
|
if (currentScreen == null) {
|
||||||
|
screens.push(screen0);
|
||||||
|
setCurrentScreen(screen0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
screens.push(screen0);
|
|
||||||
setCurrentScreen(screen0);
|
currentScreen.onSwitchAway(new Callback<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void run(Boolean result) {
|
||||||
|
if (result) {
|
||||||
|
screens.push(screen0);
|
||||||
|
setCurrentScreen(screen0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FScreen getCurrentScreen() {
|
public static FScreen getCurrentScreen() {
|
||||||
@@ -256,7 +271,7 @@ public class Forge implements ApplicationListener {
|
|||||||
overlay.hide();
|
overlay.hide();
|
||||||
overlay = FOverlay.getTopOverlay();
|
overlay = FOverlay.getTopOverlay();
|
||||||
}
|
}
|
||||||
currentScreen.onClose(false);
|
currentScreen.onClose(null);
|
||||||
currentScreen = null;
|
currentScreen = null;
|
||||||
}
|
}
|
||||||
screens.clear();
|
screens.clear();
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import forge.toolbox.FContainer;
|
|||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
|
import forge.util.Callback;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
public abstract class FScreen extends FContainer {
|
public abstract class FScreen extends FContainer {
|
||||||
@@ -45,12 +46,14 @@ public abstract class FScreen extends FContainer {
|
|||||||
public void onActivate() {
|
public void onActivate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onSwitchAway() {
|
public void onSwitchAway(Callback<Boolean> canSwitchCallback) {
|
||||||
return true;
|
canSwitchCallback.run(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onClose(boolean canCancel) {
|
public void onClose(Callback<Boolean> canCloseCallback) {
|
||||||
return true;
|
if (canCloseCallback != null) { //will be null if app exited
|
||||||
|
canCloseCallback.run(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showMenu() {
|
public void showMenu() {
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package forge.screens.draft;
|
||||||
|
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.limited.BoosterDraft;
|
||||||
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
|
|
||||||
|
public class CurrentPackPage extends TabPage {
|
||||||
|
private final BoosterDraft draft;
|
||||||
|
|
||||||
|
protected CurrentPackPage(BoosterDraft draft0) {
|
||||||
|
super("Pack 1", FSkinImage.PACK);
|
||||||
|
|
||||||
|
draft = draft0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float width, float height) {
|
||||||
|
}
|
||||||
|
}
|
||||||
19
forge-gui-mobile/src/forge/screens/draft/DraftDeckPage.java
Normal file
19
forge-gui-mobile/src/forge/screens/draft/DraftDeckPage.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package forge.screens.draft;
|
||||||
|
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.limited.BoosterDraft;
|
||||||
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
|
|
||||||
|
public class DraftDeckPage extends TabPage {
|
||||||
|
private final BoosterDraft draft;
|
||||||
|
|
||||||
|
protected DraftDeckPage(BoosterDraft draft0) {
|
||||||
|
super("Deck", FSkinImage.DECKLIST);
|
||||||
|
|
||||||
|
draft = draft0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float width, float height) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
package forge.screens.draft;
|
package forge.screens.draft;
|
||||||
|
|
||||||
|
import forge.FThreads;
|
||||||
|
import forge.Forge;
|
||||||
import forge.GuiBase;
|
import forge.GuiBase;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.LaunchScreen;
|
import forge.screens.LaunchScreen;
|
||||||
@@ -52,8 +54,15 @@ public class DraftScreen extends LaunchScreen {
|
|||||||
final LimitedPoolType poolType = SGuiChoose.oneOrNone("Choose Draft Format", LimitedPoolType.values());
|
final LimitedPoolType poolType = SGuiChoose.oneOrNone("Choose Draft Format", LimitedPoolType.values());
|
||||||
if (poolType == null) { return; }
|
if (poolType == null) { return; }
|
||||||
|
|
||||||
BoosterDraft draft = BoosterDraft.createDraft(poolType);
|
final BoosterDraft draft = BoosterDraft.createDraft(poolType);
|
||||||
if (draft == null) { return; }
|
if (draft == null) { return; }
|
||||||
|
|
||||||
|
FThreads.invokeInEdtLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Forge.openScreen(new DraftingProcessScreen(draft));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package forge.screens.draft;
|
||||||
|
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.limited.BoosterDraft;
|
||||||
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
|
|
||||||
|
public class DraftSideboardPage extends TabPage {
|
||||||
|
private final BoosterDraft draft;
|
||||||
|
|
||||||
|
protected DraftSideboardPage(BoosterDraft draft0) {
|
||||||
|
super("Sideboard", FSkinImage.FLASHBACK);
|
||||||
|
|
||||||
|
draft = draft0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float width, float height) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package forge.screens.draft;
|
||||||
|
|
||||||
|
import forge.limited.BoosterDraft;
|
||||||
|
import forge.screens.TabPageScreen;
|
||||||
|
import forge.toolbox.FOptionPane;
|
||||||
|
import forge.util.Callback;
|
||||||
|
|
||||||
|
public class DraftingProcessScreen extends TabPageScreen {
|
||||||
|
public DraftingProcessScreen(BoosterDraft draft0) {
|
||||||
|
super(new TabPage[] {
|
||||||
|
new CurrentPackPage(draft0),
|
||||||
|
new DraftDeckPage(draft0),
|
||||||
|
new DraftSideboardPage(draft0)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClose(Callback<Boolean> canCloseCallback) {
|
||||||
|
if (canCloseCallback == null) { return; }
|
||||||
|
FOptionPane.showConfirmDialog("This will end the current draft and you will not be able to resume.\n\n" +
|
||||||
|
"Leave anyway?", "Leave Draft?", "Leave", "Cancel", false, canCloseCallback);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,6 +36,7 @@ import forge.game.zone.ZoneType;
|
|||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
import forge.toolbox.FScrollPane;
|
import forge.toolbox.FScrollPane;
|
||||||
|
import forge.util.Callback;
|
||||||
|
|
||||||
public class MatchScreen extends FScreen {
|
public class MatchScreen extends FScreen {
|
||||||
public static FSkinColor BORDER_COLOR = FSkinColor.get(Colors.CLR_BORDERS);
|
public static FSkinColor BORDER_COLOR = FSkinColor.get(Colors.CLR_BORDERS);
|
||||||
@@ -117,9 +118,9 @@ public class MatchScreen extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onClose(boolean canCancel) {
|
public void onClose(Callback<Boolean> canCloseCallback) {
|
||||||
FControl.writeMatchPreferences();
|
FControl.writeMatchPreferences();
|
||||||
return true;
|
super.onClose(canCloseCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user