mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 09:48:02 +00:00
@@ -639,14 +639,11 @@ public class Forge implements ApplicationListener {
|
|||||||
return;
|
return;
|
||||||
} //don't allow exiting multiple times
|
} //don't allow exiting multiple times
|
||||||
|
|
||||||
Callback<Boolean> callback = new Callback<Boolean>() {
|
Callback<Boolean> callback = result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
exited = true;
|
exited = true;
|
||||||
exitAnimation(true);
|
exitAnimation(true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -668,14 +665,11 @@ public class Forge implements ApplicationListener {
|
|||||||
options.add(getLocalizer().getMessage("lblExit"));
|
options.add(getLocalizer().getMessage("lblExit"));
|
||||||
options.add(getLocalizer().getMessage("lblCancel"));
|
options.add(getLocalizer().getMessage("lblCancel"));
|
||||||
|
|
||||||
Callback<Integer> callback = new Callback<Integer>() {
|
Callback<Integer> callback = result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
exited = true;
|
exited = true;
|
||||||
exitAnimation(false);
|
exitAnimation(false);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (silent) {
|
if (silent) {
|
||||||
@@ -701,9 +695,7 @@ public class Forge implements ApplicationListener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
currentScreen.onSwitchAway(new Callback<Boolean>() {
|
currentScreen.onSwitchAway(result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
if (replaceBackScreen && !Dscreens.isEmpty()) {
|
if (replaceBackScreen && !Dscreens.isEmpty()) {
|
||||||
Dscreens.removeFirst();
|
Dscreens.removeFirst();
|
||||||
@@ -725,7 +717,6 @@ public class Forge implements ApplicationListener {
|
|||||||
deltaTime = 0f;
|
deltaTime = 0f;
|
||||||
hueFragTime = 0f;
|
hueFragTime = 0f;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -295,14 +295,11 @@ public class AdventureDeckEditor extends FDeckEditor {
|
|||||||
if(toSell.isEmpty())
|
if(toSell.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblSellAllConfirm", toSell.countAll(), value), Forge.getLocalizer().getMessage("lblSellCurrentFilters"), Forge.getLocalizer().getMessage("lblSell"), Forge.getLocalizer().getMessage("lblCancel"), false, new Callback<>() {
|
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblSellAllConfirm", toSell.countAll(), value), Forge.getLocalizer().getMessage("lblSellCurrentFilters"), Forge.getLocalizer().getMessage("lblSell"), Forge.getLocalizer().getMessage("lblCancel"), false, result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Current.player().doBulkSell(toSell);
|
Current.player().doBulkSell(toSell);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -423,13 +420,10 @@ public class AdventureDeckEditor extends FDeckEditor {
|
|||||||
if(toMove.isEmpty())
|
if(toMove.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblAutoSellCurrentFiltersConfirm", toMove.countAll()), Forge.getLocalizer().getMessage("lblAutoSellCurrentFilters"), Forge.getLocalizer().getMessage("lblAutoSell"), Forge.getLocalizer().getMessage("lblCancel"), false, new Callback<>() {
|
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblAutoSellCurrentFiltersConfirm", toMove.countAll()), Forge.getLocalizer().getMessage("lblAutoSellCurrentFilters"), Forge.getLocalizer().getMessage("lblAutoSell"), Forge.getLocalizer().getMessage("lblCancel"), false, result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
moveCards(toMove, autoSellPage);
|
moveCards(toMove, autoSellPage);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -823,12 +817,7 @@ public class AdventureDeckEditor extends FDeckEditor {
|
|||||||
|
|
||||||
Localizer localizer = Forge.getLocalizer();
|
Localizer localizer = Forge.getLocalizer();
|
||||||
if (isDrafting()) {
|
if (isDrafting()) {
|
||||||
FOptionPane.showConfirmDialog(localizer.getMessage("lblEndAdventureEventConfirm"), localizer.getMessage("lblLeaveDraft"), localizer.getMessage("lblLeave"), localizer.getMessage("lblCancel"), false, new Callback<>() {
|
FOptionPane.showConfirmDialog(localizer.getMessage("lblEndAdventureEventConfirm"), localizer.getMessage("lblLeaveDraft"), localizer.getMessage("lblLeave"), localizer.getMessage("lblCancel"), false, result -> resolveClose(canCloseCallback, result == true));
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
resolveClose(canCloseCallback, result == true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if(getEditorConfig().isLimited() || getDeck().isEmpty()) {
|
else if(getEditorConfig().isLimited() || getDeck().isEmpty()) {
|
||||||
@@ -840,12 +829,7 @@ public class AdventureDeckEditor extends FDeckEditor {
|
|||||||
if (deckError != null) {
|
if (deckError != null) {
|
||||||
//Allow the player to close the editor with an invalid deck, but warn them that cards may be swapped out.
|
//Allow the player to close the editor with an invalid deck, but warn them that cards may be swapped out.
|
||||||
String warning = localizer.getMessage("lblAdventureDeckError", deckError);
|
String warning = localizer.getMessage("lblAdventureDeckError", deckError);
|
||||||
FOptionPane.showConfirmDialog(warning, localizer.getMessage("lblInvalidDeck"), false, new Callback<>() {
|
FOptionPane.showConfirmDialog(warning, localizer.getMessage("lblInvalidDeck"), false, result -> resolveClose(canCloseCallback, result == true));
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
resolveClose(canCloseCallback, result == true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import forge.sound.MusicPlaylist;
|
|||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.trackable.TrackableCollection;
|
import forge.trackable.TrackableCollection;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.Callback;
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -153,12 +152,9 @@ public class DuelScene extends ForgeScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private FOptionPane createFOption(String message, String title, FBufferedImage icon, Runnable runnable) {
|
private FOptionPane createFOption(String message, String title, FBufferedImage icon, Runnable runnable) {
|
||||||
return new FOptionPane(message, null, title, icon, null, ImmutableList.of(Forge.getLocalizer().getMessage("lblOK")), -1, new Callback<Integer>() {
|
return new FOptionPane(message, null, title, icon, null, ImmutableList.of(Forge.getLocalizer().getMessage("lblOK")), -1, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (runnable != null)
|
if (runnable != null)
|
||||||
runnable.run();
|
runnable.run();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import forge.adventure.world.WorldSave;
|
|||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.gui.FThreads;
|
import forge.gui.FThreads;
|
||||||
import forge.screens.TransitionScreen;
|
import forge.screens.TransitionScreen;
|
||||||
import forge.util.Callback;
|
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -124,26 +123,17 @@ public class EventScene extends MenuScene implements IAfterMatch {
|
|||||||
//todo: add translation
|
//todo: add translation
|
||||||
decline.name = "Do not enter event";
|
decline.name = "Do not enter event";
|
||||||
|
|
||||||
enterWithCoin.callback = new Callback<Boolean>() {
|
enterWithCoin.callback = (result) -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
currentEvent.eventStatus = AdventureEventController.EventStatus.Entered;
|
currentEvent.eventStatus = AdventureEventController.EventStatus.Entered;
|
||||||
refresh();
|
refresh();
|
||||||
}
|
|
||||||
};
|
};
|
||||||
enterWithShards.callback = new Callback<Boolean>() {
|
enterWithShards.callback = (result) -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
currentEvent.eventStatus = AdventureEventController.EventStatus.Entered;
|
currentEvent.eventStatus = AdventureEventController.EventStatus.Entered;
|
||||||
refresh();
|
refresh();
|
||||||
}
|
|
||||||
};
|
};
|
||||||
enterWithGold.callback = new Callback<Boolean>() {
|
enterWithGold.callback = (result) -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
currentEvent.eventStatus = AdventureEventController.EventStatus.Entered;
|
currentEvent.eventStatus = AdventureEventController.EventStatus.Entered;
|
||||||
refresh();
|
refresh();
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
introDialog.options = new DialogData[4];
|
introDialog.options = new DialogData[4];
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import forge.localinstance.properties.ForgePreferences;
|
|||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Callback;
|
|
||||||
import forge.util.ItemPool;
|
import forge.util.ItemPool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,14 +64,11 @@ public class ShopScene extends ForgeScene {
|
|||||||
return;
|
return;
|
||||||
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblSellAllConfirm", cards, profit),
|
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblSellAllConfirm", cards, profit),
|
||||||
Forge.getLocalizer().getMessage("lblAutoSellable"), Forge.getLocalizer().getMessage("lblSell"),
|
Forge.getLocalizer().getMessage("lblAutoSellable"), Forge.getLocalizer().getMessage("lblSell"),
|
||||||
Forge.getLocalizer().getMessage("lblCancel"), false, new Callback<Boolean>() {
|
Forge.getLocalizer().getMessage("lblCancel"), false, result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
doAutosell();
|
doAutosell();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
doAutosell();
|
doAutosell();
|
||||||
|
|||||||
@@ -34,16 +34,13 @@ public class GameEntityPicker extends TabPageScreen<GameEntityPicker> {
|
|||||||
setHeight(FOptionPane.getMaxDisplayObjHeight());
|
setHeight(FOptionPane.getMaxDisplayObjHeight());
|
||||||
|
|
||||||
optionPane = new FOptionPane(null, null, title, null, this,
|
optionPane = new FOptionPane(null, null, title, null, this,
|
||||||
isOptional ? ImmutableList.of(Forge.getLocalizer().getMessage("lblOK"), Forge.getLocalizer().getMessage("lblCancel")) : ImmutableList.of(Forge.getLocalizer().getMessage("lblOK")), 0, new Callback<Integer>() {
|
isOptional ? ImmutableList.of(Forge.getLocalizer().getMessage("lblOK"), Forge.getLocalizer().getMessage("lblCancel")) : ImmutableList.of(Forge.getLocalizer().getMessage("lblOK")), 0, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
callback.run(((PickerTab) tabPages.get(0)).list.getSelectedItem());
|
callback.run(((PickerTab) tabPages.get(0)).list.getSelectedItem());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
callback.run(null);
|
callback.run(null);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}) {
|
}) {
|
||||||
@Override
|
@Override
|
||||||
protected boolean padAboveAndBelow() {
|
protected boolean padAboveAndBelow() {
|
||||||
|
|||||||
@@ -1421,9 +1421,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 1, 50, new Callback<Integer>() {
|
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 1, 50, numOpponents -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer numOpponents) {
|
|
||||||
if (numOpponents == null) { return; }
|
if (numOpponents == null) { return; }
|
||||||
List<DeckType> deckTypes = Lists.newArrayList(
|
List<DeckType> deckTypes = Lists.newArrayList(
|
||||||
DeckType.CUSTOM_DECK,
|
DeckType.CUSTOM_DECK,
|
||||||
@@ -1462,9 +1460,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ListChooser<DeckType> chooser = new ListChooser<>(
|
ListChooser<DeckType> chooser = new ListChooser<>(
|
||||||
Forge.getLocalizer().getMessage("lblChooseAllowedDeckTypeOpponents"), 0, deckTypes.size(), deckTypes, null, new Callback<List<DeckType>>() {
|
Forge.getLocalizer().getMessage("lblChooseAllowedDeckTypeOpponents"), 0, deckTypes.size(), deckTypes, null, allowedDeckTypes -> {
|
||||||
@Override
|
|
||||||
public void run(final List<DeckType> allowedDeckTypes) {
|
|
||||||
if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) {
|
if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1490,17 +1486,13 @@ public class FDeckChooser extends FScreen {
|
|||||||
gauntlet.startRound(players, humanPlayer);
|
gauntlet.startRound(players, humanPlayer);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
chooser.show(null, false); /*setting selectMax to true will select all available option*/
|
chooser.show(null, false); /*setting selectMax to true will select all available option*/
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void testVariantDeck(final Deck userDeck, final GameType variant) {
|
private void testVariantDeck(final Deck userDeck, final GameType variant) {
|
||||||
promptForDeck(Forge.getLocalizer().getMessage("lblSelectOpponentDeck"), variant, true, new Callback<Deck>() {
|
promptForDeck(Forge.getLocalizer().getMessage("lblSelectOpponentDeck"), variant, true, aiDeck -> {
|
||||||
@Override
|
|
||||||
public void run(final Deck aiDeck) {
|
|
||||||
if (aiDeck == null) { return; }
|
if (aiDeck == null) { return; }
|
||||||
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@@ -1521,7 +1513,6 @@ public class FDeckChooser extends FScreen {
|
|||||||
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
||||||
hostedMatch.startMatch(GameType.Constructed, appliedVariants, players, guiMap);
|
hostedMatch.startMatch(GameType.Constructed, appliedVariants, players, guiMap);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -547,9 +547,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
if (showAddExtraSectionOption()) {
|
if (showAddExtraSectionOption()) {
|
||||||
addItem(new FMenuItem(localizer.getMessage("lblAddDeckSection"), FSkinImage.CHAOS, e -> {
|
addItem(new FMenuItem(localizer.getMessage("lblAddDeckSection"), FSkinImage.CHAOS, e -> {
|
||||||
List<String> options = hiddenExtraSections.stream().map(DeckSection::getLocalizedName).collect(Collectors.toList());
|
List<String> options = hiddenExtraSections.stream().map(DeckSection::getLocalizedName).collect(Collectors.toList());
|
||||||
GuiChoose.oneOrNone(localizer.getMessage("lblAddDeckSectionSelect"), options, new Callback<>() {
|
GuiChoose.oneOrNone(localizer.getMessage("lblAddDeckSectionSelect"), options, result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
if (result == null || !options.contains(result))
|
if (result == null || !options.contains(result))
|
||||||
return;
|
return;
|
||||||
DeckSection newSection = hiddenExtraSections.get(options.indexOf(result));
|
DeckSection newSection = hiddenExtraSections.get(options.indexOf(result));
|
||||||
@@ -557,7 +555,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
filterCatalogForExtraSection(newSection);
|
filterCatalogForExtraSection(newSection);
|
||||||
getCatalogPage().scheduleRefresh();
|
getCatalogPage().scheduleRefresh();
|
||||||
setSelectedPage(getCatalogPage());
|
setSelectedPage(getCatalogPage());
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@@ -592,24 +589,16 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
if (allowSaveAs())
|
if (allowSaveAs())
|
||||||
addItem(new FMenuItem(localizer.getMessage("lblSaveAs"), Forge.hdbuttons ? FSkinImage.HDSAVEAS : FSkinImage.SAVEAS, e -> {
|
addItem(new FMenuItem(localizer.getMessage("lblSaveAs"), Forge.hdbuttons ? FSkinImage.HDSAVEAS : FSkinImage.SAVEAS, e -> {
|
||||||
String defaultName = deckController.getNextAvailableName();
|
String defaultName = deckController.getNextAvailableName();
|
||||||
FOptionPane.showInputDialog(localizer.getMessage("lblNameNewCopyDeck"), defaultName, new Callback<>() {
|
FOptionPane.showInputDialog(localizer.getMessage("lblNameNewCopyDeck"), defaultName, result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
if (!StringUtils.isEmpty(result)) {
|
if (!StringUtils.isEmpty(result)) {
|
||||||
deckController.saveAs(result);
|
deckController.saveAs(result);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
if (allowRename()) {
|
if (allowRename()) {
|
||||||
addItem(new FMenuItem(localizer.getMessage("lblRenameDeck"), Forge.hdbuttons ? FSkinImage.HDEDIT : FSkinImage.EDIT, e -> FOptionPane.showInputDialog(
|
addItem(new FMenuItem(localizer.getMessage("lblRenameDeck"), Forge.hdbuttons ? FSkinImage.HDEDIT : FSkinImage.EDIT, e -> FOptionPane.showInputDialog(
|
||||||
localizer.getMessage("lblNewNameDeck"), deck.getName(), new Callback<>() {
|
localizer.getMessage("lblNewNameDeck"), deck.getName(), deckController::rename))
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
deckController.rename(result);
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (allowDelete()) {
|
if (allowDelete()) {
|
||||||
@@ -618,14 +607,11 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
localizer.getMessage("lblDeleteDeck"),
|
localizer.getMessage("lblDeleteDeck"),
|
||||||
localizer.getMessage("lblDelete"),
|
localizer.getMessage("lblDelete"),
|
||||||
localizer.getMessage("lblCancel"), false,
|
localizer.getMessage("lblCancel"), false,
|
||||||
new Callback<>() {
|
result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
deckController.delete();
|
deckController.delete();
|
||||||
Forge.back();
|
Forge.back();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}))
|
}))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -649,12 +635,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
CardEdition defaultLandSet = allowedLandSets.get(0);
|
CardEdition defaultLandSet = allowedLandSets.get(0);
|
||||||
List<CardEdition> finalAllowedLandSets = allowedLandSets;
|
List<CardEdition> finalAllowedLandSets = allowedLandSets;
|
||||||
FThreads.invokeInEdtNowOrLater(() -> {
|
FThreads.invokeInEdtNowOrLater(() -> {
|
||||||
AddBasicLandsDialog dialog = new AddBasicLandsDialog(deck, defaultLandSet, new Callback<>() {
|
AddBasicLandsDialog dialog = new AddBasicLandsDialog(deck, defaultLandSet, this::addChosenBasicLands, editorConfig.hasInfiniteCardPool() ? null : finalAllowedLandSets); //Null allows any lands to be selected
|
||||||
@Override
|
|
||||||
public void run(CardPool landsToAdd) {
|
|
||||||
addChosenBasicLands(landsToAdd);
|
|
||||||
}
|
|
||||||
}, editorConfig.hasInfiniteCardPool() ? null : finalAllowedLandSets); //Null allows any lands to be selected
|
|
||||||
dialog.show();
|
dialog.show();
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -686,14 +667,11 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void showDevAddCardDialog() {
|
protected void showDevAddCardDialog() {
|
||||||
FOptionPane.showInputDialog(Forge.getLocalizer().getMessage("lblPromptCardRequest"), new Callback<>() {
|
FOptionPane.showInputDialog(Forge.getLocalizer().getMessage("lblPromptCardRequest"), result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
if(StringUtils.isBlank(result))
|
if(StringUtils.isBlank(result))
|
||||||
return;
|
return;
|
||||||
CardPool requested = CardPool.fromSingleCardRequest(result);
|
CardPool requested = CardPool.fromSingleCardRequest(result);
|
||||||
devAddCards(requested);
|
devAddCards(requested);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -924,16 +902,13 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
List<PaperCard> commanders = deck.getCommanders(); //use commander name as default deck name
|
List<PaperCard> commanders = deck.getCommanders(); //use commander name as default deck name
|
||||||
String initialInput = commanders.isEmpty() ? "New Deck" : Lang.joinHomogenous(commanders);
|
String initialInput = commanders.isEmpty() ? "New Deck" : Lang.joinHomogenous(commanders);
|
||||||
FThreads.invokeInEdtNowOrLater(() -> {
|
FThreads.invokeInEdtNowOrLater(() -> {
|
||||||
FOptionPane.showInputDialog(Forge.getLocalizer().getMessage("lblNameNewDeck"), initialInput, new Callback<>() {
|
FOptionPane.showInputDialog(Forge.getLocalizer().getMessage("lblNameNewDeck"), initialInput, result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
if (StringUtils.isEmpty(result)) { return; }
|
if (StringUtils.isEmpty(result)) { return; }
|
||||||
|
|
||||||
deckController.saveAs(result);
|
deckController.saveAs(result);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.run(true);
|
callback.run(true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@@ -979,9 +954,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FOptionPane.showOptionDialog(Forge.getLocalizer().getMessage("lblSaveChangesCurrentDeck"), "",
|
FOptionPane.showOptionDialog(Forge.getLocalizer().getMessage("lblSaveChangesCurrentDeck"), "",
|
||||||
FOptionPane.QUESTION_ICON, onCloseOptions, new Callback<>() {
|
FOptionPane.QUESTION_ICON, onCloseOptions, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
save(canCloseCallback);
|
save(canCloseCallback);
|
||||||
} else if (result == 1) {
|
} else if (result == 1) {
|
||||||
@@ -990,7 +963,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
} else {
|
} else {
|
||||||
canCloseCallback.run(false);
|
canCloseCallback.run(false);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1431,7 +1403,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
this.addMoveCardMenuItem(menu, source, destination, new MoveCardCallback(card, source, destination));
|
this.addMoveCardMenuItem(menu, source, destination, new MoveCardCallback(card, source, destination));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static class MoveCardCallback extends Callback<Integer> {
|
protected static class MoveCardCallback implements Callback<Integer> {
|
||||||
public final PaperCard card;
|
public final PaperCard card;
|
||||||
public final CardManagerPage from;
|
public final CardManagerPage from;
|
||||||
public final CardManagerPage to;
|
public final CardManagerPage to;
|
||||||
@@ -1465,13 +1437,10 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
if(max < 2)
|
if(max < 2)
|
||||||
callback.accept(1);
|
callback.accept(1);
|
||||||
else
|
else
|
||||||
GuiChoose.getInteger(prompt, 1, max, 20, new Callback<>() {
|
GuiChoose.getInteger(prompt, 1, max, 20, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (result == null || result == 0)
|
if (result == null || result == 0)
|
||||||
return;
|
return;
|
||||||
callback.accept(result);
|
callback.accept(result);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2024,15 +1993,12 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
break;
|
break;
|
||||||
case Commander:
|
case Commander:
|
||||||
if (canEditMainCommander() || isPartnerCommander(card)) {
|
if (canEditMainCommander() || isPartnerCommander(card)) {
|
||||||
addMoveCardMenuItem(menu, this, cardSourcePage, new Callback<>() {
|
addMoveCardMenuItem(menu, this, cardSourcePage, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
moveCard(card, cardSourcePage, result);
|
moveCard(card, cardSourcePage, result);
|
||||||
if(cardSourcePage == parentScreen.getCatalogPage()) {
|
if(cardSourcePage == parentScreen.getCatalogPage()) {
|
||||||
parentScreen.getCatalogPage().refresh(); //refresh so commander options shown again
|
parentScreen.getCatalogPage().refresh(); //refresh so commander options shown again
|
||||||
parentScreen.setSelectedPage(parentScreen.getCatalogPage());
|
parentScreen.setSelectedPage(parentScreen.getCatalogPage());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
addReplaceVariantItems(menu, card);
|
addReplaceVariantItems(menu, card);
|
||||||
}
|
}
|
||||||
@@ -2063,12 +2029,9 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
else
|
else
|
||||||
currentColors = null;
|
currentColors = null;
|
||||||
String prompt = Forge.getLocalizer().getMessage("lblChooseAColor", Lang.getNumeral(markedColorCount));
|
String prompt = Forge.getLocalizer().getMessage("lblChooseAColor", Lang.getNumeral(markedColorCount));
|
||||||
GuiChoose.getChoices(prompt, markedColorCount, markedColorCount, MagicColor.Constant.ONLY_COLORS, currentColors, null, new Callback<>() {
|
GuiChoose.getChoices(prompt, markedColorCount, markedColorCount, MagicColor.Constant.ONLY_COLORS, currentColors, null, result -> {
|
||||||
@Override
|
|
||||||
public void run(List<String> result) {
|
|
||||||
addCard(card.copyWithMarkedColors(ColorSet.fromNames(result)));
|
addCard(card.copyWithMarkedColors(ColorSet.fromNames(result)));
|
||||||
removeCard(card);
|
removeCard(card);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@@ -2109,9 +2072,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
String prompt = localizer.getMessage("lblSelectReplacementCard") + " " + card.getName();
|
String prompt = localizer.getMessage("lblSelectReplacementCard") + " " + card.getName();
|
||||||
String promptQuantity = String.format("%s - %s %s", card, lblReplaceCard, localizer.getMessage("lblHowMany"));
|
String promptQuantity = String.format("%s - %s %s", card, lblReplaceCard, localizer.getMessage("lblHowMany"));
|
||||||
//First have the player choose which card to swap in.
|
//First have the player choose which card to swap in.
|
||||||
GuiChoose.oneOrNone(prompt, sortedOptions, new Callback<>() {
|
GuiChoose.oneOrNone(prompt, sortedOptions, replacement -> {
|
||||||
@Override
|
|
||||||
public void run(PaperCard replacement) {
|
|
||||||
if (replacement == null || replacement == card)
|
if (replacement == null || replacement == card)
|
||||||
return;
|
return;
|
||||||
//Next, ask how many copies they'd like to swap, taking into account the number available.
|
//Next, ask how many copies they'd like to swap, taking into account the number available.
|
||||||
@@ -2123,7 +2084,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
DeckSectionPage.this.moveCard(card, sourcePage, amount);
|
DeckSectionPage.this.moveCard(card, sourcePage, amount);
|
||||||
sourcePage.moveCard(replacement, DeckSectionPage.this, amount);
|
sourcePage.moveCard(replacement, DeckSectionPage.this, amount);
|
||||||
}).handleEvent(e);
|
}).handleEvent(e);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2294,28 +2254,22 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
if(!cardManager.isEnabled())
|
if(!cardManager.isEnabled())
|
||||||
return;
|
return;
|
||||||
if(draftingFaceDown) {
|
if(draftingFaceDown) {
|
||||||
addMoveCardMenuItem(menu, this, parentScreen.getSideboardPage(), new Callback<>() {
|
addMoveCardMenuItem(menu, this, parentScreen.getSideboardPage(), result -> { //ignore quantity
|
||||||
@Override
|
|
||||||
public void run(Integer result) { //ignore quantity
|
|
||||||
PaperCard realCard = getDraftPlayer().pickFromArchdemonCurse(getDraftPlayer().nextChoice());
|
PaperCard realCard = getDraftPlayer().pickFromArchdemonCurse(getDraftPlayer().nextChoice());
|
||||||
moveCard(realCard, parentScreen.getSideboardPage());
|
moveCard(realCard, parentScreen.getSideboardPage());
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DeckSection destination = DeckSection.matchingSection(card);
|
DeckSection destination = DeckSection.matchingSection(card);
|
||||||
final DeckSectionPage destinationPage = parentScreen.getPageForSection(destination, true);
|
final DeckSectionPage destinationPage = parentScreen.getPageForSection(destination, true);
|
||||||
addMoveCardMenuItem(menu, this, destinationPage, new Callback<>() {
|
addMoveCardMenuItem(menu, this, destinationPage, result -> { //ignore quantity
|
||||||
@Override
|
|
||||||
public void run(Integer result) { //ignore quantity
|
|
||||||
moveCard(card, destinationPage);
|
moveCard(card, destinationPage);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
addMoveCardMenuItem(menu, this, parentScreen.getSideboardPage(), new Callback<>() {
|
addMoveCardMenuItem(menu,
|
||||||
@Override
|
this,
|
||||||
public void run(Integer result) { //ignore quantity
|
parentScreen.getSideboardPage(),
|
||||||
|
result -> { //ignore quantity
|
||||||
moveCard(card, parentScreen.getSideboardPage());
|
moveCard(card, parentScreen.getSideboardPage());
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,14 +150,11 @@ public class FSideboardDialog extends FDialog {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void buildMenu(FDropDownMenu menu, final PaperCard card) {
|
protected void buildMenu(FDropDownMenu menu, final PaperCard card) {
|
||||||
addItem(menu, Forge.getLocalizer().getMessage("lblMove"), Forge.getLocalizer().getMessage("lblToMainDeck"), FDeckEditor.MAIN_DECK_ICON, new Callback<Integer>() {
|
addItem(menu, Forge.getLocalizer().getMessage("lblMove"), Forge.getLocalizer().getMessage("lblToMainDeck"), FDeckEditor.MAIN_DECK_ICON, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (result == null || result <= 0) { return; }
|
if (result == null || result <= 0) { return; }
|
||||||
|
|
||||||
removeCard(card, result);
|
removeCard(card, result);
|
||||||
parent.getMainDeckPage().addCard(card, result);
|
parent.getMainDeckPage().addCard(card, result);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -181,14 +178,11 @@ public class FSideboardDialog extends FDialog {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void buildMenu(FDropDownMenu menu, final PaperCard card) {
|
protected void buildMenu(FDropDownMenu menu, final PaperCard card) {
|
||||||
addItem(menu, Forge.getLocalizer().getMessage("lblMove"), Forge.getLocalizer().getMessage("lbltosideboard"), FDeckEditor.SIDEBOARD_ICON, new Callback<Integer>() {
|
addItem(menu, Forge.getLocalizer().getMessage("lblMove"), Forge.getLocalizer().getMessage("lbltosideboard"), FDeckEditor.SIDEBOARD_ICON, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (result == null || result <= 0) { return; }
|
if (result == null || result <= 0) { return; }
|
||||||
|
|
||||||
removeCard(card, result);
|
removeCard(card, result);
|
||||||
parent.getSideboardPage().addCard(card, result);
|
parent.getSideboardPage().addCard(card, result);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -534,9 +534,7 @@ public class PlayerPanel extends FContainer {
|
|||||||
private FEventHandler avatarCommand = new FEventHandler() {
|
private FEventHandler avatarCommand = new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
AvatarSelector.show(getPlayerName(), avatarIndex, screen.getUsedAvatars(), new Callback<Integer>() {
|
AvatarSelector.show(getPlayerName(), avatarIndex, screen.getUsedAvatars(), result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
setAvatarIndex(result);
|
setAvatarIndex(result);
|
||||||
|
|
||||||
if (index < 2) {
|
if (index < 2) {
|
||||||
@@ -546,7 +544,6 @@ public class PlayerPanel extends FContainer {
|
|||||||
if (allowNetworking) {
|
if (allowNetworking) {
|
||||||
screen.firePlayerChangeListener(index);
|
screen.firePlayerChangeListener(index);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -554,9 +551,7 @@ public class PlayerPanel extends FContainer {
|
|||||||
private FEventHandler sleeveCommand = new FEventHandler() {
|
private FEventHandler sleeveCommand = new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
SleevesSelector.show(getPlayerName(), sleeveIndex, screen.getUsedSleeves(), new Callback<Integer>() {
|
SleevesSelector.show(getPlayerName(), sleeveIndex, screen.getUsedSleeves(), result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
setSleeveIndex(result);
|
setSleeveIndex(result);
|
||||||
|
|
||||||
if (index < 2) {
|
if (index < 2) {
|
||||||
@@ -566,7 +561,6 @@ public class PlayerPanel extends FContainer {
|
|||||||
if (allowNetworking) {
|
if (allowNetworking) {
|
||||||
screen.firePlayerChangeListener(index);
|
screen.firePlayerChangeListener(index);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -804,9 +798,7 @@ public class PlayerPanel extends FContainer {
|
|||||||
private FLabel createNameRandomizer() {
|
private FLabel createNameRandomizer() {
|
||||||
final FLabel newNameBtn = new FLabel.Builder().iconInBackground(false)
|
final FLabel newNameBtn = new FLabel.Builder().iconInBackground(false)
|
||||||
.icon(Forge.hdbuttons ? FSkinImage.HDEDIT : FSkinImage.EDIT).opaque(false).build();
|
.icon(Forge.hdbuttons ? FSkinImage.HDEDIT : FSkinImage.EDIT).opaque(false).build();
|
||||||
newNameBtn.setCommand(e -> getNewName(new Callback<String>() {
|
newNameBtn.setCommand(e -> getNewName(newName -> {
|
||||||
@Override
|
|
||||||
public void run(String newName) {
|
|
||||||
if (newName == null) { return; }
|
if (newName == null) { return; }
|
||||||
|
|
||||||
txtPlayerName.setText(newName);
|
txtPlayerName.setText(newName);
|
||||||
@@ -819,7 +811,6 @@ public class PlayerPanel extends FContainer {
|
|||||||
if (allowNetworking) {
|
if (allowNetworking) {
|
||||||
screen.firePlayerChangeListener(index);
|
screen.firePlayerChangeListener(index);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
return newNameBtn;
|
return newNameBtn;
|
||||||
}
|
}
|
||||||
@@ -1070,42 +1061,33 @@ public class PlayerPanel extends FContainer {
|
|||||||
final String message = Forge.getLocalizer().getMessage("lbltypeofName");
|
final String message = Forge.getLocalizer().getMessage("lbltypeofName");
|
||||||
final FSkinImage icon = FOptionPane.QUESTION_ICON;
|
final FSkinImage icon = FOptionPane.QUESTION_ICON;
|
||||||
|
|
||||||
FOptionPane.showOptionDialog(message, title, icon, genderOptions, 2, new Callback<Integer>() {
|
FOptionPane.showOptionDialog(message, title, icon, genderOptions, 2, genderIndex -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer genderIndex) {
|
|
||||||
if (genderIndex == null || genderIndex < 0) {
|
if (genderIndex == null || genderIndex < 0) {
|
||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FOptionPane.showOptionDialog(message, title, icon, typeOptions, 2, new Callback<Integer>() {
|
FOptionPane.showOptionDialog(message, title, icon, typeOptions, 2, typeIndex -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer typeIndex) {
|
|
||||||
if (typeIndex == null || typeIndex < 0) {
|
if (typeIndex == null || typeIndex < 0) {
|
||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
generateRandomName(genderOptions.get(genderIndex), typeOptions.get(typeIndex), screen.getPlayerNames(), title, callback);
|
generateRandomName(genderOptions.get(genderIndex), typeOptions.get(typeIndex), screen.getPlayerNames(), title, callback);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generateRandomName(final String gender, final String type, final List<String> usedNames, final String title, final Callback<String> callback) {
|
private void generateRandomName(final String gender, final String type, final List<String> usedNames, final String title, final Callback<String> callback) {
|
||||||
final String newName = NameGenerator.getRandomName(gender, type, usedNames);
|
final String newName = NameGenerator.getRandomName(gender, type, usedNames);
|
||||||
String confirmMsg = Forge.getLocalizer().getMessage("lblconfirmName").replace("%s", newName);
|
String confirmMsg = Forge.getLocalizer().getMessage("lblconfirmName").replace("%s", newName);
|
||||||
FOptionPane.showConfirmDialog(confirmMsg, title, Forge.getLocalizer().getMessage("lblUseThisName"), Forge.getLocalizer().getMessage("lblTryAgain"), true, new Callback<Boolean>() {
|
FOptionPane.showConfirmDialog(confirmMsg, title, Forge.getLocalizer().getMessage("lblUseThisName"), Forge.getLocalizer().getMessage("lblTryAgain"), true, result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
callback.run(newName);
|
callback.run(newName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
generateRandomName(gender, type, usedNames, title, callback);
|
generateRandomName(gender, type, usedNames, title, callback);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import forge.screens.settings.SettingsScreen;
|
|||||||
import forge.toolbox.FButton;
|
import forge.toolbox.FButton;
|
||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Callback;
|
|
||||||
import forge.util.ThreadUtil;
|
import forge.util.ThreadUtil;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
@@ -107,14 +106,11 @@ public class LoadGauntletScreen extends LaunchScreen {
|
|||||||
if (userDeck == null) {
|
if (userDeck == null) {
|
||||||
//give user a chance to select a deck if none saved with gauntlet
|
//give user a chance to select a deck if none saved with gauntlet
|
||||||
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectGauntletDeck"), gauntlet.isCommanderGauntlet()
|
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectGauntletDeck"), gauntlet.isCommanderGauntlet()
|
||||||
? GameType.CommanderGauntlet : GameType.Gauntlet, false, new Callback<Deck>() {
|
? GameType.CommanderGauntlet : GameType.Gauntlet, false, result -> {
|
||||||
@Override
|
|
||||||
public void run(Deck result) {
|
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
gauntlet.setUserDeck(result);
|
gauntlet.setUserDeck(result);
|
||||||
GauntletIO.saveGauntlet(gauntlet);
|
GauntletIO.saveGauntlet(gauntlet);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.assets.FSkinFont;
|
import forge.assets.FSkinFont;
|
||||||
import forge.deck.Deck;
|
|
||||||
import forge.deck.DeckType;
|
import forge.deck.DeckType;
|
||||||
import forge.deck.FDeckChooser;
|
import forge.deck.FDeckChooser;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
@@ -23,7 +22,6 @@ import forge.toolbox.FLabel;
|
|||||||
import forge.toolbox.FTextArea;
|
import forge.toolbox.FTextArea;
|
||||||
import forge.toolbox.GuiChoose;
|
import forge.toolbox.GuiChoose;
|
||||||
import forge.toolbox.ListChooser;
|
import forge.toolbox.ListChooser;
|
||||||
import forge.util.Callback;
|
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
public class NewGauntletScreen extends LaunchScreen {
|
public class NewGauntletScreen extends LaunchScreen {
|
||||||
@@ -58,9 +56,7 @@ public class NewGauntletScreen extends LaunchScreen {
|
|||||||
Forge.getLocalizer().getMessage("lblGauntletContest"),
|
Forge.getLocalizer().getMessage("lblGauntletContest"),
|
||||||
Forge.getLocalizer().getMessage("lblQuickCommanderGauntlet"),
|
Forge.getLocalizer().getMessage("lblQuickCommanderGauntlet"),
|
||||||
Forge.getLocalizer().getMessage("lblCustomCommanderGauntlet"),
|
Forge.getLocalizer().getMessage("lblCustomCommanderGauntlet"),
|
||||||
}, new Callback<String>() {
|
}, result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
if (result == null) { return; }
|
if (result == null) { return; }
|
||||||
|
|
||||||
if (Forge.getLocalizer().getMessage("lblQuickGauntlet").equals(result)) {
|
if (Forge.getLocalizer().getMessage("lblQuickGauntlet").equals(result)) {
|
||||||
@@ -74,48 +70,36 @@ public class NewGauntletScreen extends LaunchScreen {
|
|||||||
} else {
|
} else {
|
||||||
createGauntletContest();
|
createGauntletContest();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createQuickCommandGauntlet() {
|
private void createQuickCommandGauntlet() {
|
||||||
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, new Callback<Integer>() {
|
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, numOpponents -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer numOpponents) {
|
|
||||||
if (numOpponents == null) { return; }
|
if (numOpponents == null) { return; }
|
||||||
|
|
||||||
ListChooser<DeckType> chooser = new ListChooser<>(
|
ListChooser<DeckType> chooser = new ListChooser<>(
|
||||||
Forge.getLocalizer().getMessage("lblChooseAllowedDeckTypeOpponents"), 0, 11, Arrays.asList(DeckType.COMMANDER_DECK,
|
Forge.getLocalizer().getMessage("lblChooseAllowedDeckTypeOpponents"), 0, 11, Arrays.asList(DeckType.COMMANDER_DECK,
|
||||||
DeckType.PRECON_COMMANDER_DECK,
|
DeckType.PRECON_COMMANDER_DECK,
|
||||||
DeckType.RANDOM_COMMANDER_DECK), null, new Callback<List<DeckType>>() {
|
DeckType.RANDOM_COMMANDER_DECK), null, allowedDeckTypes -> {
|
||||||
@Override
|
|
||||||
public void run(final List<DeckType> allowedDeckTypes) {
|
|
||||||
if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) {
|
if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), GameType.Commander, false, new Callback<Deck>() {
|
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), GameType.Commander, false, userDeck -> {
|
||||||
@Override
|
|
||||||
public void run(Deck userDeck) {
|
|
||||||
if (userDeck == null) {
|
if (userDeck == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GauntletData gauntlet = GauntletUtil.createCommanderGauntlet(userDeck, numOpponents, allowedDeckTypes, null);
|
GauntletData gauntlet = GauntletUtil.createCommanderGauntlet(userDeck, numOpponents, allowedDeckTypes, null);
|
||||||
launchGauntlet(gauntlet);
|
launchGauntlet(gauntlet);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
chooser.show(null, false); /*setting selectMax to true will select all available option*/
|
chooser.show(null, false); /*setting selectMax to true will select all available option*/
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createQuickGauntlet() {
|
private void createQuickGauntlet() {
|
||||||
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, new Callback<Integer>() {
|
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, numOpponents -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer numOpponents) {
|
|
||||||
if (numOpponents == null) { return; }
|
if (numOpponents == null) { return; }
|
||||||
|
|
||||||
ListChooser<DeckType> chooser = new ListChooser<>(
|
ListChooser<DeckType> chooser = new ListChooser<>(
|
||||||
@@ -132,63 +116,48 @@ public class NewGauntletScreen extends LaunchScreen {
|
|||||||
DeckType.LEGACY_CARDGEN_DECK,
|
DeckType.LEGACY_CARDGEN_DECK,
|
||||||
DeckType.VINTAGE_CARDGEN_DECK,
|
DeckType.VINTAGE_CARDGEN_DECK,
|
||||||
DeckType.PAUPER_CARDGEN_DECK,
|
DeckType.PAUPER_CARDGEN_DECK,
|
||||||
DeckType.THEME_DECK), null, new Callback<List<DeckType>>() {
|
DeckType.THEME_DECK), null, allowedDeckTypes -> {
|
||||||
@Override
|
|
||||||
public void run(final List<DeckType> allowedDeckTypes) {
|
|
||||||
if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) {
|
if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), GameType.Gauntlet, false, new Callback<Deck>() {
|
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), GameType.Gauntlet, false, userDeck -> {
|
||||||
@Override
|
|
||||||
public void run(Deck userDeck) {
|
|
||||||
if (userDeck == null) {
|
if (userDeck == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, null);
|
GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, null);
|
||||||
launchGauntlet(gauntlet);
|
launchGauntlet(gauntlet);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
chooser.show(null, false); /*setting selectMax to true will select all available option*/
|
chooser.show(null, false); /*setting selectMax to true will select all available option*/
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createCustomGauntlet() {
|
private void createCustomGauntlet() {
|
||||||
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, new Callback<Integer>() {
|
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, numOpponents -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer numOpponents) {
|
|
||||||
if (numOpponents == null) { return; }
|
if (numOpponents == null) { return; }
|
||||||
|
|
||||||
GauntletData gauntlet = new GauntletData();
|
GauntletData gauntlet = new GauntletData();
|
||||||
gauntlet.setDecks(new ArrayList<>());
|
gauntlet.setDecks(new ArrayList<>());
|
||||||
promptForAiDeck(gauntlet, numOpponents);
|
promptForAiDeck(gauntlet, numOpponents);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createCustomCommanderGauntlet() {
|
private void createCustomCommanderGauntlet() {
|
||||||
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, new Callback<Integer>() {
|
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblHowManyOpponents"), 3, 50, numOpponents -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer numOpponents) {
|
|
||||||
if (numOpponents == null) { return; }
|
if (numOpponents == null) { return; }
|
||||||
|
|
||||||
GauntletData gauntlet = new GauntletData(true);
|
GauntletData gauntlet = new GauntletData(true);
|
||||||
gauntlet.setDecks(new ArrayList<>());
|
gauntlet.setDecks(new ArrayList<>());
|
||||||
promptForAiDeck(gauntlet, numOpponents);
|
promptForAiDeck(gauntlet, numOpponents);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void promptForAiDeck(final GauntletData gauntlet, final int numOpponents) {
|
private void promptForAiDeck(final GauntletData gauntlet, final int numOpponents) {
|
||||||
final int opponentNum = gauntlet.getDecks().size() + 1;
|
final int opponentNum = gauntlet.getDecks().size() + 1;
|
||||||
final GameType gameType = gauntlet.isCommanderGauntlet() ? GameType.CommanderGauntlet : GameType.Gauntlet;
|
final GameType gameType = gauntlet.isCommanderGauntlet() ? GameType.CommanderGauntlet : GameType.Gauntlet;
|
||||||
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectDeckForOpponent") + " " + opponentNum + " / " + numOpponents, gameType, true, new Callback<Deck>() {
|
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectDeckForOpponent") + " " + opponentNum + " / " + numOpponents, gameType, true, aiDeck -> {
|
||||||
@Override
|
|
||||||
public void run(Deck aiDeck) {
|
|
||||||
if (aiDeck == null) { return; }
|
if (aiDeck == null) { return; }
|
||||||
|
|
||||||
gauntlet.getDecks().add(aiDeck);
|
gauntlet.getDecks().add(aiDeck);
|
||||||
@@ -199,18 +168,14 @@ public class NewGauntletScreen extends LaunchScreen {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//once all ai decks have been selected, prompt for user deck
|
//once all ai decks have been selected, prompt for user deck
|
||||||
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), gameType, false, new Callback<Deck>() {
|
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), gameType, false, userDeck -> {
|
||||||
@Override
|
|
||||||
public void run(Deck userDeck) {
|
|
||||||
if (userDeck == null) { return; }
|
if (userDeck == null) { return; }
|
||||||
|
|
||||||
gauntlet.setUserDeck(userDeck);
|
gauntlet.setUserDeck(userDeck);
|
||||||
GauntletUtil.setDefaultGauntletName(gauntlet, GauntletIO.PREFIX_CUSTOM);
|
GauntletUtil.setDefaultGauntletName(gauntlet, GauntletIO.PREFIX_CUSTOM);
|
||||||
launchGauntlet(gauntlet);
|
launchGauntlet(gauntlet);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,14 +189,10 @@ public class NewGauntletScreen extends LaunchScreen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblSelectGauntletContest"), contests, new Callback<GauntletData>() {
|
GuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblSelectGauntletContest"), contests, contest -> {
|
||||||
@Override
|
|
||||||
public void run(final GauntletData contest) {
|
|
||||||
if (contest == null) { return; }
|
if (contest == null) { return; }
|
||||||
|
|
||||||
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), GameType.Gauntlet, false, new Callback<Deck>() {
|
FDeckChooser.promptForDeck(Forge.getLocalizer().getMessage("lblSelectYourDeck"), GameType.Gauntlet, false, userDeck -> {
|
||||||
@Override
|
|
||||||
public void run(final Deck userDeck) {
|
|
||||||
if (userDeck == null) { return; }
|
if (userDeck == null) { return; }
|
||||||
|
|
||||||
//create copy of contest to use as gauntlet
|
//create copy of contest to use as gauntlet
|
||||||
@@ -241,9 +202,7 @@ public class NewGauntletScreen extends LaunchScreen {
|
|||||||
gauntlet.setUserDeck(userDeck);
|
gauntlet.setUserDeck(userDeck);
|
||||||
GauntletUtil.setDefaultGauntletName(gauntlet, contest.getDisplayName() + "_");
|
GauntletUtil.setDefaultGauntletName(gauntlet, contest.getDisplayName() + "_");
|
||||||
launchGauntlet(gauntlet);
|
launchGauntlet(gauntlet);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import forge.toolbox.FLabel;
|
|||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.toolbox.FTextArea;
|
import forge.toolbox.FTextArea;
|
||||||
import forge.toolbox.GuiChoose;
|
import forge.toolbox.GuiChoose;
|
||||||
import forge.util.Callback;
|
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
public class PuzzleScreen extends LaunchScreen {
|
public class PuzzleScreen extends LaunchScreen {
|
||||||
@@ -56,9 +55,7 @@ public class PuzzleScreen extends LaunchScreen {
|
|||||||
final ArrayList<Puzzle> puzzles = PuzzleIO.loadPuzzles(ForgeConstants.PUZZLE_DIR);
|
final ArrayList<Puzzle> puzzles = PuzzleIO.loadPuzzles(ForgeConstants.PUZZLE_DIR);
|
||||||
Collections.sort(puzzles);
|
Collections.sort(puzzles);
|
||||||
|
|
||||||
GuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseAPuzzle"), puzzles, new Callback<Puzzle>() {
|
GuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseAPuzzle"), puzzles, chosen -> {
|
||||||
@Override
|
|
||||||
public void run(final Puzzle chosen) {
|
|
||||||
if (chosen != null) {
|
if (chosen != null) {
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingThePuzzle"), true, () -> {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingThePuzzle"), true, () -> {
|
||||||
// Load selected puzzle
|
// Load selected puzzle
|
||||||
@@ -82,7 +79,6 @@ public class PuzzleScreen extends LaunchScreen {
|
|||||||
FOptionPane.showMessageDialog(chosen.getGoalDescription(), chosen.getName());
|
FOptionPane.showMessageDialog(chosen.getGoalDescription(), chosen.getName());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,9 +69,7 @@ public class DraftingProcessScreen extends FDeckEditor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInEdtNowOrLater(() -> {
|
FThreads.invokeInEdtNowOrLater(() -> {
|
||||||
FOptionPane.showInputDialog(Forge.getLocalizer().getMessage("lblSaveDraftAs") + "?", new Callback<>() {
|
FOptionPane.showInputDialog(Forge.getLocalizer().getMessage("lblSaveDraftAs") + "?", name -> {
|
||||||
@Override
|
|
||||||
public void run(final String name) {
|
|
||||||
if (StringUtils.isEmpty(name)) {
|
if (StringUtils.isEmpty(name)) {
|
||||||
save(callback); //re-prompt if user doesn't pick a name
|
save(callback); //re-prompt if user doesn't pick a name
|
||||||
return;
|
return;
|
||||||
@@ -82,9 +80,7 @@ public class DraftingProcessScreen extends FDeckEditor {
|
|||||||
if (name.equalsIgnoreCase(d.getName())) {
|
if (name.equalsIgnoreCase(d.getName())) {
|
||||||
FOptionPane.showConfirmDialog(
|
FOptionPane.showConfirmDialog(
|
||||||
Forge.getLocalizer().getMessage("lblAlreadyDeckName") + name + Forge.getLocalizer().getMessage("lblOverwriteConfirm"),
|
Forge.getLocalizer().getMessage("lblAlreadyDeckName") + name + Forge.getLocalizer().getMessage("lblOverwriteConfirm"),
|
||||||
Forge.getLocalizer().getMessage("lblOverwriteDeck"), false, new Callback<>() {
|
Forge.getLocalizer().getMessage("lblOverwriteDeck"), false, result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
finishSave(name);
|
finishSave(name);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
@@ -93,7 +89,6 @@ public class DraftingProcessScreen extends FDeckEditor {
|
|||||||
} else {
|
} else {
|
||||||
save(callback); //If no overwrite, recurse
|
save(callback); //If no overwrite, recurse
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -103,7 +98,6 @@ public class DraftingProcessScreen extends FDeckEditor {
|
|||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.run(true);
|
callback.run(true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1188,13 +1188,10 @@ public class MatchScreen extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void confirmUserConcedes() {
|
private void confirmUserConcedes() {
|
||||||
final Callback<Boolean> callback = new Callback<>() {
|
final Callback<Boolean> callback = result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
getGameController().concede();
|
getGameController().concede();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
FOptionPane.showConfirmDialog(getLocalizer().getMessage("lblConcedeCurrentGame"),
|
FOptionPane.showConfirmDialog(getLocalizer().getMessage("lblConcedeCurrentGame"),
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import forge.menu.FPopupMenu;
|
|||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Callback;
|
|
||||||
|
|
||||||
public class OnlineMenu extends FPopupMenu {
|
public class OnlineMenu extends FPopupMenu {
|
||||||
public enum OnlineScreen {
|
public enum OnlineScreen {
|
||||||
@@ -31,9 +30,7 @@ public class OnlineMenu extends FPopupMenu {
|
|||||||
if(screenClass == null) {
|
if(screenClass == null) {
|
||||||
FOptionPane.showConfirmDialog(
|
FOptionPane.showConfirmDialog(
|
||||||
Forge.getLocalizer().getMessage("lblLeaveLobbyDescription"),
|
Forge.getLocalizer().getMessage("lblLeaveLobbyDescription"),
|
||||||
Forge.getLocalizer().getMessage("lblDisconnect"), new Callback<Boolean>() {
|
Forge.getLocalizer().getMessage("lblDisconnect"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
if (FServerManager.getInstance() != null)
|
if (FServerManager.getInstance() != null)
|
||||||
if(FServerManager.getInstance().isHosting()) {
|
if(FServerManager.getInstance().isHosting()) {
|
||||||
@@ -48,7 +45,6 @@ public class OnlineMenu extends FPopupMenu {
|
|||||||
screen = null;
|
screen = null;
|
||||||
OnlineLobbyScreen.clearGameLobby();
|
OnlineLobbyScreen.clearGameLobby();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -355,14 +355,11 @@ public class ConquestAEtherScreen extends FScreen {
|
|||||||
caption = caption0;
|
caption = caption0;
|
||||||
options = ImmutableList.copyOf(options0);
|
options = ImmutableList.copyOf(options0);
|
||||||
setSelectedOption(options.get(0));
|
setSelectedOption(options.get(0));
|
||||||
setCommand(e -> GuiChoose.getChoices(Forge.getLocalizer().getMessage("lblSelectCaptionFilter", caption), 0, 1, options, Set.of(selectedOption), null, new Callback<>() {
|
setCommand(e -> GuiChoose.getChoices(Forge.getLocalizer().getMessage("lblSelectCaptionFilter", caption), 0, 1, options, Set.of(selectedOption), null, result -> {
|
||||||
@Override
|
|
||||||
public void run(List<AEtherFilter> result) {
|
|
||||||
if (!result.isEmpty()) {
|
if (!result.isEmpty()) {
|
||||||
setSelectedOption(result.get(0));
|
setSelectedOption(result.get(0));
|
||||||
updateFilteredPool();
|
updateFilteredPool();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,12 +95,7 @@ public class ConquestCommandersScreen extends FScreen {
|
|||||||
String problem = DeckFormat.PlanarConquest.getDeckConformanceProblem(commander.getDeck());
|
String problem = DeckFormat.PlanarConquest.getDeckConformanceProblem(commander.getDeck());
|
||||||
if (problem != null) {
|
if (problem != null) {
|
||||||
//prevent selecting a commander with an invalid deck
|
//prevent selecting a commander with an invalid deck
|
||||||
FOptionPane.showMessageDialog(Forge.getLocalizer().getMessage("lblCantSelectDeckBecause", commander.getName(), problem), Forge.getLocalizer().getMessage("lblInvalidDeck"), FOptionPane.INFORMATION_ICON, new Callback<Integer>() {
|
FOptionPane.showMessageDialog(Forge.getLocalizer().getMessage("lblCantSelectDeckBecause", commander.getName(), problem), Forge.getLocalizer().getMessage("lblInvalidDeck"), FOptionPane.INFORMATION_ICON, result -> canCloseCallback.run(false));
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
canCloseCallback.run(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import forge.gamemodes.planarconquest.ConquestBattle;
|
|||||||
import forge.gamemodes.planarconquest.ConquestChaosBattle;
|
import forge.gamemodes.planarconquest.ConquestChaosBattle;
|
||||||
import forge.gamemodes.planarconquest.ConquestData;
|
import forge.gamemodes.planarconquest.ConquestData;
|
||||||
import forge.gamemodes.planarconquest.ConquestEvent;
|
import forge.gamemodes.planarconquest.ConquestEvent;
|
||||||
import forge.gamemodes.planarconquest.ConquestEvent.ChaosWheelOutcome;
|
|
||||||
import forge.gamemodes.planarconquest.ConquestEvent.ConquestEventRecord;
|
import forge.gamemodes.planarconquest.ConquestEvent.ConquestEventRecord;
|
||||||
import forge.gamemodes.planarconquest.ConquestLocation;
|
import forge.gamemodes.planarconquest.ConquestLocation;
|
||||||
import forge.gamemodes.planarconquest.ConquestPlane;
|
import forge.gamemodes.planarconquest.ConquestPlane;
|
||||||
@@ -50,7 +49,6 @@ import forge.toolbox.FDisplayObject;
|
|||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.toolbox.FScrollPane;
|
import forge.toolbox.FScrollPane;
|
||||||
import forge.util.Callback;
|
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
|
|
||||||
@@ -130,9 +128,7 @@ public class ConquestMultiverseScreen extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void spinChaosWheel() {
|
private void spinChaosWheel() {
|
||||||
ConquestChaosWheel.spin(new Callback<ChaosWheelOutcome>() {
|
ConquestChaosWheel.spin(outcome -> {
|
||||||
@Override
|
|
||||||
public void run(ChaosWheelOutcome outcome) {
|
|
||||||
switch (outcome) {
|
switch (outcome) {
|
||||||
case BOOSTER:
|
case BOOSTER:
|
||||||
awardBoosters(model.getCurrentPlane().getAwardPool(), 1);
|
awardBoosters(model.getCurrentPlane().getAwardPool(), 1);
|
||||||
@@ -148,12 +144,7 @@ public class ConquestMultiverseScreen extends FScreen {
|
|||||||
break;
|
break;
|
||||||
case PLANESWALK:
|
case PLANESWALK:
|
||||||
if (model.getUnlockedPlaneCount() == model.getAccessiblePlaneCount()) {
|
if (model.getUnlockedPlaneCount() == model.getAccessiblePlaneCount()) {
|
||||||
FOptionPane.showMessageDialog(Forge.getLocalizer().getMessage("lblAllPlanesUnlockedNotify"), Forge.getLocalizer().getMessage("lblAllPlanesUnlocked"), EMBLEM_IMAGE, new Callback<Integer>() {
|
FOptionPane.showMessageDialog(Forge.getLocalizer().getMessage("lblAllPlanesUnlockedNotify"), Forge.getLocalizer().getMessage("lblAllPlanesUnlocked"), EMBLEM_IMAGE, result -> launchChaosBattle());
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
launchChaosBattle();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
awardBonusPlaneswalkEmblems(FModel.getConquestPreferences().getPrefInt(CQPref.PLANESWALK_WHEEL_EMBLEMS));
|
awardBonusPlaneswalkEmblems(FModel.getConquestPreferences().getPrefInt(CQPref.PLANESWALK_WHEEL_EMBLEMS));
|
||||||
}
|
}
|
||||||
@@ -162,7 +153,6 @@ public class ConquestMultiverseScreen extends FScreen {
|
|||||||
launchChaosBattle();
|
launchChaosBattle();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -205,9 +205,7 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
final int max = itemManager.getItemCount(item);
|
final int max = itemManager.getItemCount(item);
|
||||||
if (max == 0) { return; }
|
if (max == 0) { return; }
|
||||||
|
|
||||||
final Callback<Integer> callback = new Callback<Integer>() {
|
final Callback<Integer> callback = result -> {
|
||||||
@Override
|
|
||||||
public void run(final Integer result) {
|
|
||||||
if (result == null || result <= 0) { return; }
|
if (result == null || result <= 0) { return; }
|
||||||
|
|
||||||
//invoke in background thread so other dialogs can be shown properly
|
//invoke in background thread so other dialogs can be shown properly
|
||||||
@@ -217,7 +215,6 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
activateItems(items);
|
activateItems(items);
|
||||||
FThreads.invokeInEdtLater(() -> parentScreen.updateCreditsLabel());
|
FThreads.invokeInEdtLater(() -> parentScreen.updateCreditsLabel());
|
||||||
});
|
});
|
||||||
}
|
|
||||||
};
|
};
|
||||||
if (max == 1) {
|
if (max == 1) {
|
||||||
callback.run(max);
|
callback.run(max);
|
||||||
|
|||||||
@@ -296,13 +296,10 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void select() {
|
public void select() {
|
||||||
new GuiDownloader(createService(), new Callback<Boolean>() {
|
new GuiDownloader(createService(), finished -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean finished) {
|
|
||||||
if (finished) {
|
if (finished) {
|
||||||
finishCallback();
|
finishCallback();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}).show();
|
}).show();
|
||||||
}
|
}
|
||||||
protected abstract GuiDownloadService createService();
|
protected abstract GuiDownloadService createService();
|
||||||
@@ -322,20 +319,14 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
@Override
|
@Override
|
||||||
public void select() {
|
public void select() {
|
||||||
final Map<String, String> categories = getCategories();
|
final Map<String, String> categories = getCategories();
|
||||||
GuiChoose.one(prompt, categories.keySet(), new Callback<String>() {
|
GuiChoose.one(prompt, categories.keySet(), result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
final String url = categories.get(result);
|
final String url = categories.get(result);
|
||||||
final String name = url.substring(url.lastIndexOf("/") + 2);
|
final String name = url.substring(url.lastIndexOf("/") + 2);
|
||||||
new GuiDownloader(new GuiDownloadZipService(name, name, url, ForgeConstants.FONTS_DIR, null, null), new Callback<Boolean>() {
|
new GuiDownloader(new GuiDownloadZipService(name, name, url, ForgeConstants.FONTS_DIR, null, null), finished -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean finished) {
|
|
||||||
if (finished) {
|
if (finished) {
|
||||||
finishCallback();
|
finishCallback();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}).show();
|
}).show();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
protected abstract Map<String, String> getCategories();
|
protected abstract Map<String, String> getCategories();
|
||||||
@@ -355,14 +346,11 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void select() {
|
public void select() {
|
||||||
FFileChooser.show(Forge.getLocalizer().getMessage("lblSelect").replace("%s", label), ChoiceType.GetDirectory, description, new Callback<String>() {
|
FFileChooser.show(Forge.getLocalizer().getMessage("lblSelect").replace("%s", label), ChoiceType.GetDirectory, description, result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
if (StringUtils.isEmpty(result) || description.equals(result)) { return; }
|
if (StringUtils.isEmpty(result) || description.equals(result)) { return; }
|
||||||
updateDir(result);
|
updateDir(result);
|
||||||
onDirectoryChanged(result);
|
onDirectoryChanged(result);
|
||||||
FOptionPane.showMessageDialog(Forge.getLocalizer().getMessage("lblRestartForgeMoveFilesNewLocation"), Forge.getLocalizer().getMessage("lblRestartRequired"), FOptionPane.INFORMATION_ICON);
|
FOptionPane.showMessageDialog(Forge.getLocalizer().getMessage("lblRestartForgeMoveFilesNewLocation"), Forge.getLocalizer().getMessage("lblRestartRequired"), FOptionPane.INFORMATION_ICON);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
protected abstract void onDirectoryChanged(String newDir);
|
protected abstract void onDirectoryChanged(String newDir);
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import forge.toolbox.FCheckBox;
|
|||||||
import forge.toolbox.FGroupList;
|
import forge.toolbox.FGroupList;
|
||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Callback;
|
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -75,13 +74,10 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
|
|
||||||
FLanguage.changeLanguage(newValue);
|
FLanguage.changeLanguage(newValue);
|
||||||
|
|
||||||
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblRestartForgeDescription"), Forge.getLocalizer().getMessage("lblRestartForge"), Forge.getLocalizer().getMessage("lblRestart"), Forge.getLocalizer().getMessage("lblLater"), new Callback<Boolean>() {
|
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblRestartForgeDescription"), Forge.getLocalizer().getMessage("lblRestartForge"), Forge.getLocalizer().getMessage("lblRestart"), Forge.getLocalizer().getMessage("lblLater"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Forge.restart(true);
|
Forge.restart(true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
@@ -125,13 +121,10 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
boolean landscapeMode = FModel.getPreferences().getPrefBoolean(FPref.UI_LANDSCAPE_MODE);
|
boolean landscapeMode = FModel.getPreferences().getPrefBoolean(FPref.UI_LANDSCAPE_MODE);
|
||||||
Forge.getDeviceAdapter().setLandscapeMode(landscapeMode); //ensure device able to save off ini file so landscape change takes effect
|
Forge.getDeviceAdapter().setLandscapeMode(landscapeMode); //ensure device able to save off ini file so landscape change takes effect
|
||||||
if (Forge.isLandscapeMode() != landscapeMode) {
|
if (Forge.isLandscapeMode() != landscapeMode) {
|
||||||
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblRestartForgeDescription"), Forge.getLocalizer().getMessage("lblRestartForge"), Forge.getLocalizer().getMessage("lblRestart"), Forge.getLocalizer().getMessage("lblLater"), new Callback<Boolean>() {
|
FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblRestartForgeDescription"), Forge.getLocalizer().getMessage("lblRestartForge"), Forge.getLocalizer().getMessage("lblRestart"), Forge.getLocalizer().getMessage("lblLater"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Forge.restart(true);
|
Forge.restart(true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -376,14 +369,11 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
||||||
Forge.getLocalizer().getMessage("lblRestartForge"),
|
Forge.getLocalizer().getMessage("lblRestartForge"),
|
||||||
Forge.getLocalizer().getMessage("lblRestart"),
|
Forge.getLocalizer().getMessage("lblRestart"),
|
||||||
Forge.getLocalizer().getMessage("lblLater"), new Callback<Boolean>() {
|
Forge.getLocalizer().getMessage("lblLater"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Forge.restart(true);
|
Forge.restart(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, 3);
|
}, 3);
|
||||||
@@ -397,14 +387,11 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
||||||
Forge.getLocalizer().getMessage("lblRestartForge"),
|
Forge.getLocalizer().getMessage("lblRestartForge"),
|
||||||
Forge.getLocalizer().getMessage("lblRestart"),
|
Forge.getLocalizer().getMessage("lblRestart"),
|
||||||
Forge.getLocalizer().getMessage("lblLater"), new Callback<Boolean>() {
|
Forge.getLocalizer().getMessage("lblLater"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Forge.restart(true);
|
Forge.restart(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, 3);
|
}, 3);
|
||||||
@@ -418,14 +405,11 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
||||||
Forge.getLocalizer().getMessage("lblRestartForge"),
|
Forge.getLocalizer().getMessage("lblRestartForge"),
|
||||||
Forge.getLocalizer().getMessage("lblRestart"),
|
Forge.getLocalizer().getMessage("lblRestart"),
|
||||||
Forge.getLocalizer().getMessage("lblLater"), new Callback<Boolean>() {
|
Forge.getLocalizer().getMessage("lblLater"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Forge.restart(true);
|
Forge.restart(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, 3);
|
}, 3);
|
||||||
@@ -458,14 +442,11 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
||||||
Forge.getLocalizer().getMessage("lblRestartForge"),
|
Forge.getLocalizer().getMessage("lblRestartForge"),
|
||||||
Forge.getLocalizer().getMessage("lblRestart"),
|
Forge.getLocalizer().getMessage("lblRestart"),
|
||||||
Forge.getLocalizer().getMessage("lblLater"), new Callback<Boolean>() {
|
Forge.getLocalizer().getMessage("lblLater"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Forge.restart(true);
|
Forge.restart(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, 3);
|
}, 3);
|
||||||
@@ -495,14 +476,11 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
Forge.getLocalizer().getMessage("lblRestartForgeDescription"),
|
||||||
Forge.getLocalizer().getMessage("lblRestartForge"),
|
Forge.getLocalizer().getMessage("lblRestartForge"),
|
||||||
Forge.getLocalizer().getMessage("lblRestart"),
|
Forge.getLocalizer().getMessage("lblRestart"),
|
||||||
Forge.getLocalizer().getMessage("lblLater"), new Callback<Boolean>() {
|
Forge.getLocalizer().getMessage("lblLater"), result -> {
|
||||||
@Override
|
|
||||||
public void run(Boolean result) {
|
|
||||||
if (result) {
|
if (result) {
|
||||||
Forge.restart(true);
|
Forge.restart(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, 4);
|
}, 4);
|
||||||
@@ -958,9 +936,7 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
description,
|
description,
|
||||||
currentValue,
|
currentValue,
|
||||||
null,
|
null,
|
||||||
new Callback<String>() {
|
input -> {
|
||||||
@Override
|
|
||||||
public void run(String input) {
|
|
||||||
if (input == null) return; // cancelled
|
if (input == null) return; // cancelled
|
||||||
if (!input.matches("\\d+")) {
|
if (!input.matches("\\d+")) {
|
||||||
FOptionPane.showMessageDialog("Please enter a valid number.", "Invalid Input");
|
FOptionPane.showMessageDialog("Please enter a valid number.", "Invalid Input");
|
||||||
@@ -972,7 +948,6 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
valueChanged(input);
|
valueChanged(input);
|
||||||
}
|
|
||||||
},
|
},
|
||||||
true // isNumeric
|
true // isNumeric
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -83,12 +83,7 @@ public class FOptionPane extends FDialog {
|
|||||||
|
|
||||||
public static void showConfirmDialog(final String message, final String title, final String yesButtonText, final String noButtonText, final boolean defaultYes, final Callback<Boolean> callback) {
|
public static void showConfirmDialog(final String message, final String title, final String yesButtonText, final String noButtonText, final boolean defaultYes, final Callback<Boolean> callback) {
|
||||||
final List<String> options = ImmutableList.of(yesButtonText, noButtonText);
|
final List<String> options = ImmutableList.of(yesButtonText, noButtonText);
|
||||||
showOptionDialog(message, title, QUESTION_ICON, options, defaultYes ? 0 : 1, new Callback<Integer>() {
|
showOptionDialog(message, title, QUESTION_ICON, options, defaultYes ? 0 : 1, result -> callback.run(result == 0));
|
||||||
@Override
|
|
||||||
public void run(final Integer result) {
|
|
||||||
callback.run(result == 0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showOptionDialog(final String message, final String title, final FImage icon, final List<String> options, final Callback<Integer> callback) {
|
public static void showOptionDialog(final String message, final String title, final FImage icon, final List<String> options, final Callback<Integer> callback) {
|
||||||
@@ -189,10 +184,7 @@ public class FOptionPane extends FDialog {
|
|||||||
container.add(inputField);
|
container.add(inputField);
|
||||||
container.setHeight(inputField.getHeight() + padTop + PADDING);
|
container.setHeight(inputField.getHeight() + padTop + PADDING);
|
||||||
|
|
||||||
final FOptionPane optionPane = new FOptionPane(message, null, title, null, container, ImmutableList.of(Forge.getLocalizer().getMessage("lblOK"), Forge.getLocalizer().getMessage("lblCancel")), 0, new Callback<Integer>() {
|
final FOptionPane optionPane = new FOptionPane(message, null, title, null, container, ImmutableList.of(Forge.getLocalizer().getMessage("lblOK"), Forge.getLocalizer().getMessage("lblCancel")), 0, result -> {
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public void run(final Integer result) {
|
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
if (txtInput != null) {
|
if (txtInput != null) {
|
||||||
callback.run((T)txtInput.getText());
|
callback.run((T)txtInput.getText());
|
||||||
@@ -202,7 +194,6 @@ public class FOptionPane extends FDialog {
|
|||||||
} else {
|
} else {
|
||||||
callback.run(null);
|
callback.run(null);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}) {
|
}) {
|
||||||
@Override
|
@Override
|
||||||
protected float getBottomMargin() {
|
protected float getBottomMargin() {
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package forge.toolbox;
|
|||||||
|
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.toolbox.FEvent.FEventType;
|
import forge.toolbox.FEvent.FEventType;
|
||||||
import forge.util.Callback;
|
|
||||||
|
|
||||||
|
|
||||||
public class FSpinner extends FTextField {
|
public class FSpinner extends FTextField {
|
||||||
@@ -36,9 +35,7 @@ public class FSpinner extends FTextField {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean tap(float x, float y, int count) {
|
public boolean tap(float x, float y, int count) {
|
||||||
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblSelectANumber"), minValue, maxValue, new Callback<Integer>() {
|
GuiChoose.getInteger(Forge.getLocalizer().getMessage("lblSelectANumber"), minValue, maxValue, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
if (result != null && result != value) {
|
if (result != null && result != value) {
|
||||||
int oldValue = value;
|
int oldValue = value;
|
||||||
setValue(result);
|
setValue(result);
|
||||||
@@ -47,7 +44,6 @@ public class FSpinner extends FTextField {
|
|||||||
getChangedHandler().handleEvent(new FEvent(FSpinner.this, FEventType.CHANGE, oldValue));
|
getChangedHandler().handleEvent(new FEvent(FSpinner.this, FEventType.CHANGE, oldValue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,12 +35,7 @@ public class GuiChoose {
|
|||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
getChoices(message, 0, 1, choices, new Callback<List<T>>() {
|
getChoices(message, 0, 1, choices, result -> callback.run(result.isEmpty() ? null : result.get(0)));
|
||||||
@Override
|
|
||||||
public void run(final List<T> result) {
|
|
||||||
callback.run(result.isEmpty() ? null : result.get(0));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T> void oneOrNone(final String message, final Collection<T> choices, final Callback<T> callback) {
|
public static <T> void oneOrNone(final String message, final Collection<T> choices, final Callback<T> callback) {
|
||||||
@@ -48,12 +43,7 @@ public class GuiChoose {
|
|||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
getChoices(message, 0, 1, choices, new Callback<List<T>>() {
|
getChoices(message, 0, 1, choices, result -> callback.run(result.isEmpty() ? null : result.get(0)));
|
||||||
@Override
|
|
||||||
public void run(final List<T> result) {
|
|
||||||
callback.run(result.isEmpty() ? null : result.get(0));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} // getChoiceOptional(String,T...)
|
} // getChoiceOptional(String,T...)
|
||||||
|
|
||||||
// returned Object will never be null
|
// returned Object will never be null
|
||||||
@@ -80,12 +70,9 @@ public class GuiChoose {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
getChoices(message, 1, 1, choices, new Callback<List<T>>() {
|
getChoices(message, 1, 1, choices, result -> {
|
||||||
@Override
|
|
||||||
public void run(final List<T> result) {
|
|
||||||
assert result.size() == 1;
|
assert result.size() == 1;
|
||||||
callback.run(result.get(0));
|
callback.run(result.get(0));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,12 +86,9 @@ public class GuiChoose {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
getChoices(message, 1, 1, choices, new Callback<List<T>>() {
|
getChoices(message, 1, 1, choices, result -> {
|
||||||
@Override
|
|
||||||
public void run(final List<T> result) {
|
|
||||||
assert result.size() == 1;
|
assert result.size() == 1;
|
||||||
callback.run(result.get(0));
|
callback.run(result.get(0));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,9 +156,7 @@ public class GuiChoose {
|
|||||||
}
|
}
|
||||||
choices.add(Forge.getLocalizer().getMessage("lblOther") + "...");
|
choices.add(Forge.getLocalizer().getMessage("lblOther") + "...");
|
||||||
|
|
||||||
oneOrNone(message, choices, new Callback<Object>() {
|
oneOrNone(message, choices, choice -> {
|
||||||
@Override
|
|
||||||
public void run(Object choice) {
|
|
||||||
if (choice instanceof Integer || choice == null) {
|
if (choice instanceof Integer || choice == null) {
|
||||||
callback.run((Integer)choice);
|
callback.run((Integer)choice);
|
||||||
return;
|
return;
|
||||||
@@ -195,14 +177,11 @@ public class GuiChoose {
|
|||||||
}
|
}
|
||||||
prompt += ":";
|
prompt += ":";
|
||||||
getNumberInput(prompt, message, min, max, callback);
|
getNumberInput(prompt, message, min, max, callback);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void getNumberInput(final String prompt, final String message, final int min, final int max, final Callback<Integer> callback) {
|
private static void getNumberInput(final String prompt, final String message, final int min, final int max, final Callback<Integer> callback) {
|
||||||
FOptionPane.showInputDialog(prompt, message, new Callback<String>() {
|
FOptionPane.showInputDialog(prompt, message, result -> {
|
||||||
@Override
|
|
||||||
public void run(String result) {
|
|
||||||
if (result == null) { //that is 'cancel'
|
if (result == null) { //that is 'cancel'
|
||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
@@ -217,7 +196,6 @@ public class GuiChoose {
|
|||||||
|
|
||||||
//re-prompt if invalid input
|
//re-prompt if invalid input
|
||||||
getNumberInput(prompt, message, min, max, callback);
|
getNumberInput(prompt, message, min, max, callback);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,12 +249,7 @@ public class GuiChoose {
|
|||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sortedGetChoices(message, 0, 1, choices, comparer, new Callback<List<T>>() {
|
sortedGetChoices(message, 0, 1, choices, comparer, result -> callback.run(result.isEmpty() ? null : result.get(0)));
|
||||||
@Override
|
|
||||||
public void run(List<T> result) {
|
|
||||||
callback.run(result.isEmpty() ? null : result.get(0));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If comparer is NULL, T has to be comparable. Otherwise you'll get an exception from inside the Arrays.sort() routine
|
// If comparer is NULL, T has to be comparable. Otherwise you'll get an exception from inside the Arrays.sort() routine
|
||||||
@@ -285,12 +258,7 @@ public class GuiChoose {
|
|||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sortedGetChoices(message, 0, 1, choices, comparer, new Callback<List<T>>() {
|
sortedGetChoices(message, 0, 1, choices, comparer, result -> callback.run(result.isEmpty() ? null : result.get(0)));
|
||||||
@Override
|
|
||||||
public void run(List<T> result) {
|
|
||||||
callback.run(result.isEmpty() ? null : result.get(0));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If comparer is NULL, T has to be comparable. Otherwise you'll get an exception from inside the Arrays.sort() routine
|
// If comparer is NULL, T has to be comparable. Otherwise you'll get an exception from inside the Arrays.sort() routine
|
||||||
@@ -299,12 +267,9 @@ public class GuiChoose {
|
|||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sortedGetChoices(message, 1, 1, choices, comparer, new Callback<List<T>>() {
|
sortedGetChoices(message, 1, 1, choices, comparer, result -> {
|
||||||
@Override
|
|
||||||
public void run(List<T> result) {
|
|
||||||
assert result.size() == 1;
|
assert result.size() == 1;
|
||||||
callback.run(result.get(0));
|
callback.run(result.get(0));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -314,12 +279,9 @@ public class GuiChoose {
|
|||||||
callback.run(null);
|
callback.run(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sortedGetChoices(message, 1, 1, choices, comparer, new Callback<List<T>>() {
|
sortedGetChoices(message, 1, 1, choices, comparer, result -> {
|
||||||
@Override
|
|
||||||
public void run(List<T> result) {
|
|
||||||
assert result.size() == 1;
|
assert result.size() == 1;
|
||||||
callback.run(result.get(0));
|
callback.run(result.get(0));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,11 +29,7 @@ public class GuiDialog {
|
|||||||
final String title = c == null ? "Question" : c + " - Ability";
|
final String title = c == null ? "Question" : c + " - Ability";
|
||||||
String questionToUse = StringUtils.isBlank(question) ? "Activate card's ability?" : question;
|
String questionToUse = StringUtils.isBlank(question) ? "Activate card's ability?" : question;
|
||||||
final List<String> opts = options == null ? defaultConfirmOptions : options;
|
final List<String> opts = options == null ? defaultConfirmOptions : options;
|
||||||
FOptionPane.showCardOptionDialog(c, questionToUse, title, FOptionPane.QUESTION_ICON, opts, defaultIsYes ? 0 : 1, new Callback<Integer>() {
|
FOptionPane.showCardOptionDialog(c, questionToUse, title, FOptionPane.QUESTION_ICON, opts, defaultIsYes ? 0 : 1, result -> callback.run(result == 0));
|
||||||
@Override public void run(final Integer result) {
|
|
||||||
callback.run(result == 0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -120,9 +120,7 @@ public class ListChooser<T> extends FContainer {
|
|||||||
|
|
||||||
updateHeight();
|
updateHeight();
|
||||||
|
|
||||||
optionPane = new FOptionPane(null, null, title, null, this, options, 0, new Callback<Integer>() {
|
optionPane = new FOptionPane(null, null, title, null, this, options, 0, result -> {
|
||||||
@Override
|
|
||||||
public void run(Integer result) {
|
|
||||||
called = false;
|
called = false;
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
callback.run(lstChoices.getSelectedItems());
|
callback.run(lstChoices.getSelectedItems());
|
||||||
@@ -133,7 +131,6 @@ public class ListChooser<T> extends FContainer {
|
|||||||
else {
|
else {
|
||||||
callback.run(new ArrayList<>());
|
callback.run(new ArrayList<>());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}) {
|
}) {
|
||||||
@Override
|
@Override
|
||||||
protected boolean padAboveAndBelow() {
|
protected boolean padAboveAndBelow() {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package forge.util;
|
package forge.util;
|
||||||
|
|
||||||
public abstract class Callback<T> {
|
@FunctionalInterface
|
||||||
public abstract void run(T result);
|
public interface Callback<T> {
|
||||||
|
void run(T result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package forge.util;
|
|||||||
|
|
||||||
import forge.gui.FThreads;
|
import forge.gui.FThreads;
|
||||||
|
|
||||||
public abstract class WaitCallback<T> extends Callback<T> implements Runnable {
|
public abstract class WaitCallback<T> implements Callback<T>, Runnable {
|
||||||
public class Lock {
|
public class Lock {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user