mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
- Fixed a crash in mobile Forge when trying to display the deck conformance error message outside of the Edt thread.
This commit is contained in:
@@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
|||||||
import forge.FThreads;
|
import forge.FThreads;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.GuiBase;
|
import forge.GuiBase;
|
||||||
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.LaunchScreen;
|
import forge.screens.LaunchScreen;
|
||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
@@ -104,14 +105,6 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
|
||||||
String errorMessage = GameType.Draft.getDeckFormat().getDeckConformanceProblem(humanDeck.getDeck());
|
|
||||||
if (errorMessage != null) {
|
|
||||||
FOptionPane.showErrorDialog("Your deck " + errorMessage + "\nPlease edit or choose a different deck.", "Invalid Deck");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: if booster draft tournaments are supported in the future, add the possibility to choose them here
|
// TODO: if booster draft tournaments are supported in the future, add the possibility to choose them here
|
||||||
final boolean gauntlet = cbMode.getSelectedItem().equals("Gauntlet");
|
final boolean gauntlet = cbMode.getSelectedItem().equals("Gauntlet");
|
||||||
|
|
||||||
@@ -125,6 +118,10 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LoadingOverlay.show("Loading new game...", new Runnable() {
|
LoadingOverlay.show("Loading new game...", new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -150,6 +147,10 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
LoadingOverlay.show("Loading new game...", new Runnable() {
|
LoadingOverlay.show("Loading new game...", new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
final List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||||
final RegisteredPlayer human = new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
final RegisteredPlayer human = new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
||||||
starter.add(human);
|
starter.add(human);
|
||||||
@@ -169,4 +170,15 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkDeckLegality(DeckProxy humanDeck) {
|
||||||
|
if (FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
||||||
|
String errorMessage = GameType.Draft.getDeckFormat().getDeckConformanceProblem(humanDeck.getDeck());
|
||||||
|
if (errorMessage != null) {
|
||||||
|
FOptionPane.showErrorDialog("Your deck " + errorMessage + "\nPlease edit or choose a different deck.", "Invalid Deck");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import forge.itemmanager.filters.ItemFilter;
|
|||||||
import forge.match.HostedMatch;
|
import forge.match.HostedMatch;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.player.GamePlayerUtil;
|
import forge.player.GamePlayerUtil;
|
||||||
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.LaunchScreen;
|
import forge.screens.LaunchScreen;
|
||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
@@ -103,20 +104,16 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
|
||||||
String errorMessage = GameType.Sealed.getDeckFormat().getDeckConformanceProblem(humanDeck.getDeck());
|
|
||||||
if (errorMessage != null) {
|
|
||||||
FOptionPane.showErrorDialog("Your deck " + errorMessage + "\nPlease edit or choose a different deck.", "Invalid Deck");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final boolean gauntlet = cbMode.getSelectedItem().equals("Gauntlet");
|
final boolean gauntlet = cbMode.getSelectedItem().equals("Gauntlet");
|
||||||
|
|
||||||
if (gauntlet) {
|
if (gauntlet) {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LoadingOverlay.show("Loading new game...", new Runnable() {
|
LoadingOverlay.show("Loading new game...", new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -140,6 +137,10 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LoadingOverlay.show("Loading new game...", new Runnable() {
|
LoadingOverlay.show("Loading new game...", new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -162,4 +163,15 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkDeckLegality(DeckProxy humanDeck) {
|
||||||
|
if (FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
||||||
|
String errorMessage = GameType.Sealed.getDeckFormat().getDeckConformanceProblem(humanDeck.getDeck());
|
||||||
|
if (errorMessage != null) {
|
||||||
|
FOptionPane.showErrorDialog("Your deck " + errorMessage + "\nPlease edit or choose a different deck.", "Invalid Deck");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user