mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Merge pull request #1094 from kevlahnota/master
use single assetmanager
This commit is contained in:
@@ -8,6 +8,7 @@ import com.badlogic.gdx.InputProcessor;
|
|||||||
import com.badlogic.gdx.graphics.Cursor;
|
import com.badlogic.gdx.graphics.Cursor;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
import com.badlogic.gdx.graphics.Pixmap;
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.graphics.TextureData;
|
import com.badlogic.gdx.graphics.TextureData;
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
@@ -78,6 +79,7 @@ public class Forge implements ApplicationListener {
|
|||||||
protected static TransitionScreen transitionScreen;
|
protected static TransitionScreen transitionScreen;
|
||||||
public static KeyInputAdapter keyInputAdapter;
|
public static KeyInputAdapter keyInputAdapter;
|
||||||
private static boolean exited;
|
private static boolean exited;
|
||||||
|
private boolean needsUpdate = false;
|
||||||
public static boolean safeToClose = true;
|
public static boolean safeToClose = true;
|
||||||
public static boolean magnify = false;
|
public static boolean magnify = false;
|
||||||
public static boolean magnifyToggle = true;
|
public static boolean magnifyToggle = true;
|
||||||
@@ -784,6 +786,10 @@ public class Forge implements ApplicationListener {
|
|||||||
try {
|
try {
|
||||||
ImageCache.allowSingleLoad();
|
ImageCache.allowSingleLoad();
|
||||||
ForgeAnimation.advanceAll();
|
ForgeAnimation.advanceAll();
|
||||||
|
if (needsUpdate) {
|
||||||
|
if (getAssets().manager.update())
|
||||||
|
needsUpdate = false;
|
||||||
|
}
|
||||||
|
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // Clear the screen.
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // Clear the screen.
|
||||||
|
|
||||||
@@ -920,6 +926,8 @@ public class Forge implements ApplicationListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resume() {
|
public void resume() {
|
||||||
|
Texture.setAssetManager(getAssets().manager);
|
||||||
|
needsUpdate = true;
|
||||||
if (MatchController.getHostedMatch() != null) {
|
if (MatchController.getHostedMatch() != null) {
|
||||||
MatchController.getHostedMatch().resume();
|
MatchController.getHostedMatch().resume();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,11 +120,11 @@ public class Config {
|
|||||||
|
|
||||||
public TextureAtlas getAtlas(String spriteAtlas) {
|
public TextureAtlas getAtlas(String spriteAtlas) {
|
||||||
String fileName = getFile(spriteAtlas).path();
|
String fileName = getFile(spriteAtlas).path();
|
||||||
if (!Forge.getAssets().others.contains(fileName, TextureAtlas.class)) {
|
if (!Forge.getAssets().manager.contains(fileName, TextureAtlas.class)) {
|
||||||
Forge.getAssets().others.load(fileName, TextureAtlas.class);
|
Forge.getAssets().manager.load(fileName, TextureAtlas.class);
|
||||||
Forge.getAssets().others.finishLoadingAsset(fileName);
|
Forge.getAssets().manager.finishLoadingAsset(fileName);
|
||||||
}
|
}
|
||||||
return Forge.getAssets().others.get(fileName);
|
return Forge.getAssets().manager.get(fileName);
|
||||||
}
|
}
|
||||||
public SettingData getSettingData()
|
public SettingData getSettingData()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ import forge.gui.GuiBase;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class Assets implements Disposable {
|
public class Assets implements Disposable {
|
||||||
public AssetManager cards = new AssetManager(new AbsoluteFileHandleResolver());
|
public AssetManager manager = new AssetManager(new AbsoluteFileHandleResolver());
|
||||||
public AssetManager others = new AssetManager(new AbsoluteFileHandleResolver());
|
|
||||||
public HashMap<Integer, FSkinFont> fonts = new HashMap<>();
|
public HashMap<Integer, FSkinFont> fonts = new HashMap<>();
|
||||||
public ObjectMap<Integer, BitmapFont> counterFonts = new ObjectMap<>();
|
public ObjectMap<Integer, BitmapFont> counterFonts = new ObjectMap<>();
|
||||||
public ObjectMap<String, Texture> generatedCards = new ObjectMap<>(512);
|
public ObjectMap<String, Texture> generatedCards = new ObjectMap<>(512);
|
||||||
@@ -34,8 +33,7 @@ public class Assets implements Disposable {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
cards.dispose();
|
manager.dispose();
|
||||||
others.dispose();
|
|
||||||
for (BitmapFont bitmapFont : counterFonts.values())
|
for (BitmapFont bitmapFont : counterFonts.values())
|
||||||
bitmapFont.dispose();
|
bitmapFont.dispose();
|
||||||
for (Texture texture : generatedCards.values())
|
for (Texture texture : generatedCards.values())
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class FSkin {
|
|||||||
* the skin name
|
* the skin name
|
||||||
*/
|
*/
|
||||||
public static void loadLight(String skinName, final SplashScreen splashScreen) {
|
public static void loadLight(String skinName, final SplashScreen splashScreen) {
|
||||||
AssetManager manager = Forge.getAssets().others;
|
AssetManager manager = Forge.getAssets().manager;
|
||||||
preferredName = skinName.toLowerCase().replace(' ', '_');
|
preferredName = skinName.toLowerCase().replace(' ', '_');
|
||||||
|
|
||||||
//reset hd buttons/icons
|
//reset hd buttons/icons
|
||||||
@@ -236,7 +236,7 @@ public class FSkin {
|
|||||||
parameter.magFilter = Texture.TextureFilter.Linear;
|
parameter.magFilter = Texture.TextureFilter.Linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
AssetManager manager = Forge.getAssets().others;
|
AssetManager manager = Forge.getAssets().manager;
|
||||||
|
|
||||||
// Grab and test various sprite files.
|
// Grab and test various sprite files.
|
||||||
final FileHandle f1 = getDefaultSkinFile(SourceFile.ICONS.getFilename());
|
final FileHandle f1 = getDefaultSkinFile(SourceFile.ICONS.getFilename());
|
||||||
|
|||||||
@@ -131,9 +131,9 @@ public enum FSkinTexture implements FImage {
|
|||||||
if (preferredFile.path().contains("fallback_skin")) {
|
if (preferredFile.path().contains("fallback_skin")) {
|
||||||
texture = new Texture(preferredFile);
|
texture = new Texture(preferredFile);
|
||||||
} else {
|
} else {
|
||||||
Forge.getAssets().others.load(preferredFile.path(), Texture.class);
|
Forge.getAssets().manager.load(preferredFile.path(), Texture.class);
|
||||||
Forge.getAssets().others.finishLoadingAsset(preferredFile.path());
|
Forge.getAssets().manager.finishLoadingAsset(preferredFile.path());
|
||||||
texture = Forge.getAssets().others.get(preferredFile.path(), Texture.class);
|
texture = Forge.getAssets().manager.get(preferredFile.path(), Texture.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (final Exception e) {
|
catch (final Exception e) {
|
||||||
@@ -155,9 +155,9 @@ public enum FSkinTexture implements FImage {
|
|||||||
if (defaultFile.path().contains("fallback_skin")) {
|
if (defaultFile.path().contains("fallback_skin")) {
|
||||||
texture = new Texture(defaultFile);
|
texture = new Texture(defaultFile);
|
||||||
} else {
|
} else {
|
||||||
Forge.getAssets().others.load(defaultFile.path(), Texture.class);
|
Forge.getAssets().manager.load(defaultFile.path(), Texture.class);
|
||||||
Forge.getAssets().others.finishLoadingAsset(defaultFile.path());
|
Forge.getAssets().manager.finishLoadingAsset(defaultFile.path());
|
||||||
texture = Forge.getAssets().others.get(defaultFile.path(), Texture.class);
|
texture = Forge.getAssets().manager.get(defaultFile.path(), Texture.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (final Exception e) {
|
catch (final Exception e) {
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
package forge.assets;
|
package forge.assets;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -78,6 +79,7 @@ public class ImageCache {
|
|||||||
private static List<String> borderlessCardlistKey = FileUtil.readFile(ForgeConstants.BORDERLESS_CARD_LIST_FILE);
|
private static List<String> borderlessCardlistKey = FileUtil.readFile(ForgeConstants.BORDERLESS_CARD_LIST_FILE);
|
||||||
static int maxCardCapacity = 400; //default card capacity
|
static int maxCardCapacity = 400; //default card capacity
|
||||||
static EvictingQueue<String> q;
|
static EvictingQueue<String> q;
|
||||||
|
static Set<String> cardsLoaded = new HashSet<>(800);
|
||||||
static Queue<String> syncQ;
|
static Queue<String> syncQ;
|
||||||
static TextureParameter defaultParameter = new TextureParameter();
|
static TextureParameter defaultParameter = new TextureParameter();
|
||||||
static TextureParameter filtered = new TextureParameter();
|
static TextureParameter filtered = new TextureParameter();
|
||||||
@@ -124,7 +126,12 @@ public class ImageCache {
|
|||||||
}
|
}
|
||||||
public static void disposeTextures(){
|
public static void disposeTextures(){
|
||||||
CardRenderer.clearcardArtCache();
|
CardRenderer.clearcardArtCache();
|
||||||
Forge.getAssets().cards.clear();
|
//unload all cardsLoaded
|
||||||
|
for (String fileName : cardsLoaded) {
|
||||||
|
if (Forge.getAssets().manager.contains(fileName))
|
||||||
|
Forge.getAssets().manager.unload(fileName);
|
||||||
|
}
|
||||||
|
cardsLoaded.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Texture getImage(InventoryItem ii) {
|
public static Texture getImage(InventoryItem ii) {
|
||||||
@@ -200,7 +207,7 @@ public class ImageCache {
|
|||||||
public static Texture getImage(String imageKey, boolean useDefaultIfNotFound) {
|
public static Texture getImage(String imageKey, boolean useDefaultIfNotFound) {
|
||||||
return getImage(imageKey, useDefaultIfNotFound, false);
|
return getImage(imageKey, useDefaultIfNotFound, false);
|
||||||
}
|
}
|
||||||
public static Texture getImage(String imageKey, boolean useDefaultIfNotFound, boolean useOtherCache) {
|
public static Texture getImage(String imageKey, boolean useDefaultIfNotFound, boolean others) {
|
||||||
if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES))
|
if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@@ -225,7 +232,7 @@ public class ImageCache {
|
|||||||
File imageFile = ImageKeys.getImageFile(imageKey);
|
File imageFile = ImageKeys.getImageFile(imageKey);
|
||||||
if (useDefaultIfNotFound) {
|
if (useDefaultIfNotFound) {
|
||||||
// Load from file and add to cache if not found in cache initially.
|
// Load from file and add to cache if not found in cache initially.
|
||||||
image = getAsset(imageKey, imageFile, useOtherCache);
|
image = getAsset(imageKey, imageFile, others);
|
||||||
|
|
||||||
if (image != null) { return image; }
|
if (image != null) { return image; }
|
||||||
|
|
||||||
@@ -241,7 +248,7 @@ public class ImageCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
image = loadAsset(imageKey, imageFile, useOtherCache);
|
image = loadAsset(imageKey, imageFile, others);
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
image = null;
|
image = null;
|
||||||
}
|
}
|
||||||
@@ -260,37 +267,34 @@ public class ImageCache {
|
|||||||
}
|
}
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
static Texture getAsset(String imageKey, File file, boolean otherCache) {
|
static Texture getAsset(String imageKey, File file, boolean others) {
|
||||||
if (file == null)
|
if (file == null)
|
||||||
return null;
|
return null;
|
||||||
if (!otherCache && Forge.enableUIMask.equals("Full") && isBorderless(imageKey))
|
if (!others && Forge.enableUIMask.equals("Full") && isBorderless(imageKey))
|
||||||
return Forge.getAssets().generatedCards.get(imageKey);
|
return Forge.getAssets().generatedCards.get(imageKey);
|
||||||
if (otherCache)
|
return Forge.getAssets().manager.get(file.getPath(), Texture.class, false);
|
||||||
return Forge.getAssets().others.get(file.getPath(), Texture.class, false);
|
|
||||||
return Forge.getAssets().cards.get(file.getPath(), Texture.class, false);
|
|
||||||
}
|
}
|
||||||
static Texture loadAsset(String imageKey, File file, boolean otherCache) {
|
static Texture loadAsset(String imageKey, File file, boolean others) {
|
||||||
if (file == null)
|
if (file == null)
|
||||||
return null;
|
return null;
|
||||||
|
if (!others) {
|
||||||
syncQ.add(file.getPath());
|
syncQ.add(file.getPath());
|
||||||
if (!otherCache && Forge.getAssets().cards.getLoadedAssets() > maxCardCapacity) {
|
cardsLoaded.add(file.getPath());
|
||||||
unloadCardTextures(Forge.getAssets().cards);
|
}
|
||||||
|
if (!others && cardsLoaded.size() > maxCardCapacity) {
|
||||||
|
unloadCardTextures(Forge.getAssets().manager);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String fileName = file.getPath();
|
String fileName = file.getPath();
|
||||||
//load to assetmanager
|
//load to assetmanager
|
||||||
if (otherCache) {
|
Forge.getAssets().manager.load(fileName, Texture.class, Forge.isTextureFilteringEnabled() ? filtered : defaultParameter);
|
||||||
Forge.getAssets().others.load(fileName, Texture.class, Forge.isTextureFilteringEnabled() ? filtered : defaultParameter);
|
Forge.getAssets().manager.finishLoadingAsset(fileName);
|
||||||
Forge.getAssets().others.finishLoadingAsset(fileName);
|
|
||||||
} else {
|
|
||||||
Forge.getAssets().cards.load(fileName, Texture.class, Forge.isTextureFilteringEnabled() ? filtered : defaultParameter);
|
|
||||||
Forge.getAssets().cards.finishLoadingAsset(fileName);
|
|
||||||
}
|
|
||||||
//return loaded assets
|
//return loaded assets
|
||||||
if (otherCache) {
|
if (others) {
|
||||||
return Forge.getAssets().others.get(fileName, Texture.class, false);
|
return Forge.getAssets().manager.get(fileName, Texture.class, false);
|
||||||
} else {
|
} else {
|
||||||
Texture t = Forge.getAssets().cards.get(fileName, Texture.class, false);
|
Texture t = Forge.getAssets().manager.get(fileName, Texture.class, false);
|
||||||
//if full bordermasking is enabled, update the border color
|
//if full bordermasking is enabled, update the border color
|
||||||
if (Forge.enableUIMask.equals("Full")) {
|
if (Forge.enableUIMask.equals("Full")) {
|
||||||
boolean borderless = isBorderless(imageKey);
|
boolean borderless = isBorderless(imageKey);
|
||||||
@@ -306,16 +310,18 @@ public class ImageCache {
|
|||||||
static void unloadCardTextures(AssetManager manager) {
|
static void unloadCardTextures(AssetManager manager) {
|
||||||
//get latest images from syncQ
|
//get latest images from syncQ
|
||||||
Set<String> newQ = Sets.newHashSet(syncQ);
|
Set<String> newQ = Sets.newHashSet(syncQ);
|
||||||
//get loaded images from assetmanager
|
//get all images not in newQ (cardLists to unload)
|
||||||
Set<String> old = Sets.newHashSet(manager.getAssetNames());
|
Set<String> toUnload = Sets.difference(cardsLoaded, newQ);
|
||||||
//get all images not in newQ (old images to unload)
|
|
||||||
Set<String> toUnload = Sets.difference(old, newQ);
|
|
||||||
//unload from assetmanager to save RAM
|
//unload from assetmanager to save RAM
|
||||||
for (String asset : toUnload) {
|
for (String asset : toUnload) {
|
||||||
|
if(manager.contains(asset))
|
||||||
manager.unload(asset);
|
manager.unload(asset);
|
||||||
}
|
}
|
||||||
//clear cachedArt since this is dependant to the loaded texture
|
//clear cachedArt since this is dependant to the loaded texture
|
||||||
CardRenderer.clearcardArtCache();
|
CardRenderer.clearcardArtCache();
|
||||||
|
cardsLoaded.clear();
|
||||||
|
//update with recent
|
||||||
|
cardsLoaded.addAll(newQ);
|
||||||
}
|
}
|
||||||
public static void preloadCache(Iterable<String> keys) {
|
public static void preloadCache(Iterable<String> keys) {
|
||||||
if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES))
|
if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES))
|
||||||
|
|||||||
@@ -131,32 +131,17 @@ public class FDeckChooser extends FScreen {
|
|||||||
lstDecks = new DeckManager(gameType0);
|
lstDecks = new DeckManager(gameType0);
|
||||||
isAi = isAi0;
|
isAi = isAi0;
|
||||||
|
|
||||||
lstDecks.setItemActivateHandler(new FEventHandler() {
|
lstDecks.setItemActivateHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
if (lstDecks.getGameType() == GameType.DeckManager) {
|
if (lstDecks.getGameType() == GameType.DeckManager) {
|
||||||
//for Deck Editor, edit deck instead of accepting
|
//for Deck Editor, edit deck instead of accepting
|
||||||
editSelectedDeck();
|
editSelectedDeck();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
accept();
|
accept();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
btnNewDeck.setCommand(new FEventHandler() {
|
btnNewDeck.setCommand(event -> createNewDeck());
|
||||||
@Override
|
btnEditDeck.setCommand(event -> editSelectedDeck());
|
||||||
public void handleEvent(FEvent e) {
|
btnViewDeck.setCommand(event -> {
|
||||||
createNewDeck();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
btnEditDeck.setCommand(new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
editSelectedDeck();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
btnViewDeck.setCommand(new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
if (selectedDeckType != DeckType.STANDARD_COLOR_DECK && selectedDeckType != DeckType.STANDARD_CARDGEN_DECK
|
if (selectedDeckType != DeckType.STANDARD_COLOR_DECK && selectedDeckType != DeckType.STANDARD_CARDGEN_DECK
|
||||||
&& selectedDeckType != DeckType.PIONEER_CARDGEN_DECK && selectedDeckType != DeckType.HISTORIC_CARDGEN_DECK
|
&& selectedDeckType != DeckType.PIONEER_CARDGEN_DECK && selectedDeckType != DeckType.HISTORIC_CARDGEN_DECK
|
||||||
&& selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.LEGACY_CARDGEN_DECK
|
&& selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.LEGACY_CARDGEN_DECK
|
||||||
@@ -165,11 +150,8 @@ public class FDeckChooser extends FScreen {
|
|||||||
&& selectedDeckType != DeckType.RANDOM_COMMANDER_DECK && selectedDeckType != DeckType.RANDOM_CARDGEN_COMMANDER_DECK) {
|
&& selectedDeckType != DeckType.RANDOM_COMMANDER_DECK && selectedDeckType != DeckType.RANDOM_CARDGEN_COMMANDER_DECK) {
|
||||||
FDeckViewer.show(getDeck(), false, DeckType.DRAFT_DECK.equals(selectedDeckType));
|
FDeckViewer.show(getDeck(), false, DeckType.DRAFT_DECK.equals(selectedDeckType));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
btnRandom.setCommand(new FEventHandler() {
|
btnRandom.setCommand(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
if (lstDecks.getGameType() == GameType.DeckManager) {
|
if (lstDecks.getGameType() == GameType.DeckManager) {
|
||||||
//for Deck Editor, test deck instead of randomly selecting deck
|
//for Deck Editor, test deck instead of randomly selecting deck
|
||||||
testSelectedDeck();
|
testSelectedDeck();
|
||||||
@@ -199,7 +181,9 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
try {
|
||||||
if (isAi && !isGeneratedDeck(selectedDeckType) && Forge.autoAIDeckSelection) {
|
if (isAi && !isGeneratedDeck(selectedDeckType) && Forge.autoAIDeckSelection) {
|
||||||
|
btnRandom.setEnabled(false);
|
||||||
AIDecks = lstDecks.getPool().toFlatList().parallelStream().filter(deckProxy -> deckProxy.getAI().inMainDeck == 0).collect(Collectors.toList());
|
AIDecks = lstDecks.getPool().toFlatList().parallelStream().filter(deckProxy -> deckProxy.getAI().inMainDeck == 0).collect(Collectors.toList());
|
||||||
size = AIDecks.size();
|
size = AIDecks.size();
|
||||||
}
|
}
|
||||||
@@ -207,9 +191,12 @@ public class FDeckChooser extends FScreen {
|
|||||||
lstDecks.setSelectedItem(AIDecks.get(MyRandom.getRandom().nextInt(size)));
|
lstDecks.setSelectedItem(AIDecks.get(MyRandom.getRandom().nextInt(size)));
|
||||||
else
|
else
|
||||||
DeckgenUtil.randomSelect(lstDecks);
|
DeckgenUtil.randomSelect(lstDecks);
|
||||||
|
} catch (Exception ee) {
|
||||||
|
DeckgenUtil.randomSelect(lstDecks);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
btnRandom.setEnabled(true);
|
||||||
accept();
|
accept();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
switch (lstDecks.getGameType()) {
|
switch (lstDecks.getGameType()) {
|
||||||
case Constructed:
|
case Constructed:
|
||||||
@@ -371,9 +358,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
} else {
|
} else {
|
||||||
editor = new FDeckEditor(getEditorType(), "", false);
|
editor = new FDeckEditor(getEditorType(), "", false);
|
||||||
}
|
}
|
||||||
editor.setSaveHandler(new FEventHandler() {
|
editor.setSaveHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
//ensure user returns to proper deck type and that list is refreshed if new deck is saved
|
//ensure user returns to proper deck type and that list is refreshed if new deck is saved
|
||||||
if (!needRefreshOnActivate) {
|
if (!needRefreshOnActivate) {
|
||||||
needRefreshOnActivate = true;
|
needRefreshOnActivate = true;
|
||||||
@@ -397,7 +382,6 @@ public class FDeckChooser extends FScreen {
|
|||||||
setSelectedDeckType(DeckType.CUSTOM_DECK);
|
setSelectedDeckType(DeckType.CUSTOM_DECK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
Forge.openScreen(editor);
|
Forge.openScreen(editor);
|
||||||
}
|
}
|
||||||
@@ -624,25 +608,19 @@ public class FDeckChooser extends FScreen {
|
|||||||
cmbDeckTypes.setAlignment(Align.center);
|
cmbDeckTypes.setAlignment(Align.center);
|
||||||
restoreSavedState();
|
restoreSavedState();
|
||||||
|
|
||||||
cmbDeckTypes.setChangedHandler(new FEventHandler() {
|
cmbDeckTypes.setChangedHandler(event -> {
|
||||||
@Override
|
|
||||||
|
|
||||||
public void handleEvent(final FEvent e) {
|
|
||||||
final DeckType deckType = cmbDeckTypes.getSelectedItem();
|
final DeckType deckType = cmbDeckTypes.getSelectedItem();
|
||||||
|
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_DECK || deckType == DeckType.NET_COMMANDER_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_DECK || deckType == DeckType.NET_COMMANDER_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = deckType == DeckType.NET_COMMANDER_DECK ? GameType.Commander : GameType.Constructed;
|
gameType = deckType == DeckType.NET_COMMANDER_DECK ? GameType.Commander : GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckCategory category = NetDeckCategory.selectAndLoad(gameType);
|
final NetDeckCategory category = NetDeckCategory.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && netDeckCategory != null) {
|
if (selectedDeckType == deckType && netDeckCategory != null) {
|
||||||
@@ -652,26 +630,21 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
netDeckCategory = category;
|
netDeckCategory = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_STANDARD_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_STANDARD_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = GameType.Constructed;
|
gameType = GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckArchiveStandard category = NetDeckArchiveStandard.selectAndLoad(gameType);
|
final NetDeckArchiveStandard category = NetDeckArchiveStandard.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && NetDeckArchiveStandard != null) {
|
if (selectedDeckType == deckType && NetDeckArchiveStandard != null) {
|
||||||
@@ -681,26 +654,21 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetDeckArchiveStandard = category;
|
NetDeckArchiveStandard = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_PIONEER_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_PIONEER_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = GameType.Constructed;
|
gameType = GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckArchivePioneer category = NetDeckArchivePioneer.selectAndLoad(gameType);
|
final NetDeckArchivePioneer category = NetDeckArchivePioneer.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && NetDeckArchivePioneer != null) {
|
if (selectedDeckType == deckType && NetDeckArchivePioneer != null) {
|
||||||
@@ -710,26 +678,21 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetDeckArchivePioneer = category;
|
NetDeckArchivePioneer = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_MODERN_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_MODERN_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = GameType.Constructed;
|
gameType = GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckArchiveModern category = NetDeckArchiveModern.selectAndLoad(gameType);
|
final NetDeckArchiveModern category = NetDeckArchiveModern.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && NetDeckArchiveModern != null) {
|
if (selectedDeckType == deckType && NetDeckArchiveModern != null) {
|
||||||
@@ -739,26 +702,21 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetDeckArchiveModern = category;
|
NetDeckArchiveModern = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_PAUPER_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_PAUPER_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = GameType.Constructed;
|
gameType = GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckArchivePauper category = NetDeckArchivePauper.selectAndLoad(gameType);
|
final NetDeckArchivePauper category = NetDeckArchivePauper.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && NetDeckArchivePauper != null) {
|
if (selectedDeckType == deckType && NetDeckArchivePauper != null) {
|
||||||
@@ -768,26 +726,21 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetDeckArchivePauper = category;
|
NetDeckArchivePauper = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_LEGACY_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_LEGACY_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = GameType.Constructed;
|
gameType = GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckArchiveLegacy category = NetDeckArchiveLegacy.selectAndLoad(gameType);
|
final NetDeckArchiveLegacy category = NetDeckArchiveLegacy.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && NetDeckArchiveLegacy != null) {
|
if (selectedDeckType == deckType && NetDeckArchiveLegacy != null) {
|
||||||
@@ -797,26 +750,21 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetDeckArchiveLegacy = category;
|
NetDeckArchiveLegacy = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_VINTAGE_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_VINTAGE_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = GameType.Constructed;
|
gameType = GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckArchiveVintage category = NetDeckArchiveVintage.selectAndLoad(gameType);
|
final NetDeckArchiveVintage category = NetDeckArchiveVintage.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && NetDeckArchiveVintage != null) {
|
if (selectedDeckType == deckType && NetDeckArchiveVintage != null) {
|
||||||
@@ -826,26 +774,21 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetDeckArchiveVintage = category;
|
NetDeckArchiveVintage = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_BLOCK_DECK)) {
|
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_BLOCK_DECK)) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
GameType gameType = lstDecks.getGameType();
|
GameType gameType = lstDecks.getGameType();
|
||||||
if (gameType == GameType.DeckManager) {
|
if (gameType == GameType.DeckManager) {
|
||||||
gameType = GameType.Constructed;
|
gameType = GameType.Constructed;
|
||||||
}
|
}
|
||||||
final NetDeckArchiveBlock category = NetDeckArchiveBlock.selectAndLoad(gameType);
|
final NetDeckArchiveBlock category = NetDeckArchiveBlock.selectAndLoad(gameType);
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
|
||||||
if (selectedDeckType == deckType && NetDeckArchiveBlock != null) {
|
if (selectedDeckType == deckType && NetDeckArchiveBlock != null) {
|
||||||
@@ -855,18 +798,15 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetDeckArchiveBlock = category;
|
NetDeckArchiveBlock = category;
|
||||||
refreshDecksList(deckType, true, e);
|
refreshDecksList(deckType, true, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
refreshDecksList(deckType, false, e);
|
refreshDecksList(deckType, false, event);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
add(cmbDeckTypes);
|
add(cmbDeckTypes);
|
||||||
add(lstDecks);
|
add(lstDecks);
|
||||||
@@ -888,11 +828,11 @@ public class FDeckChooser extends FScreen {
|
|||||||
saveState();
|
saveState();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshDecksList(DeckType deckType, boolean forceRefresh, FEvent e) {
|
private void refreshDecksList(DeckType deckType, boolean forceRefresh, FEvent event) {
|
||||||
if (selectedDeckType == deckType && !forceRefresh) { return; }
|
if (selectedDeckType == deckType && !forceRefresh) { return; }
|
||||||
selectedDeckType = deckType;
|
selectedDeckType = deckType;
|
||||||
|
|
||||||
if (e == null) {
|
if (event == null) {
|
||||||
refreshingDeckType = true;
|
refreshingDeckType = true;
|
||||||
cmbDeckTypes.setSelectedItem(deckType);
|
cmbDeckTypes.setSelectedItem(deckType);
|
||||||
refreshingDeckType = false;
|
refreshingDeckType = false;
|
||||||
@@ -1186,7 +1126,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
|
|
||||||
btnRandom.setLeft(getWidth() - PADDING - btnRandom.getWidth());
|
btnRandom.setLeft(getWidth() - PADDING - btnRandom.getWidth());
|
||||||
|
|
||||||
if (e != null) { //set default list selection if from combo box change event
|
if (event != null) { //set default list selection if from combo box change event
|
||||||
if (deckType == DeckType.COLOR_DECK) {
|
if (deckType == DeckType.COLOR_DECK) {
|
||||||
// default selection = basic two color deck
|
// default selection = basic two color deck
|
||||||
lstDecks.setSelectedIndices(new Integer[]{0, 1});
|
lstDecks.setSelectedIndices(new Integer[]{0, 1});
|
||||||
@@ -1510,9 +1450,8 @@ public class FDeckChooser extends FScreen {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
//needed for loading net decks
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
final NetDeckCategory netCat;
|
final NetDeckCategory netCat;
|
||||||
if (allowedDeckTypes.contains(DeckType.NET_DECK)) {
|
if (allowedDeckTypes.contains(DeckType.NET_DECK)) {
|
||||||
netCat = NetDeckCategory.selectAndLoad(GameType.Constructed);
|
netCat = NetDeckCategory.selectAndLoad(GameType.Constructed);
|
||||||
@@ -1520,12 +1459,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
netCat = null;
|
netCat = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, netCat);
|
GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, netCat);
|
||||||
FModel.setGauntletData(gauntlet);
|
FModel.setGauntletData(gauntlet);
|
||||||
|
|
||||||
@@ -1535,11 +1469,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
players.add(new RegisteredPlayer(gauntlet.getDecks().get(gauntlet.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer()));
|
players.add(new RegisteredPlayer(gauntlet.getDecks().get(gauntlet.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer()));
|
||||||
|
|
||||||
gauntlet.startRound(players, humanPlayer);
|
gauntlet.startRound(players, humanPlayer);
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1554,9 +1484,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
public void run(final Deck aiDeck) {
|
public void run(final Deck aiDeck) {
|
||||||
if (aiDeck == null) { return; }
|
if (aiDeck == null) { return; }
|
||||||
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Set<GameType> appliedVariants = new HashSet<>();
|
Set<GameType> appliedVariants = new HashSet<>();
|
||||||
appliedVariants.add(variant);
|
appliedVariants.add(variant);
|
||||||
|
|
||||||
@@ -1573,7 +1501,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);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,39 +22,25 @@ public class LoadingOverlay extends FOverlay {
|
|||||||
private static final FSkinFont FONT = FSkinFont.get(22);
|
private static final FSkinFont FONT = FSkinFont.get(22);
|
||||||
private static final FSkinColor BACK_COLOR = FSkinColor.get(Colors.CLR_ACTIVE).alphaColor(0.75f);
|
private static final FSkinColor BACK_COLOR = FSkinColor.get(Colors.CLR_ACTIVE).alphaColor(0.75f);
|
||||||
private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||||
|
|
||||||
public static void show(String caption0, final Runnable runnable) {
|
public static void show(String caption0, final Runnable runnable) {
|
||||||
final LoadingOverlay loader = new LoadingOverlay(caption0);
|
show(caption0, false, runnable);
|
||||||
|
}
|
||||||
|
public static void show(String caption0, boolean textMode, final Runnable runnable) {
|
||||||
|
final LoadingOverlay loader = new LoadingOverlay(caption0, textMode);
|
||||||
loader.show(); //show loading overlay then delay running remaining logic so UI can respond
|
loader.show(); //show loading overlay then delay running remaining logic so UI can respond
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() {
|
ThreadUtil.invokeInGameThread(() -> FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
runnable.run();
|
runnable.run();
|
||||||
loader.hide();
|
loader.hide();
|
||||||
loader.finishedloading(); //setLoadingaMatch to false
|
loader.finishedloading(); //setLoadingaMatch to false
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void runBackgroundTask(String caption0, final Runnable task) {
|
public static void runBackgroundTask(String caption0, final Runnable task) {
|
||||||
final LoadingOverlay loader = new LoadingOverlay(caption0);
|
final LoadingOverlay loader = new LoadingOverlay(caption0, true);
|
||||||
loader.show();
|
loader.show();
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
task.run();
|
task.run();
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> loader.hide());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
loader.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,6 +49,7 @@ public class LoadingOverlay extends FOverlay {
|
|||||||
|
|
||||||
public LoadingOverlay(String caption0) {
|
public LoadingOverlay(String caption0) {
|
||||||
caption = caption0;
|
caption = caption0;
|
||||||
|
textMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LoadingOverlay(String caption0, boolean textOnly) {
|
public LoadingOverlay(String caption0, boolean textOnly) {
|
||||||
|
|||||||
@@ -44,8 +44,6 @@ import forge.screens.LoadingOverlay;
|
|||||||
import forge.screens.settings.SettingsScreen;
|
import forge.screens.settings.SettingsScreen;
|
||||||
import forge.toolbox.FCheckBox;
|
import forge.toolbox.FCheckBox;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
@@ -111,9 +109,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
cbPlayerCount.addItem(i);
|
cbPlayerCount.addItem(i);
|
||||||
}
|
}
|
||||||
cbPlayerCount.setSelectedItem(2);
|
cbPlayerCount.setSelectedItem(2);
|
||||||
cbPlayerCount.setChangedHandler(new FEventHandler() {
|
cbPlayerCount.setChangedHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
int numPlayers = getNumPlayers();
|
int numPlayers = getNumPlayers();
|
||||||
while(lobby.getNumberOfSlots() < getNumPlayers()){
|
while(lobby.getNumberOfSlots() < getNumPlayers()){
|
||||||
lobby.addSlot();
|
lobby.addSlot();
|
||||||
@@ -127,7 +123,6 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
playersScroll.revalidate();
|
playersScroll.revalidate();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
initLobby(lobby0);
|
initLobby(lobby0);
|
||||||
@@ -139,12 +134,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
cbGamesInMatch.addItem("3");
|
cbGamesInMatch.addItem("3");
|
||||||
cbGamesInMatch.addItem("5");
|
cbGamesInMatch.addItem("5");
|
||||||
cbGamesInMatch.setSelectedItem(FModel.getPreferences().getPref((FPref.UI_MATCHES_PER_GAME)));
|
cbGamesInMatch.setSelectedItem(FModel.getPreferences().getPref((FPref.UI_MATCHES_PER_GAME)));
|
||||||
cbGamesInMatch.setChangedHandler(new FEventHandler() {
|
cbGamesInMatch.setChangedHandler(event -> FModel.getPreferences().setPref(FPref.UI_MATCHES_PER_GAME, cbGamesInMatch.getSelectedItem()));
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
FModel.getPreferences().setPref(FPref.UI_MATCHES_PER_GAME, cbGamesInMatch.getSelectedItem());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
add(lblVariants);
|
add(lblVariants);
|
||||||
add(cbVariants);
|
add(cbVariants);
|
||||||
@@ -161,9 +151,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
cbVariants.addItem(GameType.Archenemy);
|
cbVariants.addItem(GameType.Archenemy);
|
||||||
cbVariants.addItem(GameType.ArchenemyRumble);
|
cbVariants.addItem(GameType.ArchenemyRumble);
|
||||||
cbVariants.addItem(Forge.getLocalizer().getMessage("lblMore"));
|
cbVariants.addItem(Forge.getLocalizer().getMessage("lblMore"));
|
||||||
cbVariants.setChangedHandler(new FEventHandler() {
|
cbVariants.setChangedHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
if (cbVariants.getSelectedIndex() <= 0) {
|
if (cbVariants.getSelectedIndex() <= 0) {
|
||||||
lobby.clearVariants();
|
lobby.clearVariants();
|
||||||
updateLayoutForVariants();
|
updateLayoutForVariants();
|
||||||
@@ -186,7 +174,6 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
FModel.getPreferences().setGameType(FPref.UI_APPLIED_VARIANTS, gameTypes);
|
FModel.getPreferences().setGameType(FPref.UI_APPLIED_VARIANTS, gameTypes);
|
||||||
FModel.getPreferences().save();
|
FModel.getPreferences().save();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
update(false);
|
update(false);
|
||||||
@@ -195,9 +182,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
|
|
||||||
updatePlayersFromPrefs();
|
updatePlayersFromPrefs();
|
||||||
|
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
playerPanels.get(0).initialize(FPref.CONSTRUCTED_P1_DECK_STATE, FPref.COMMANDER_P1_DECK_STATE, FPref.OATHBREAKER_P1_DECK_STATE, FPref.TINY_LEADER_P1_DECK_STATE, FPref.BRAWL_P1_DECK_STATE, DeckType.PRECONSTRUCTED_DECK);
|
playerPanels.get(0).initialize(FPref.CONSTRUCTED_P1_DECK_STATE, FPref.COMMANDER_P1_DECK_STATE, FPref.OATHBREAKER_P1_DECK_STATE, FPref.TINY_LEADER_P1_DECK_STATE, FPref.BRAWL_P1_DECK_STATE, DeckType.PRECONSTRUCTED_DECK);
|
||||||
playerPanels.get(1).initialize(FPref.CONSTRUCTED_P2_DECK_STATE, FPref.COMMANDER_P2_DECK_STATE, FPref.OATHBREAKER_P2_DECK_STATE, FPref.TINY_LEADER_P2_DECK_STATE, FPref.BRAWL_P2_DECK_STATE, DeckType.COLOR_DECK);
|
playerPanels.get(1).initialize(FPref.CONSTRUCTED_P2_DECK_STATE, FPref.COMMANDER_P2_DECK_STATE, FPref.OATHBREAKER_P2_DECK_STATE, FPref.TINY_LEADER_P2_DECK_STATE, FPref.BRAWL_P2_DECK_STATE, DeckType.COLOR_DECK);
|
||||||
try {
|
try {
|
||||||
@@ -213,9 +198,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
playerPanels.get(6).initialize(FPref.CONSTRUCTED_P7_DECK_STATE, DeckType.COLOR_DECK);
|
playerPanels.get(6).initialize(FPref.CONSTRUCTED_P7_DECK_STATE, DeckType.COLOR_DECK);
|
||||||
playerPanels.get(7).initialize(FPref.CONSTRUCTED_P8_DECK_STATE, DeckType.COLOR_DECK);*/ //TODO: Improve performance of loading this screen by using background thread
|
playerPanels.get(7).initialize(FPref.CONSTRUCTED_P8_DECK_STATE, DeckType.COLOR_DECK);*/ //TODO: Improve performance of loading this screen by using background thread
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
btnStart.setEnabled(lobby.hasControl());
|
btnStart.setEnabled(lobby.hasControl());
|
||||||
|
|
||||||
Set<GameType> gameTypes = FModel.getPreferences().getGameType(FPref.UI_APPLIED_VARIANTS);
|
Set<GameType> gameTypes = FModel.getPreferences().getGameType(FPref.UI_APPLIED_VARIANTS);
|
||||||
@@ -226,9 +209,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
updateVariantSelection();
|
updateVariantSelection();
|
||||||
updateLayoutForVariants();
|
updateLayoutForVariants();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
lblPlayers.setEnabled(true);
|
lblPlayers.setEnabled(true);
|
||||||
@@ -351,20 +332,13 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
|
|||||||
updateName(0, GamePlayerUtil.getGuiPlayer().getName());
|
updateName(0, GamePlayerUtil.getGuiPlayer().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //must call startGame in background thread in case there are alerts
|
//must call startGame in background thread in case there are alerts
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
final Runnable startGame = lobby.startGame();
|
final Runnable startGame = lobby.startGame();
|
||||||
if (startGame != null) {
|
if (startGame != null) {
|
||||||
//set this so we cant get any multi/rapid tap on start button
|
//set this so we cant get any multi/rapid tap on start button
|
||||||
Forge.setLoadingaMatch(true);
|
Forge.setLoadingaMatch(true);
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, startGame));
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), startGame);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import java.io.File;
|
|||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
@@ -31,8 +30,6 @@ import forge.screens.home.LoadGameMenu;
|
|||||||
import forge.screens.home.NewGameMenu.NewGameScreen;
|
import forge.screens.home.NewGameMenu.NewGameScreen;
|
||||||
import forge.screens.settings.SettingsScreen;
|
import forge.screens.settings.SettingsScreen;
|
||||||
import forge.toolbox.FButton;
|
import forge.toolbox.FButton;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Callback;
|
import forge.util.Callback;
|
||||||
@@ -53,26 +50,11 @@ public class LoadGauntletScreen extends LaunchScreen {
|
|||||||
super(null, LoadGameMenu.getMenu());
|
super(null, LoadGameMenu.getMenu());
|
||||||
|
|
||||||
btnNewGauntlet.setFont(FSkinFont.get(16));
|
btnNewGauntlet.setFont(FSkinFont.get(16));
|
||||||
btnNewGauntlet.setCommand(new FEventHandler() {
|
btnNewGauntlet.setCommand(event -> NewGameScreen.Gauntlet.open());
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
NewGameScreen.Gauntlet.open();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
btnRenameGauntlet.setFont(btnNewGauntlet.getFont());
|
btnRenameGauntlet.setFont(btnNewGauntlet.getFont());
|
||||||
btnRenameGauntlet.setCommand(new FEventHandler() {
|
btnRenameGauntlet.setCommand(event -> renameGauntlet(lstGauntlets.getSelectedGauntlet()));
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
renameGauntlet(lstGauntlets.getSelectedGauntlet());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
btnDeleteGauntlet.setFont(btnNewGauntlet.getFont());
|
btnDeleteGauntlet.setFont(btnNewGauntlet.getFont());
|
||||||
btnDeleteGauntlet.setCommand(new FEventHandler() {
|
btnDeleteGauntlet.setCommand(event -> deleteGauntlet(lstGauntlets.getSelectedGauntlet()));
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
deleteGauntlet(lstGauntlets.getSelectedGauntlet());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onActivate() {
|
public void onActivate() {
|
||||||
@@ -136,25 +118,20 @@ public class LoadGauntletScreen extends LaunchScreen {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@Override
|
final GauntletData gauntlet1 = FModel.getGauntletData();
|
||||||
public void run() {
|
|
||||||
final GauntletData gauntlet = FModel.getGauntletData();
|
|
||||||
List<RegisteredPlayer> players = new ArrayList<>();
|
List<RegisteredPlayer> players = new ArrayList<>();
|
||||||
RegisteredPlayer humanPlayer = new RegisteredPlayer(gauntlet.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
RegisteredPlayer humanPlayer = new RegisteredPlayer(gauntlet1.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
||||||
players.add(humanPlayer);
|
players.add(humanPlayer);
|
||||||
players.add(new RegisteredPlayer(gauntlet.getDecks().get(gauntlet.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer()));
|
players.add(new RegisteredPlayer(gauntlet1.getDecks().get(gauntlet1.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer()));
|
||||||
gauntlet.startRound(players, humanPlayer);
|
gauntlet1.startRound(players, humanPlayer);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renameGauntlet(final GauntletData gauntlet) {
|
private void renameGauntlet(final GauntletData gauntlet) {
|
||||||
if (gauntlet == null) { return; }
|
if (gauntlet == null) { return; }
|
||||||
|
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() {
|
ThreadUtil.invokeInGameThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
String gauntletName;
|
String gauntletName;
|
||||||
String oldGauntletName = gauntlet.getName();
|
String oldGauntletName = gauntlet.getName();
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -183,24 +160,18 @@ public class LoadGauntletScreen extends LaunchScreen {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
final String newGauntletName = gauntletName;
|
final String newGauntletName = gauntletName;
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
gauntlet.rename(newGauntletName);
|
gauntlet.rename(newGauntletName);
|
||||||
lstGauntlets.refresh();
|
lstGauntlets.refresh();
|
||||||
lstGauntlets.setSelectedGauntlet(gauntlet);
|
lstGauntlets.setSelectedGauntlet(gauntlet);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteGauntlet(final GauntletData gauntlet) {
|
private void deleteGauntlet(final GauntletData gauntlet) {
|
||||||
if (gauntlet == null) { return; }
|
if (gauntlet == null) { return; }
|
||||||
|
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() {
|
ThreadUtil.invokeInGameThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!SOptionPane.showConfirmDialog(
|
if (!SOptionPane.showConfirmDialog(
|
||||||
Forge.getLocalizer().getMessage("lblAreYouSuerDeleteGauntlet", gauntlet.getName()),
|
Forge.getLocalizer().getMessage("lblAreYouSuerDeleteGauntlet", gauntlet.getName()),
|
||||||
Forge.getLocalizer().getMessage("lblDeleteGauntlet"), Forge.getLocalizer().getMessage("lblDelete"), Forge.getLocalizer().getMessage("lblCancel"))) {
|
Forge.getLocalizer().getMessage("lblDeleteGauntlet"), Forge.getLocalizer().getMessage("lblDelete"), Forge.getLocalizer().getMessage("lblCancel"))) {
|
||||||
@@ -210,7 +181,6 @@ public class LoadGauntletScreen extends LaunchScreen {
|
|||||||
GauntletIO.getGauntletFile(gauntlet).delete();
|
GauntletIO.getGauntletFile(gauntlet).delete();
|
||||||
|
|
||||||
lstGauntlets.removeGauntlet(gauntlet);
|
lstGauntlets.removeGauntlet(gauntlet);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,12 +269,7 @@ public class LoadGauntletScreen extends LaunchScreen {
|
|||||||
public void refresh() {
|
public void refresh() {
|
||||||
List<GauntletData> sorted = new ArrayList<>();
|
List<GauntletData> sorted = new ArrayList<>();
|
||||||
sorted.addAll(gauntlets);
|
sorted.addAll(gauntlets);
|
||||||
Collections.sort(sorted, new Comparator<GauntletData>() {
|
Collections.sort(sorted, (x, y) -> x.getName().toLowerCase().compareTo(y.getName().toLowerCase()));
|
||||||
@Override
|
|
||||||
public int compare(final GauntletData x, final GauntletData y) {
|
|
||||||
return x.getName().toLowerCase().compareTo(y.getName().toLowerCase());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
setListData(sorted);
|
setListData(sorted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,24 +60,12 @@ public class PuzzleScreen extends LaunchScreen {
|
|||||||
@Override
|
@Override
|
||||||
public void run(final Puzzle chosen) {
|
public void run(final Puzzle chosen) {
|
||||||
if (chosen != null) {
|
if (chosen != null) {
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingThePuzzle"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingThePuzzle"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
// Load selected puzzle
|
// Load selected puzzle
|
||||||
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
||||||
hostedMatch.setStartGameHook(new Runnable() {
|
hostedMatch.setStartGameHook(() -> chosen.applyToGame(hostedMatch.getGame()));
|
||||||
@Override
|
|
||||||
public final void run() {
|
|
||||||
chosen.applyToGame(hostedMatch.getGame());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
hostedMatch.setEndGameHook((new Runnable() {
|
hostedMatch.setEndGameHook((() -> chosen.savePuzzleSolve(hostedMatch.getGame().getOutcome().isWinner(GamePlayerUtil.getGuiPlayer()))));
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
chosen.savePuzzleSolve(hostedMatch.getGame().getOutcome().isWinner(GamePlayerUtil.getGuiPlayer()));
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
final List<RegisteredPlayer> players = new ArrayList<>();
|
final List<RegisteredPlayer> players = new ArrayList<>();
|
||||||
final RegisteredPlayer human = new RegisteredPlayer(new Deck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
final RegisteredPlayer human = new RegisteredPlayer(new Deck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
||||||
@@ -92,7 +80,6 @@ public class PuzzleScreen extends LaunchScreen {
|
|||||||
rules.setGamesPerMatch(1);
|
rules.setGamesPerMatch(1);
|
||||||
hostedMatch.startMatch(rules, null, players, human, GuiBase.getInterface().getNewGuiGame());
|
hostedMatch.startMatch(rules, null, players, human, GuiBase.getInterface().getNewGuiGame());
|
||||||
FOptionPane.showMessageDialog(chosen.getGoalDescription(), chosen.getName());
|
FOptionPane.showMessageDialog(chosen.getGoalDescription(), chosen.getName());
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ import forge.screens.LaunchScreen;
|
|||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.home.LoadGameMenu;
|
import forge.screens.home.LoadGameMenu;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
|
|
||||||
@@ -54,12 +52,7 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
cbMode.addItem(Forge.getLocalizer().getMessage("lblSingleMatch"));
|
cbMode.addItem(Forge.getLocalizer().getMessage("lblSingleMatch"));
|
||||||
|
|
||||||
lstDecks.setup(ItemManagerConfig.DRAFT_DECKS);
|
lstDecks.setup(ItemManagerConfig.DRAFT_DECKS);
|
||||||
lstDecks.setItemActivateHandler(new FEventHandler() {
|
lstDecks.setItemActivateHandler(event -> editSelectedDeck());
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
editSelectedDeck();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -96,9 +89,7 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startMatch() {
|
protected void startMatch() {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final DeckProxy humanDeck = lstDecks.getSelectedItem();
|
final DeckProxy humanDeck = lstDecks.getSelectedItem();
|
||||||
if (humanDeck == null) {
|
if (humanDeck == null) {
|
||||||
FOptionPane.showErrorDialog(Forge.getLocalizer().getMessage("lblYouMustSelectExistingDeck"), Forge.getLocalizer().getMessage("lblNoDeck"));
|
FOptionPane.showErrorDialog(Forge.getLocalizer().getMessage("lblYouMustSelectExistingDeck"), Forge.getLocalizer().getMessage("lblNoDeck"));
|
||||||
@@ -115,21 +106,15 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!checkDeckLegality(humanDeck)) {
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
FModel.getGauntletMini().resetGauntletDraft();
|
FModel.getGauntletMini().resetGauntletDraft();
|
||||||
FModel.getGauntletMini().launch(rounds, humanDeck.getDeck(), GameType.Draft);
|
FModel.getGauntletMini().launch(rounds, humanDeck.getDeck(), GameType.Draft);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
final Integer aiIndex = SGuiChoose.getInteger(Forge.getLocalizer().getMessage("lblWhichOpponentWouldYouLikeToFace"),
|
final Integer aiIndex = SGuiChoose.getInteger(Forge.getLocalizer().getMessage("lblWhichOpponentWouldYouLikeToFace"),
|
||||||
@@ -144,12 +129,7 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
throw new IllegalStateException("Draft: Computer deck is null!");
|
throw new IllegalStateException("Draft: Computer deck is null!");
|
||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!checkDeckLegality(humanDeck)) {
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -165,11 +145,7 @@ public class LoadDraftScreen extends LaunchScreen {
|
|||||||
FModel.getGauntletMini().resetGauntletDraft();
|
FModel.getGauntletMini().resetGauntletDraft();
|
||||||
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
||||||
hostedMatch.startMatch(GameType.Draft, null, starter, human, GuiBase.getInterface().getNewGuiGame());
|
hostedMatch.startMatch(GameType.Draft, null, starter, human, GuiBase.getInterface().getNewGuiGame());
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ import forge.screens.LaunchScreen;
|
|||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.home.LoadGameMenu;
|
import forge.screens.home.LoadGameMenu;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
|
|
||||||
@@ -54,12 +52,7 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
cbMode.addItem(Forge.getLocalizer().getMessage("lblSingleMatch"));
|
cbMode.addItem(Forge.getLocalizer().getMessage("lblSingleMatch"));
|
||||||
|
|
||||||
lstDecks.setup(ItemManagerConfig.SEALED_DECKS);
|
lstDecks.setup(ItemManagerConfig.SEALED_DECKS);
|
||||||
lstDecks.setItemActivateHandler(new FEventHandler() {
|
lstDecks.setItemActivateHandler(event -> editSelectedDeck());
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
editSelectedDeck();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -95,9 +88,7 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startMatch() {
|
protected void startMatch() {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final DeckProxy humanDeck = lstDecks.getSelectedItem();
|
final DeckProxy humanDeck = lstDecks.getSelectedItem();
|
||||||
if (humanDeck == null) {
|
if (humanDeck == null) {
|
||||||
FOptionPane.showErrorDialog(Forge.getLocalizer().getMessage("lblYouMustSelectExistingSealedPool"), Forge.getLocalizer().getMessage("lblNoDeck"));
|
FOptionPane.showErrorDialog(Forge.getLocalizer().getMessage("lblYouMustSelectExistingSealedPool"), Forge.getLocalizer().getMessage("lblNoDeck"));
|
||||||
@@ -107,21 +98,15 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
final boolean gauntlet = cbMode.getSelectedItem().equals(Forge.getLocalizer().getMessage("lblGauntlet"));
|
final boolean gauntlet = cbMode.getSelectedItem().equals(Forge.getLocalizer().getMessage("lblGauntlet"));
|
||||||
|
|
||||||
if (gauntlet) {
|
if (gauntlet) {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!checkDeckLegality(humanDeck)) {
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final int matches = FModel.getDecks().getSealed().get(humanDeck.getName()).getAiDecks().size();
|
final int matches = FModel.getDecks().getSealed().get(humanDeck.getName()).getAiDecks().size();
|
||||||
FModel.getGauntletMini().launch(matches, humanDeck.getDeck(), GameType.Sealed);
|
FModel.getGauntletMini().launch(matches, humanDeck.getDeck(), GameType.Sealed);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -137,16 +122,12 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
throw new IllegalStateException("Draft: Computer deck is null!");
|
throw new IllegalStateException("Draft: Computer deck is null!");
|
||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!checkDeckLegality(humanDeck)) {
|
if (!checkDeckLegality(humanDeck)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final List<RegisteredPlayer> starter = new ArrayList<>();
|
final List<RegisteredPlayer> starter = new ArrayList<>();
|
||||||
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);
|
||||||
@@ -158,12 +139,9 @@ public class LoadSealedScreen extends LaunchScreen {
|
|||||||
FModel.getGauntletMini().resetGauntletDraft();
|
FModel.getGauntletMini().resetGauntletDraft();
|
||||||
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
||||||
hostedMatch.startMatch(GameType.Sealed, null, starter, human, GuiBase.getInterface().getNewGuiGame());
|
hostedMatch.startMatch(GameType.Sealed, null, starter, human, GuiBase.getInterface().getNewGuiGame());
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,27 +41,15 @@ public class NewDraftScreen extends LaunchScreen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startMatch() {
|
protected void startMatch() {
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() { //must run in game thread to prevent blocking UI thread
|
//must run in game thread to prevent blocking UI thread
|
||||||
@Override
|
ThreadUtil.invokeInGameThread(() -> {
|
||||||
public void run() {
|
|
||||||
final LimitedPoolType poolType = SGuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseDraftFormat"), LimitedPoolType.values());
|
final LimitedPoolType poolType = SGuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseDraftFormat"), LimitedPoolType.values());
|
||||||
if (poolType == null) { return; }
|
if (poolType == null) { return; }
|
||||||
|
|
||||||
final BoosterDraft draft = BoosterDraft.createDraft(poolType);
|
final BoosterDraft draft = BoosterDraft.createDraft(poolType);
|
||||||
if (draft == null) { return; }
|
if (draft == null) { return; }
|
||||||
|
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewDraft"), true, () -> Forge.openScreen(new DraftingProcessScreen(draft, EditorType.Draft, null))));
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewDraft"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Forge.openScreen(new DraftingProcessScreen(draft, EditorType.Draft, null));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,9 +56,7 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
|||||||
clearGameLobby();
|
clearGameLobby();
|
||||||
Forge.back();
|
Forge.back();
|
||||||
if (msg.length() > 0) {
|
if (msg.length() > 0) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final boolean callBackAlwaysTrue = SOptionPane.showOptionDialog(msg, Forge.getLocalizer().getMessage("lblError"), FSkinProp.ICO_WARNING, ImmutableList.of(Forge.getLocalizer().getMessage("lblOk")), 1) == 0;
|
final boolean callBackAlwaysTrue = SOptionPane.showOptionDialog(msg, Forge.getLocalizer().getMessage("lblError"), FSkinProp.ICO_WARNING, ImmutableList.of(Forge.getLocalizer().getMessage("lblOk")), 1) == 0;
|
||||||
if (callBackAlwaysTrue) { //to activate online menu popup when player press play online
|
if (callBackAlwaysTrue) { //to activate online menu popup when player press play online
|
||||||
GuiBase.setInterrupted(false);
|
GuiBase.setInterrupted(false);
|
||||||
@@ -68,7 +66,6 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
|||||||
if(getfGameClient() != null)
|
if(getfGameClient() != null)
|
||||||
closeClient();
|
closeClient();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,13 +90,9 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
|||||||
if (getGameLobby() == null) {
|
if (getGameLobby() == null) {
|
||||||
setGameLobby(getLobby());
|
setGameLobby(getLobby());
|
||||||
//prompt to connect to server when offline lobby activated
|
//prompt to connect to server when offline lobby activated
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final String url = NetConnectUtil.getServerUrl();
|
final String url = NetConnectUtil.getServerUrl();
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (url == null) {
|
if (url == null) {
|
||||||
closeConn(""); //go back to previous screen if user cancels connection
|
closeConn(""); //go back to previous screen if user cancels connection
|
||||||
return;
|
return;
|
||||||
@@ -107,9 +100,7 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
|||||||
|
|
||||||
final boolean joinServer = url.length() > 0;
|
final boolean joinServer = url.length() > 0;
|
||||||
final String caption = joinServer ? Forge.getLocalizer().getMessage("lblConnectingToServer") : Forge.getLocalizer().getMessage("lblStartingServer");
|
final String caption = joinServer ? Forge.getLocalizer().getMessage("lblConnectingToServer") : Forge.getLocalizer().getMessage("lblStartingServer");
|
||||||
LoadingOverlay.show(caption, new Runnable() {
|
LoadingOverlay.show(caption, true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final ChatMessage result;
|
final ChatMessage result;
|
||||||
final IOnlineChatInterface chatInterface = (IOnlineChatInterface)OnlineScreen.Chat.getScreen();
|
final IOnlineChatInterface chatInterface = (IOnlineChatInterface)OnlineScreen.Chat.getScreen();
|
||||||
if (joinServer) {
|
if (joinServer) {
|
||||||
@@ -124,20 +115,12 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
|
|||||||
}
|
}
|
||||||
chatInterface.addMessage(result);
|
chatInterface.addMessage(result);
|
||||||
if (!joinServer) {
|
if (!joinServer) {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> NetConnectUtil.copyHostedServerUrl());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
NetConnectUtil.copyHostedServerUrl();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
//update menu buttons
|
//update menu buttons
|
||||||
OnlineScreen.Lobby.update();
|
OnlineScreen.Lobby.update();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ import forge.screens.FScreen;
|
|||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.home.HomeScreen;
|
import forge.screens.home.HomeScreen;
|
||||||
import forge.screens.home.LoadGameMenu.LoadGameScreen;
|
import forge.screens.home.LoadGameMenu.LoadGameScreen;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
|
|
||||||
public class ConquestMenu extends FPopupMenu {
|
public class ConquestMenu extends FPopupMenu {
|
||||||
private static final ConquestMenu conquestMenu = new ConquestMenu();
|
private static final ConquestMenu conquestMenu = new ConquestMenu();
|
||||||
@@ -26,54 +24,14 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
private static final ConquestStatsScreen statsScreen = new ConquestStatsScreen();
|
private static final ConquestStatsScreen statsScreen = new ConquestStatsScreen();
|
||||||
private static final ConquestPrefsScreen prefsScreen = new ConquestPrefsScreen();
|
private static final ConquestPrefsScreen prefsScreen = new ConquestPrefsScreen();
|
||||||
|
|
||||||
private static final FMenuItem multiverseItem = new FMenuItem(Forge.getLocalizer().getMessage("lblTheMultiverse"), FSkinImage.MULTIVERSE, new FEventHandler() {
|
private static final FMenuItem multiverseItem = new FMenuItem(Forge.getLocalizer().getMessage("lblTheMultiverse"), FSkinImage.MULTIVERSE, event -> setCurrentScreen(multiverseScreen));
|
||||||
@Override
|
private static final FMenuItem aetherItem = new FMenuItem(Forge.getLocalizer().getMessage("lblTheAether"), FSkinImage.AETHER_SHARD, event -> setCurrentScreen(aetherScreen));
|
||||||
public void handleEvent(FEvent e) {
|
private static final FMenuItem commandersItem = new FMenuItem(Forge.getLocalizer().getMessage("lblCommanders"), FSkinImage.COMMANDER, event -> setCurrentScreen(commandersScreen));
|
||||||
setCurrentScreen(multiverseScreen);
|
private static final FMenuItem planeswalkersItem = new FMenuItem(Forge.getLocalizer().getMessage("lblPlaneswalkers"), FSkinImage.PLANESWALKER, event -> setCurrentScreen(planeswalkersScreen));
|
||||||
}
|
private static final FMenuItem collectionItem = new FMenuItem(Forge.getLocalizer().getMessage("lblCollection"), FSkinImage.SPELLBOOK, event -> setCurrentScreen(collectionScreen));
|
||||||
});
|
private static final FMenuItem statsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblStatistics"), FSkinImage.MENU_STATS, event -> setCurrentScreen(statsScreen));
|
||||||
private static final FMenuItem aetherItem = new FMenuItem(Forge.getLocalizer().getMessage("lblTheAether"), FSkinImage.AETHER_SHARD, new FEventHandler() {
|
private static final FMenuItem planeswalkItem = new FMenuItem(Forge.getLocalizer().getMessage("lblPlaneswalk"), FSkinImage.PW_BADGE_COMMON, event -> setCurrentScreen(planeswalkScreen));
|
||||||
@Override
|
private static final FMenuItem prefsItem = new FMenuItem(Forge.getLocalizer().getMessage("Preferences"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS, event -> setCurrentScreen(prefsScreen));
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(aetherScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem commandersItem = new FMenuItem(Forge.getLocalizer().getMessage("lblCommanders"), FSkinImage.COMMANDER, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(commandersScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem planeswalkersItem = new FMenuItem(Forge.getLocalizer().getMessage("lblPlaneswalkers"), FSkinImage.PLANESWALKER, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(planeswalkersScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem collectionItem = new FMenuItem(Forge.getLocalizer().getMessage("lblCollection"), FSkinImage.SPELLBOOK, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(collectionScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem statsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblStatistics"), FSkinImage.MENU_STATS, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(statsScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem planeswalkItem = new FMenuItem(Forge.getLocalizer().getMessage("lblPlaneswalk"), FSkinImage.PW_BADGE_COMMON, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(planeswalkScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem prefsItem = new FMenuItem(Forge.getLocalizer().getMessage("Preferences"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(prefsScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
private static void setCurrentScreen(FScreen screen0) {
|
private static void setCurrentScreen(FScreen screen0) {
|
||||||
//make it so pressing Back from any screen besides Multiverse screen always goes to Multiverse screen
|
//make it so pressing Back from any screen besides Multiverse screen always goes to Multiverse screen
|
||||||
@@ -84,12 +42,7 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
static {
|
static {
|
||||||
//the first time planarconquest mode is launched, add button for it if in Landscape mode
|
//the first time planarconquest mode is launched, add button for it if in Landscape mode
|
||||||
if (Forge.isLandscapeMode()) {
|
if (Forge.isLandscapeMode()) {
|
||||||
HomeScreen.instance.addButtonForMode("-"+Forge.getLocalizer().getMessage("lblPlanarConquest"), new FEventHandler() {
|
HomeScreen.instance.addButtonForMode("-"+Forge.getLocalizer().getMessage("lblPlanarConquest"), event -> launchPlanarConquest(LaunchReason.StartPlanarConquest));
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
launchPlanarConquest(LaunchReason.StartPlanarConquest);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,10 +61,7 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
|
|
||||||
public static void launchPlanarConquest(final LaunchReason reason) {
|
public static void launchPlanarConquest(final LaunchReason reason) {
|
||||||
Forge.lastButtonIndex = 7;
|
Forge.lastButtonIndex = 7;
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingCurrentConquest"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingCurrentConquest"), true, () -> {
|
||||||
@Override
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void run() {
|
|
||||||
((DeckController<Deck>)EditorType.PlanarConquest.getController()).setRootFolder(FModel.getConquest().getDecks());
|
((DeckController<Deck>)EditorType.PlanarConquest.getController()).setRootFolder(FModel.getConquest().getDecks());
|
||||||
if (reason == LaunchReason.StartPlanarConquest) {
|
if (reason == LaunchReason.StartPlanarConquest) {
|
||||||
Forge.openScreen(multiverseScreen);
|
Forge.openScreen(multiverseScreen);
|
||||||
@@ -123,7 +73,6 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
LoadGameScreen.PlanarConquest.setAsBackScreen(true);
|
LoadGameScreen.PlanarConquest.setAsBackScreen(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,6 @@ import forge.screens.LoadingOverlay;
|
|||||||
import forge.toolbox.FButton;
|
import forge.toolbox.FButton;
|
||||||
import forge.toolbox.FContainer;
|
import forge.toolbox.FContainer;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.toolbox.FScrollPane;
|
import forge.toolbox.FScrollPane;
|
||||||
@@ -260,29 +258,18 @@ public class ConquestMultiverseScreen extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void launchEvent() {
|
private void launchEvent() {
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblStartingBattle"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblStartingBattle"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ConquestLocation loc = model.getCurrentLocation();
|
ConquestLocation loc = model.getCurrentLocation();
|
||||||
activeBattle = loc.getEvent().createBattle(loc, 0);
|
activeBattle = loc.getEvent().createBattle(loc, 0);
|
||||||
FModel.getConquest().startBattle(activeBattle);
|
FModel.getConquest().startBattle(activeBattle);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void launchChaosBattle() {
|
private void launchChaosBattle() {
|
||||||
FThreads.invokeInEdtNowOrLater(new Runnable() {
|
FThreads.invokeInEdtNowOrLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblChaosApproaching"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblChaosApproaching"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
activeBattle = new ConquestChaosBattle();
|
activeBattle = new ConquestChaosBattle();
|
||||||
FModel.getConquest().startBattle(activeBattle);
|
FModel.getConquest().startBattle(activeBattle);
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -678,12 +665,7 @@ public class ConquestMultiverseScreen extends FScreen {
|
|||||||
private BattleBar() {
|
private BattleBar() {
|
||||||
playerAvatar = add(new AvatarDisplay(false));
|
playerAvatar = add(new AvatarDisplay(false));
|
||||||
opponentAvatar = add(new AvatarDisplay(true));
|
opponentAvatar = add(new AvatarDisplay(true));
|
||||||
btnBattle = add(new FButton(Forge.getLocalizer().getMessage("lblBattle"), new FEventHandler() {
|
btnBattle = add(new FButton(Forge.getLocalizer().getMessage("lblBattle"), event -> launchEvent()));
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
launchEvent();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
btnBattle.setFont(FSkinFont.get(20));
|
btnBattle.setFont(FSkinFont.get(20));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,12 +37,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
@Override
|
@Override
|
||||||
protected void finish() {
|
protected void finish() {
|
||||||
//create new quest in game thread so option panes can wait for input
|
//create new quest in game thread so option panes can wait for input
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() {
|
ThreadUtil.invokeInGameThread(() -> newConquest());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
newConquest();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void newConquest() {
|
private void newConquest() {
|
||||||
@@ -52,12 +47,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startNewConquest(final String conquestName) {
|
private void startNewConquest(final String conquestName) {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblStartingNewConquest"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblStartingNewConquest"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ConquestController qc = FModel.getConquest();
|
ConquestController qc = FModel.getConquest();
|
||||||
qc.setModel(new ConquestData(conquestName, model.startingPlane, model.startingPlaneswalker, model.startingCommander));
|
qc.setModel(new ConquestData(conquestName, model.startingPlane, model.startingPlaneswalker, model.startingCommander));
|
||||||
qc.getDecks().add(Iterables.getFirst(qc.getModel().getCommanders(), null).getDeck()); //ensure starting deck is saved
|
qc.getDecks().add(Iterables.getFirst(qc.getModel().getCommanders(), null).getDeck()); //ensure starting deck is saved
|
||||||
@@ -68,10 +58,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
FModel.getConquestPreferences().save();
|
FModel.getConquestPreferences().save();
|
||||||
|
|
||||||
ConquestMenu.launchPlanarConquest(LaunchReason.NewConquest);
|
ConquestMenu.launchPlanarConquest(LaunchReason.NewConquest);
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class SelectStartingPlaneStep extends WizardStep<NewConquestScreenModel> {
|
private static class SelectStartingPlaneStep extends WizardStep<NewConquestScreenModel> {
|
||||||
|
|||||||
@@ -42,8 +42,6 @@ import forge.screens.quest.QuestMenu.LaunchReason;
|
|||||||
import forge.toolbox.FCheckBox;
|
import forge.toolbox.FCheckBox;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FNumericTextField;
|
import forge.toolbox.FNumericTextField;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
@@ -186,17 +184,9 @@ public class NewQuestScreen extends FScreen {
|
|||||||
private final FCheckBox cbCommander = scroller.add(new FCheckBox(Forge.getLocalizer().getMessage("rbCommanderSubformat")));
|
private final FCheckBox cbCommander = scroller.add(new FCheckBox(Forge.getLocalizer().getMessage("rbCommanderSubformat")));
|
||||||
|
|
||||||
private final FLabel btnEmbark = add(new FLabel.ButtonBuilder()
|
private final FLabel btnEmbark = add(new FLabel.ButtonBuilder()
|
||||||
.font(FSkinFont.get(22)).text(Forge.getLocalizer().getMessage("lblEmbark")).icon(FSkinImage.QUEST_ZEP).command(new FEventHandler() {
|
.font(FSkinFont.get(22)).text(Forge.getLocalizer().getMessage("lblEmbark")).icon(FSkinImage.QUEST_ZEP).command(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
//create new quest in game thread so option panes can wait for input
|
//create new quest in game thread so option panes can wait for input
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() {
|
ThreadUtil.invokeInGameThread(() -> newQuest());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
newQuest();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).build());
|
}).build());
|
||||||
|
|
||||||
public NewQuestScreen() {
|
public NewQuestScreen() {
|
||||||
@@ -209,24 +199,18 @@ public class NewQuestScreen extends FScreen {
|
|||||||
cbxStartingPool.addItem(StartingPoolType.DraftDeck);
|
cbxStartingPool.addItem(StartingPoolType.DraftDeck);
|
||||||
cbxStartingPool.addItem(StartingPoolType.SealedDeck);
|
cbxStartingPool.addItem(StartingPoolType.SealedDeck);
|
||||||
cbxStartingPool.addItem(StartingPoolType.Cube);
|
cbxStartingPool.addItem(StartingPoolType.Cube);
|
||||||
cbxStartingPool.setChangedHandler(new FEventHandler() {
|
cbxStartingPool.setChangedHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
updateStartingPoolOptions();
|
updateStartingPoolOptions();
|
||||||
scroller.revalidate();
|
scroller.revalidate();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
cbxPrizedCards.addItem(Forge.getLocalizer().getMessage("lblSameAsStartingPool"));
|
cbxPrizedCards.addItem(Forge.getLocalizer().getMessage("lblSameAsStartingPool"));
|
||||||
cbxPrizedCards.addItem(StartingPoolType.Complete);
|
cbxPrizedCards.addItem(StartingPoolType.Complete);
|
||||||
cbxPrizedCards.addItem(StartingPoolType.Sanctioned);
|
cbxPrizedCards.addItem(StartingPoolType.Sanctioned);
|
||||||
cbxPrizedCards.addItem(StartingPoolType.Casual);
|
cbxPrizedCards.addItem(StartingPoolType.Casual);
|
||||||
cbxPrizedCards.setChangedHandler(new FEventHandler() {
|
cbxPrizedCards.setChangedHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
updatePrizeOptions();
|
updatePrizeOptions();
|
||||||
scroller.revalidate();
|
scroller.revalidate();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
for (GameFormat gf : FModel.getFormats().getSanctionedList()) {
|
for (GameFormat gf : FModel.getFormats().getSanctionedList()) {
|
||||||
@@ -243,9 +227,7 @@ public class NewQuestScreen extends FScreen {
|
|||||||
numberOfBoostersField.setEnabled(false);
|
numberOfBoostersField.setEnabled(false);
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
UiCommand colorBoxEnabler = new UiCommand() {
|
UiCommand colorBoxEnabler = () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
cbBlack.setEnabled(radBalanced.isSelected());
|
cbBlack.setEnabled(radBalanced.isSelected());
|
||||||
cbBlue.setEnabled(radBalanced.isSelected());
|
cbBlue.setEnabled(radBalanced.isSelected());
|
||||||
cbGreen.setEnabled(radBalanced.isSelected());
|
cbGreen.setEnabled(radBalanced.isSelected());
|
||||||
@@ -254,7 +236,6 @@ public class NewQuestScreen extends FScreen {
|
|||||||
cbColorless.setEnabled(radBalanced.isSelected());
|
cbColorless.setEnabled(radBalanced.isSelected());
|
||||||
cbIncludeArtifacts.setEnabled(!radSurpriseMe.isSelected());
|
cbIncludeArtifacts.setEnabled(!radSurpriseMe.isSelected());
|
||||||
numberOfBoostersField.setEnabled(radBoosters.isSelected());
|
numberOfBoostersField.setEnabled(radBoosters.isSelected());
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
radBalanced.setCommand(colorBoxEnabler);
|
radBalanced.setCommand(colorBoxEnabler);
|
||||||
@@ -268,12 +249,7 @@ public class NewQuestScreen extends FScreen {
|
|||||||
// Default to 'Main world'
|
// Default to 'Main world'
|
||||||
cbxStartingWorld.setSelectedItem(FModel.getWorlds().get("Main world"));
|
cbxStartingWorld.setSelectedItem(FModel.getWorlds().get("Main world"));
|
||||||
|
|
||||||
cbxStartingWorld.setChangedHandler(new FEventHandler() {
|
cbxStartingWorld.setChangedHandler(event -> updateEnabledFormats());
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
updateEnabledFormats();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
updateStartingPoolOptions();
|
updateStartingPoolOptions();
|
||||||
updatePrizeOptions();
|
updatePrizeOptions();
|
||||||
@@ -298,13 +274,9 @@ public class NewQuestScreen extends FScreen {
|
|||||||
unselectableSets.add("ARC");
|
unselectableSets.add("ARC");
|
||||||
unselectableSets.add("PC2");
|
unselectableSets.add("PC2");
|
||||||
|
|
||||||
btnSelectFormat.setCommand(new FEventHandler() {
|
btnSelectFormat.setCommand(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
ArchivedFormatSelect archivedFormatSelect = new ArchivedFormatSelect();
|
ArchivedFormatSelect archivedFormatSelect = new ArchivedFormatSelect();
|
||||||
archivedFormatSelect.setOnCloseCallBack(new Runnable() {
|
archivedFormatSelect.setOnCloseCallBack(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
customFormatCodes.clear();
|
customFormatCodes.clear();
|
||||||
btnSelectFormat.setText(archivedFormatSelect.getSelectedFormat().getName());
|
btnSelectFormat.setText(archivedFormatSelect.getSelectedFormat().getName());
|
||||||
List<String> setsToAdd = archivedFormatSelect.getSelectedFormat().getAllowedSetCodes();
|
List<String> setsToAdd = archivedFormatSelect.getSelectedFormat().getAllowedSetCodes();
|
||||||
@@ -313,19 +285,13 @@ public class NewQuestScreen extends FScreen {
|
|||||||
customFormatCodes.add(setName);
|
customFormatCodes.add(setName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
Forge.openScreen(archivedFormatSelect);
|
Forge.openScreen(archivedFormatSelect);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
btnPrizeSelectFormat.setCommand(new FEventHandler() {
|
btnPrizeSelectFormat.setCommand(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
ArchivedFormatSelect archivedFormatSelect = new ArchivedFormatSelect();
|
ArchivedFormatSelect archivedFormatSelect = new ArchivedFormatSelect();
|
||||||
archivedFormatSelect.setOnCloseCallBack(new Runnable() {
|
archivedFormatSelect.setOnCloseCallBack(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
customPrizeFormatCodes.clear();
|
customPrizeFormatCodes.clear();
|
||||||
btnPrizeSelectFormat.setText(archivedFormatSelect.getSelectedFormat().getName());
|
btnPrizeSelectFormat.setText(archivedFormatSelect.getSelectedFormat().getName());
|
||||||
List<String> setsToAdd = archivedFormatSelect.getSelectedFormat().getAllowedSetCodes();
|
List<String> setsToAdd = archivedFormatSelect.getSelectedFormat().getAllowedSetCodes();
|
||||||
@@ -334,23 +300,18 @@ public class NewQuestScreen extends FScreen {
|
|||||||
customPrizeFormatCodes.add(setName);
|
customPrizeFormatCodes.add(setName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
Forge.openScreen(archivedFormatSelect);
|
Forge.openScreen(archivedFormatSelect);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fantasy box enabled by Default
|
// Fantasy box enabled by Default
|
||||||
cbFantasy.setSelected(true);
|
cbFantasy.setSelected(true);
|
||||||
cbFantasy.setEnabled(true);
|
cbFantasy.setEnabled(true);
|
||||||
cbCommander.setSelected(false);
|
cbCommander.setSelected(false);
|
||||||
cbCommander.setCommand(new FEventHandler() {
|
cbCommander.setCommand(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
if (!isCommander())
|
if (!isCommander())
|
||||||
return;
|
return;
|
||||||
cbxStartingWorld.setSelectedItem(FModel.getWorlds().get("Random Commander"));
|
cbxStartingWorld.setSelectedItem(FModel.getWorlds().get("Random Commander"));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -644,12 +605,7 @@ public class NewQuestScreen extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startNewQuest(final String questName, final GameFormat fmtPrizes, final Deck dckStartPool, final GameFormat fmtStartPool) {
|
private void startNewQuest(final String questName, final GameFormat fmtPrizes, final Deck dckStartPool, final GameFormat fmtStartPool) {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblCreatingNewQuest"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblCreatingNewQuest"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final QuestMode mode = isFantasy() ? QuestMode.Fantasy : QuestMode.Classic;
|
final QuestMode mode = isFantasy() ? QuestMode.Fantasy : QuestMode.Classic;
|
||||||
final StartingPoolPreferences userPrefs =
|
final StartingPoolPreferences userPrefs =
|
||||||
new StartingPoolPreferences(getPoolType(), getPreferredColors(), cbIncludeArtifacts.isSelected(), startWithCompleteSet(), allowDuplicateCards(), numberOfBoostersField.getValue());
|
new StartingPoolPreferences(getPoolType(), getPreferredColors(), cbIncludeArtifacts.isSelected(), startWithCompleteSet(), allowDuplicateCards(), numberOfBoostersField.getValue());
|
||||||
@@ -665,9 +621,6 @@ public class NewQuestScreen extends FScreen {
|
|||||||
FModel.getQuestPreferences().save();
|
FModel.getQuestPreferences().save();
|
||||||
|
|
||||||
QuestMenu.launchQuestMode(LaunchReason.NewQuest, isCommander()); //launch quest mode for new quest
|
QuestMenu.launchQuestMode(LaunchReason.NewQuest, isCommander()); //launch quest mode for new quest
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ import forge.gui.FThreads;
|
|||||||
import forge.gui.interfaces.IButton;
|
import forge.gui.interfaces.IButton;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
|
|
||||||
public class QuestDuelsScreen extends QuestLaunchScreen {
|
public class QuestDuelsScreen extends QuestLaunchScreen {
|
||||||
@@ -33,12 +31,7 @@ public class QuestDuelsScreen extends QuestLaunchScreen {
|
|||||||
|
|
||||||
public QuestDuelsScreen() {
|
public QuestDuelsScreen() {
|
||||||
super();
|
super();
|
||||||
pnlDuels.setActivateHandler(new FEventHandler() {
|
pnlDuels.setActivateHandler(event -> startMatch());
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
startMatch();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -74,12 +67,7 @@ public class QuestDuelsScreen extends QuestLaunchScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void generateDuels() {
|
private void generateDuels() {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingCurrentQuest"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingCurrentQuest"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
pnlDuels.clear();
|
pnlDuels.clear();
|
||||||
List<QuestEventDuel> duels = FModel.getQuest().getDuelsManager().generateDuels();
|
List<QuestEventDuel> duels = FModel.getQuest().getDuelsManager().generateDuels();
|
||||||
if (duels != null) {
|
if (duels != null) {
|
||||||
@@ -88,9 +76,6 @@ public class QuestDuelsScreen extends QuestLaunchScreen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
pnlDuels.revalidate();
|
pnlDuels.revalidate();
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,24 +22,11 @@ public abstract class QuestLaunchScreen extends LaunchScreen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startMatch() {
|
protected void startMatch() {
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (QuestUtil.canStartGame()) {
|
if (QuestUtil.canStartGame()) {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), true, () -> QuestUtil.finishStartingGame()));
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingNewGame"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
QuestUtil.finishStartingGame();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ import forge.screens.LoadingOverlay;
|
|||||||
import forge.screens.home.HomeScreen;
|
import forge.screens.home.HomeScreen;
|
||||||
import forge.screens.home.LoadGameMenu.LoadGameScreen;
|
import forge.screens.home.LoadGameMenu.LoadGameScreen;
|
||||||
import forge.screens.home.NewGameMenu.NewGameScreen;
|
import forge.screens.home.NewGameMenu.NewGameScreen;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.util.ThreadUtil;
|
import forge.util.ThreadUtil;
|
||||||
|
|
||||||
public class QuestMenu extends FPopupMenu implements IVQuestStats {
|
public class QuestMenu extends FPopupMenu implements IVQuestStats {
|
||||||
@@ -42,88 +40,28 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
|
|||||||
private static final QuestStatsScreen statsScreen = new QuestStatsScreen();
|
private static final QuestStatsScreen statsScreen = new QuestStatsScreen();
|
||||||
private static final QuestTournamentsScreen tournamentsScreen = new QuestTournamentsScreen();
|
private static final QuestTournamentsScreen tournamentsScreen = new QuestTournamentsScreen();
|
||||||
|
|
||||||
private static final FMenuItem duelsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblDuels"), FSkinImage.QUEST_BIG_SWORD, new FEventHandler() {
|
private static final FMenuItem duelsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblDuels"), FSkinImage.QUEST_BIG_SWORD, event -> setCurrentScreen(duelsScreen));
|
||||||
@Override
|
private static final FMenuItem challengesItem = new FMenuItem(Forge.getLocalizer().getMessage("lblChallenges"), FSkinImage.QUEST_HEART, event -> setCurrentScreen(challengesScreen));
|
||||||
public void handleEvent(FEvent e) {
|
private static final FMenuItem tournamentsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblTournaments"), FSkinImage.QUEST_BIG_SHIELD, event -> setCurrentScreen(tournamentsScreen));
|
||||||
setCurrentScreen(duelsScreen);
|
private static final FMenuItem decksItem = new FMenuItem(Forge.getLocalizer().getMessage("lblQuestDecks"), FSkinImage.QUEST_BIG_BAG, event -> setCurrentScreen(decksScreen));
|
||||||
}
|
private static final FMenuItem spellShopItem = new FMenuItem(Forge.getLocalizer().getMessage("lblSpellShop"), FSkinImage.QUEST_BOOK, event -> setCurrentScreen(spellShopScreen));
|
||||||
});
|
private static final FMenuItem bazaarItem = new FMenuItem(Forge.getLocalizer().getMessage("lblBazaar"), FSkinImage.QUEST_BOTTLES, event -> setCurrentScreen(bazaarScreen));
|
||||||
private static final FMenuItem challengesItem = new FMenuItem(Forge.getLocalizer().getMessage("lblChallenges"), FSkinImage.QUEST_HEART, new FEventHandler() {
|
private static final FMenuItem statsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblStatistics"), FSkinImage.MENU_STATS, event -> setCurrentScreen(statsScreen));
|
||||||
@Override
|
private static final FMenuItem unlockSetsItem = new FMenuItem(Forge.getLocalizer().getMessage("btnUnlockSets"), FSkinImage.QUEST_MAP, event -> {
|
||||||
public void handleEvent(FEvent e) {
|
//invoke in background thread so prompts can work
|
||||||
setCurrentScreen(challengesScreen);
|
ThreadUtil.invokeInGameThread(() -> {
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem tournamentsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblTournaments"), FSkinImage.QUEST_BIG_SHIELD, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(tournamentsScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem decksItem = new FMenuItem(Forge.getLocalizer().getMessage("lblQuestDecks"), FSkinImage.QUEST_BIG_BAG, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(decksScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem spellShopItem = new FMenuItem(Forge.getLocalizer().getMessage("lblSpellShop"), FSkinImage.QUEST_BOOK, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(spellShopScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem bazaarItem = new FMenuItem(Forge.getLocalizer().getMessage("lblBazaar"), FSkinImage.QUEST_BOTTLES, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(bazaarScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem statsItem = new FMenuItem(Forge.getLocalizer().getMessage("lblStatistics"), FSkinImage.MENU_STATS, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(statsScreen);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem unlockSetsItem = new FMenuItem(Forge.getLocalizer().getMessage("btnUnlockSets"), FSkinImage.QUEST_MAP, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() { //invoke in background thread so prompts can work
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
QuestUtil.chooseAndUnlockEdition();
|
QuestUtil.chooseAndUnlockEdition();
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> updateCurrentQuestScreen());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
updateCurrentQuestScreen();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
private static final FMenuItem travelItem = new FMenuItem(Forge.getLocalizer().getMessage("btnTravel"), FSkinImage.QUEST_MAP, event -> {
|
||||||
});
|
//invoke in background thread so prompts can work
|
||||||
private static final FMenuItem travelItem = new FMenuItem(Forge.getLocalizer().getMessage("btnTravel"), FSkinImage.QUEST_MAP, new FEventHandler() {
|
ThreadUtil.invokeInGameThread(() -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
ThreadUtil.invokeInGameThread(new Runnable() { //invoke in background thread so prompts can work
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
QuestUtil.travelWorld();
|
QuestUtil.travelWorld();
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> updateCurrentQuestScreen());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
updateCurrentQuestScreen();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
private static final FMenuItem prefsItem = new FMenuItem(Forge.getLocalizer().getMessage("Preferences"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS, new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
setCurrentScreen(prefsScreen);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
private static final FMenuItem prefsItem = new FMenuItem(Forge.getLocalizer().getMessage("Preferences"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS, event -> setCurrentScreen(prefsScreen));
|
||||||
|
|
||||||
static {
|
static {
|
||||||
statsScreen.addTournamentResultsLabels(tournamentsScreen);
|
statsScreen.addTournamentResultsLabels(tournamentsScreen);
|
||||||
@@ -159,12 +97,7 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
|
|||||||
static {
|
static {
|
||||||
//the first time quest mode is launched, add button for it if in Landscape mode
|
//the first time quest mode is launched, add button for it if in Landscape mode
|
||||||
if (Forge.isLandscapeMode()) {
|
if (Forge.isLandscapeMode()) {
|
||||||
HomeScreen.instance.addButtonForMode("-"+Forge.getLocalizer().getMessage("lblQuestMode"), new FEventHandler() {
|
HomeScreen.instance.addButtonForMode("-"+Forge.getLocalizer().getMessage("lblQuestMode"), event -> launchQuestMode(LaunchReason.StartQuestMode, HomeScreen.instance.getQuestCommanderMode()));
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
launchQuestMode(LaunchReason.StartQuestMode, HomeScreen.instance.getQuestCommanderMode());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,10 +123,7 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
|
|||||||
final String questname = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
|
final String questname = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
|
||||||
final File data = new File(dirQuests.getPath(), questname);
|
final File data = new File(dirQuests.getPath(), questname);
|
||||||
if (data.exists()) {
|
if (data.exists()) {
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingCurrentQuest"), new Runnable() {
|
LoadingOverlay.show(Forge.getLocalizer().getMessage("lblLoadingCurrentQuest"), true, () -> {
|
||||||
@Override
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void run() {
|
|
||||||
try {
|
try {
|
||||||
FModel.getQuest().load(QuestDataIO.loadData(data));
|
FModel.getQuest().load(QuestDataIO.loadData(data));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@@ -223,7 +153,6 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
HomeScreen.instance.updateQuestWorld(FModel.getQuest().getWorld() == null ? "" : FModel.getQuest().getWorld().toString());
|
HomeScreen.instance.updateQuestWorld(FModel.getQuest().getWorld() == null ? "" : FModel.getQuest().getWorld().toString());
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,8 +29,6 @@ import forge.model.FModel;
|
|||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.TabPageScreen;
|
import forge.screens.TabPageScreen;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FTextArea;
|
import forge.toolbox.FTextArea;
|
||||||
import forge.toolbox.GuiChoose;
|
import forge.toolbox.GuiChoose;
|
||||||
@@ -49,9 +47,7 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
inventoryPage = ((InventoryPage)tabPages[1]);
|
inventoryPage = ((InventoryPage)tabPages[1]);
|
||||||
|
|
||||||
btnBuySellMultiple.setVisible(false); //hide unless in multi-select mode
|
btnBuySellMultiple.setVisible(false); //hide unless in multi-select mode
|
||||||
btnBuySellMultiple.setCommand(new FEventHandler() {
|
btnBuySellMultiple.setCommand(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
final SpellShopManager itemManager = ((SpellShopBasePage)getSelectedPage()).itemManager;
|
final SpellShopManager itemManager = ((SpellShopBasePage)getSelectedPage()).itemManager;
|
||||||
final ItemPool<InventoryItem> items = itemManager.getSelectedItemPool();
|
final ItemPool<InventoryItem> items = itemManager.getSelectedItemPool();
|
||||||
|
|
||||||
@@ -61,24 +57,15 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (getSelectedPage() == spellShopPage) {
|
if (getSelectedPage() == spellShopPage) {
|
||||||
spellShopPage.activateItems(items);
|
spellShopPage.activateItems(items);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
inventoryPage.activateItems(items);
|
inventoryPage.activateItems(items);
|
||||||
}
|
}
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> updateCreditsLabel());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
updateCreditsLabel();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,29 +177,18 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
parentScreen.tabHeader.setVisible(!multiSelectMode);
|
parentScreen.tabHeader.setVisible(!multiSelectMode);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
itemManager.setItemActivateHandler(new FEventHandler() {
|
itemManager.setItemActivateHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
itemManager.setContextMenuBuilder(new ContextMenuBuilder<InventoryItem>() {
|
itemManager.setContextMenuBuilder(new ContextMenuBuilder<InventoryItem>() {
|
||||||
@Override
|
@Override
|
||||||
public void buildMenu(final FDropDownMenu menu, final InventoryItem item) {
|
public void buildMenu(final FDropDownMenu menu, final InventoryItem item) {
|
||||||
menu.addItem(new FMenuItem(getVerb(), getVerbIcon(), new FEventHandler() {
|
menu.addItem(new FMenuItem(getVerb(), getVerbIcon(), event -> activateSelectedItem()));
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
activateSelectedItem();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
itemManager.setSelectionChangedHandler(new FEventHandler() {
|
itemManager.setSelectionChangedHandler(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
if (itemManager.getMultiSelectMode()) {
|
if (itemManager.getMultiSelectMode()) {
|
||||||
parentScreen.updateBuySellButtonCaption();
|
parentScreen.updateBuySellButtonCaption();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
add(lblCredits);
|
add(lblCredits);
|
||||||
}
|
}
|
||||||
@@ -235,19 +211,11 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
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
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ItemPool<InventoryItem> items = new ItemPool<>(InventoryItem.class);
|
ItemPool<InventoryItem> items = new ItemPool<>(InventoryItem.class);
|
||||||
items.add(item, result);
|
items.add(item, result);
|
||||||
activateItems(items);
|
activateItems(items);
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> parentScreen.updateCreditsLabel());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
parentScreen.updateCreditsLabel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -290,22 +258,14 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void refresh() {
|
protected void refresh() {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Forge.getLocalizer().getInstance().getMessage("lblLoading"), true, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show(Forge.getLocalizer().getInstance().getMessage("lblLoading"), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Map<ColumnDef, ItemColumn> colOverrides = new HashMap<>();
|
Map<ColumnDef, ItemColumn> colOverrides = new HashMap<>();
|
||||||
ItemColumn.addColOverride(ItemManagerConfig.SPELL_SHOP, colOverrides, ColumnDef.PRICE, QuestSpellShop.fnPriceCompare, QuestSpellShop.fnPriceGet);
|
ItemColumn.addColOverride(ItemManagerConfig.SPELL_SHOP, colOverrides, ColumnDef.PRICE, QuestSpellShop.fnPriceCompare, QuestSpellShop.fnPriceGet);
|
||||||
ItemColumn.addColOverride(ItemManagerConfig.SPELL_SHOP, colOverrides, ColumnDef.OWNED, FModel.getQuest().getCards().getFnOwnedCompare(), FModel.getQuest().getCards().getFnOwnedGet());
|
ItemColumn.addColOverride(ItemManagerConfig.SPELL_SHOP, colOverrides, ColumnDef.OWNED, FModel.getQuest().getCards().getFnOwnedCompare(), FModel.getQuest().getCards().getFnOwnedGet());
|
||||||
itemManager.setup(ItemManagerConfig.SPELL_SHOP, colOverrides);
|
itemManager.setup(ItemManagerConfig.SPELL_SHOP, colOverrides);
|
||||||
|
|
||||||
itemManager.setPool(FModel.getQuest().getCards().getShopList());
|
itemManager.setPool(FModel.getQuest().getCards().getShopList());
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -337,47 +297,25 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
|
|||||||
private static class InventoryPage extends SpellShopBasePage {
|
private static class InventoryPage extends SpellShopBasePage {
|
||||||
protected FLabel lblSellExtras = add(new FLabel.Builder().text(Forge.getLocalizer().getMessage("lblSellAllExtras"))
|
protected FLabel lblSellExtras = add(new FLabel.Builder().text(Forge.getLocalizer().getMessage("lblSellAllExtras"))
|
||||||
.icon(Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS).iconScaleFactor(1f).align(Align.right).font(FSkinFont.get(16))
|
.icon(Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS).iconScaleFactor(1f).align(Align.right).font(FSkinFont.get(16))
|
||||||
.command(new FEventHandler() {
|
.command(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
//invoke in background thread so other dialogs can be shown properly
|
//invoke in background thread so other dialogs can be shown properly
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
QuestSpellShop.sellExtras(parentScreen.spellShopPage.itemManager, itemManager);
|
QuestSpellShop.sellExtras(parentScreen.spellShopPage.itemManager, itemManager);
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> parentScreen.updateCreditsLabel());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
parentScreen.updateCreditsLabel();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).build());
|
}).build());
|
||||||
|
|
||||||
protected FLabel lblSelectAll = add(new FLabel.Builder().text(Forge.getLocalizer().getMessage("lblSelectAllCards"))
|
protected FLabel lblSelectAll = add(new FLabel.Builder().text(Forge.getLocalizer().getMessage("lblSelectAllCards"))
|
||||||
.icon(Forge.hdbuttons ? FSkinImage.HDSTAR_FILLED : FSkinImage.STAR_FILLED).iconScaleFactor(1f).align(Align.right).font(FSkinFont.get(16))
|
.icon(Forge.hdbuttons ? FSkinImage.HDSTAR_FILLED : FSkinImage.STAR_FILLED).iconScaleFactor(1f).align(Align.right).font(FSkinFont.get(16))
|
||||||
.command(new FEventHandler() {
|
.command(event -> {
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
//invoke in background thread so other dialogs can be shown properly
|
//invoke in background thread so other dialogs can be shown properly
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!itemManager.getMultiSelectMode()) {
|
if (!itemManager.getMultiSelectMode()) {
|
||||||
itemManager.toggleMultiSelectMode(0);
|
itemManager.toggleMultiSelectMode(0);
|
||||||
}
|
}
|
||||||
itemManager.selectAll();
|
itemManager.selectAll();
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> parentScreen.updateCreditsLabel());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
parentScreen.updateCreditsLabel();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).build());
|
}).build());
|
||||||
|
|
||||||
private InventoryPage() {
|
private InventoryPage() {
|
||||||
|
|||||||
@@ -34,8 +34,6 @@ import forge.screens.LoadingOverlay;
|
|||||||
import forge.screens.limited.DraftingProcessScreen;
|
import forge.screens.limited.DraftingProcessScreen;
|
||||||
import forge.toolbox.FButton;
|
import forge.toolbox.FButton;
|
||||||
import forge.toolbox.FContainer;
|
import forge.toolbox.FContainer;
|
||||||
import forge.toolbox.FEvent;
|
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FTextField;
|
import forge.toolbox.FTextField;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
@@ -84,52 +82,21 @@ public class QuestTournamentsScreen extends QuestLaunchScreen implements IQuestT
|
|||||||
public QuestTournamentsScreen() {
|
public QuestTournamentsScreen() {
|
||||||
super();
|
super();
|
||||||
controller = new QuestTournamentController(this);
|
controller = new QuestTournamentController(this);
|
||||||
btnSpendToken.setCommand(new FEventHandler() {
|
btnSpendToken.setCommand(event -> {
|
||||||
@Override
|
//must run in background thread to handle alerts
|
||||||
public void handleEvent(FEvent e) {
|
FThreads.invokeInBackgroundThread(() -> controller.spendToken());
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //must run in background thread to handle alerts
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
controller.spendToken();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
btnEditDeck.setCommand(event -> editDeck(true));
|
||||||
});
|
btnLeaveTournament.setCommand(event -> {
|
||||||
btnEditDeck.setCommand(new FEventHandler() {
|
//must run in background thread to handle alerts
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> controller.endTournamentAndAwardPrizes());
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
editDeck(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
btnLeaveTournament.setCommand(new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //must run in background thread to handle alerts
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
controller.endTournamentAndAwardPrizes();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: is it possible to somehow reuse the original btnEditDeck/btnLeaveTournament
|
// TODO: is it possible to somehow reuse the original btnEditDeck/btnLeaveTournament
|
||||||
btnEditDeckInTourn.setCommand(new FEventHandler() {
|
btnEditDeckInTourn.setCommand(event -> editDeck(true));
|
||||||
@Override
|
btnLeaveTournamentInTourn.setCommand(event -> {
|
||||||
public void handleEvent(FEvent e) {
|
//must run in background thread to handle alerts
|
||||||
editDeck(true);
|
FThreads.invokeInBackgroundThread(() -> controller.endTournamentAndAwardPrizes());
|
||||||
}
|
|
||||||
});
|
|
||||||
btnLeaveTournamentInTourn.setCommand(new FEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleEvent(FEvent e) {
|
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //must run in background thread to handle alerts
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
controller.endTournamentAndAwardPrizes();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
pnlPrepareDeck.add(btnEditDeck);
|
pnlPrepareDeck.add(btnEditDeck);
|
||||||
@@ -231,17 +198,7 @@ public class QuestTournamentsScreen extends QuestLaunchScreen implements IQuestT
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startDraft(BoosterDraft draft) {
|
public void startDraft(BoosterDraft draft) {
|
||||||
FThreads.invokeInEdtLater(new Runnable() {
|
FThreads.invokeInEdtLater(() -> LoadingOverlay.show("Loading Quest Tournament", true, () -> Forge.openScreen(new DraftingProcessScreen(draft, EditorType.QuestDraft, controller))));
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
LoadingOverlay.show("Loading Quest Tournament", new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Forge.openScreen(new DraftingProcessScreen(draft, EditorType.QuestDraft, controller));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Deck getDeck() {
|
private Deck getDeck() {
|
||||||
@@ -276,9 +233,8 @@ public class QuestTournamentsScreen extends QuestLaunchScreen implements IQuestT
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FThreads.invokeInBackgroundThread(new Runnable() { //must run in background thread to handle alerts
|
//must run in background thread to handle alerts
|
||||||
@Override
|
FThreads.invokeInBackgroundThread(() -> {
|
||||||
public void run() {
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case SELECT_TOURNAMENT:
|
case SELECT_TOURNAMENT:
|
||||||
controller.startDraft();
|
controller.startDraft();
|
||||||
@@ -292,7 +248,6 @@ public class QuestTournamentsScreen extends QuestLaunchScreen implements IQuestT
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user