mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Support building deck while drafting
This commit is contained in:
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -1164,8 +1164,8 @@ forge-gui-mobile/src/forge/screens/SplashScreen.java -text
|
|||||||
forge-gui-mobile/src/forge/screens/TabPageScreen.java -text
|
forge-gui-mobile/src/forge/screens/TabPageScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java -text
|
forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java -text
|
||||||
forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java -text
|
forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/draft/CurrentPackPage.java -text
|
forge-gui-mobile/src/forge/screens/draft/DraftMainPage.java -text
|
||||||
forge-gui-mobile/src/forge/screens/draft/DraftDeckPage.java -text
|
forge-gui-mobile/src/forge/screens/draft/DraftPackPage.java -text
|
||||||
forge-gui-mobile/src/forge/screens/draft/DraftScreen.java -text
|
forge-gui-mobile/src/forge/screens/draft/DraftScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/draft/DraftSideboardPage.java -text
|
forge-gui-mobile/src/forge/screens/draft/DraftSideboardPage.java -text
|
||||||
forge-gui-mobile/src/forge/screens/draft/DraftingProcessScreen.java -text
|
forge-gui-mobile/src/forge/screens/draft/DraftingProcessScreen.java -text
|
||||||
|
|||||||
@@ -16,26 +16,27 @@ import forge.toolbox.FScrollPane;
|
|||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
public class TabPageScreen extends FScreen {
|
public class TabPageScreen<T extends TabPageScreen<T>> extends FScreen {
|
||||||
private final TabPage[] tabPages;
|
protected final TabPage<T>[] tabPages;
|
||||||
private TabPage selectedPage;
|
private TabPage<T> selectedPage;
|
||||||
|
|
||||||
public TabPageScreen(TabPage[] tabPages0) {
|
@SuppressWarnings("unchecked")
|
||||||
super(new TabHeader(tabPages0));
|
public TabPageScreen(TabPage<T>[] tabPages0) {
|
||||||
|
super(new TabHeader<T>(tabPages0));
|
||||||
|
|
||||||
tabPages = tabPages0;
|
tabPages = tabPages0;
|
||||||
for (TabPage tabPage : tabPages) {
|
for (TabPage<T> tabPage : tabPages) {
|
||||||
tabPage.parentScreen = this;
|
tabPage.parentScreen = (T)this;
|
||||||
add(tabPage);
|
add(tabPage);
|
||||||
tabPage.setVisible(false);
|
tabPage.setVisible(false);
|
||||||
}
|
}
|
||||||
setSelectedPage(tabPages[0]);
|
setSelectedPage(tabPages[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TabPage getSelectedPage() {
|
public TabPage<T> getSelectedPage() {
|
||||||
return selectedPage;
|
return selectedPage;
|
||||||
}
|
}
|
||||||
public void setSelectedPage(TabPage tabPage0) {
|
public void setSelectedPage(TabPage<T> tabPage0) {
|
||||||
if (selectedPage == tabPage0) { return; }
|
if (selectedPage == tabPage0) { return; }
|
||||||
|
|
||||||
if (selectedPage != null) {
|
if (selectedPage != null) {
|
||||||
@@ -50,12 +51,12 @@ public class TabPageScreen extends FScreen {
|
|||||||
@Override
|
@Override
|
||||||
protected void doLayout(float startY, float width, float height) {
|
protected void doLayout(float startY, float width, float height) {
|
||||||
height -= startY;
|
height -= startY;
|
||||||
for (TabPage tabPage : tabPages) {
|
for (TabPage<T> tabPage : tabPages) {
|
||||||
tabPage.setBounds(0, startY, width, height);
|
tabPage.setBounds(0, startY, width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class TabHeader extends Header {
|
private static class TabHeader<T extends TabPageScreen<T>> extends Header {
|
||||||
public static final float HEIGHT = Math.round(Utils.AVG_FINGER_HEIGHT * 1.4f);
|
public static final float HEIGHT = Math.round(Utils.AVG_FINGER_HEIGHT * 1.4f);
|
||||||
public static final float TAB_WIDTH = Math.round(HEIGHT * 1.2f);
|
public static final float TAB_WIDTH = Math.round(HEIGHT * 1.2f);
|
||||||
private static final float BACK_BUTTON_WIDTH = Math.round(HEIGHT / 2);
|
private static final float BACK_BUTTON_WIDTH = Math.round(HEIGHT / 2);
|
||||||
@@ -64,7 +65,7 @@ public class TabPageScreen extends FScreen {
|
|||||||
private final FLabel btnBack;
|
private final FLabel btnBack;
|
||||||
private final FScrollPane scroller;
|
private final FScrollPane scroller;
|
||||||
|
|
||||||
public TabHeader(TabPage[] tabPages) {
|
public TabHeader(TabPage<T>[] tabPages) {
|
||||||
scroller = add(new FScrollPane() {
|
scroller = add(new FScrollPane() {
|
||||||
@Override
|
@Override
|
||||||
protected ScrollBounds layoutAndGetScrollBounds(float visibleWidth, float visibleHeight) {
|
protected ScrollBounds layoutAndGetScrollBounds(float visibleWidth, float visibleHeight) {
|
||||||
@@ -90,7 +91,7 @@ public class TabPageScreen extends FScreen {
|
|||||||
}).build());
|
}).build());
|
||||||
btnBack.setSize(BACK_BUTTON_WIDTH, HEIGHT);
|
btnBack.setSize(BACK_BUTTON_WIDTH, HEIGHT);
|
||||||
|
|
||||||
for (TabPage tabPage : tabPages) {
|
for (TabPage<T> tabPage : tabPages) {
|
||||||
scroller.add(tabPage.createTab());
|
scroller.add(tabPage.createTab());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,13 +123,13 @@ public class TabPageScreen extends FScreen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static abstract class TabPage extends FContainer {
|
public static abstract class TabPage<T extends TabPageScreen<T>> extends FContainer {
|
||||||
private static final float TAB_PADDING = TabHeader.HEIGHT * 0.1f;
|
private static final float TAB_PADDING = TabHeader.HEIGHT * 0.1f;
|
||||||
private static final FSkinColor SEL_TAB_COLOR = FSkinColor.get(Colors.CLR_ACTIVE);
|
private static final FSkinColor SEL_TAB_COLOR = FSkinColor.get(Colors.CLR_ACTIVE);
|
||||||
private static final FSkinColor TAB_FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
private static final FSkinColor TAB_FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||||
private static final FSkinFont TAB_FONT = FSkinFont.get(12);
|
private static final FSkinFont TAB_FONT = FSkinFont.get(12);
|
||||||
|
|
||||||
protected TabPageScreen parentScreen;
|
protected T parentScreen;
|
||||||
protected String caption;
|
protected String caption;
|
||||||
protected FImage icon;
|
protected FImage icon;
|
||||||
|
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
package forge.screens.draft;
|
|
||||||
|
|
||||||
import forge.assets.FSkinImage;
|
|
||||||
import forge.itemmanager.CardManager;
|
|
||||||
import forge.itemmanager.ItemManagerConfig;
|
|
||||||
import forge.limited.BoosterDraft;
|
|
||||||
import forge.screens.TabPageScreen.TabPage;
|
|
||||||
|
|
||||||
public class DraftDeckPage extends TabPage {
|
|
||||||
private final BoosterDraft draft;
|
|
||||||
private final CardManager lstDeck = add(new CardManager(false));
|
|
||||||
|
|
||||||
protected DraftDeckPage(BoosterDraft draft0) {
|
|
||||||
super("Main (0)", FSkinImage.DECKLIST);
|
|
||||||
|
|
||||||
draft = draft0;
|
|
||||||
|
|
||||||
lstDeck.setCaption("Main Deck");
|
|
||||||
lstDeck.setAlwaysNonUnique(true);
|
|
||||||
lstDeck.setup(ItemManagerConfig.DRAFT_POOL);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void doLayout(float width, float height) {
|
|
||||||
lstDeck.setBounds(0, 0, width, height);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
38
forge-gui-mobile/src/forge/screens/draft/DraftMainPage.java
Normal file
38
forge-gui-mobile/src/forge/screens/draft/DraftMainPage.java
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package forge.screens.draft;
|
||||||
|
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.item.PaperCard;
|
||||||
|
import forge.itemmanager.CardManager;
|
||||||
|
import forge.itemmanager.ItemManagerConfig;
|
||||||
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
|
|
||||||
|
public class DraftMainPage extends TabPage<DraftingProcessScreen> {
|
||||||
|
private final CardManager lstMain = add(new CardManager(false));
|
||||||
|
|
||||||
|
protected DraftMainPage() {
|
||||||
|
super("Main (0)", FSkinImage.DECKLIST);
|
||||||
|
|
||||||
|
lstMain.setCaption("Main Deck");
|
||||||
|
lstMain.setAlwaysNonUnique(true);
|
||||||
|
lstMain.setup(ItemManagerConfig.DRAFT_POOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refresh() {
|
||||||
|
lstMain.setPool(parentScreen.getDeck().getMain());
|
||||||
|
updateCaption();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addCard(PaperCard card) {
|
||||||
|
lstMain.addItem(card, 1);
|
||||||
|
updateCaption();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCaption() {
|
||||||
|
caption = "Main (" + parentScreen.getDeck().getMain().countAll() + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float width, float height) {
|
||||||
|
lstMain.setBounds(0, 0, width, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,24 +1,20 @@
|
|||||||
package forge.screens.draft;
|
package forge.screens.draft;
|
||||||
|
|
||||||
import forge.assets.FSkinImage;
|
import forge.assets.FSkinImage;
|
||||||
import forge.item.PaperCard;
|
import forge.deck.CardPool;
|
||||||
import forge.itemmanager.CardManager;
|
import forge.itemmanager.CardManager;
|
||||||
import forge.itemmanager.ItemManagerConfig;
|
import forge.itemmanager.ItemManagerConfig;
|
||||||
import forge.limited.BoosterDraft;
|
import forge.limited.BoosterDraft;
|
||||||
import forge.screens.TabPageScreen.TabPage;
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
import forge.util.ItemPool;
|
|
||||||
|
|
||||||
public class CurrentPackPage extends TabPage {
|
public class DraftPackPage extends TabPage<DraftingProcessScreen> {
|
||||||
private final BoosterDraft draft;
|
|
||||||
private final CardManager lstPack = add(new CardManager(false));
|
private final CardManager lstPack = add(new CardManager(false));
|
||||||
|
|
||||||
protected CurrentPackPage(BoosterDraft draft0) {
|
protected DraftPackPage() {
|
||||||
super("Pack 1", FSkinImage.PACK);
|
super("Pack 1", FSkinImage.PACK);
|
||||||
|
|
||||||
draft = draft0;
|
|
||||||
|
|
||||||
//hide filters and options panel so more of pack is visible by default
|
//hide filters and options panel so more of pack is visible by default
|
||||||
lstPack.setHideViewOptions(1, true);
|
lstPack.setHideViewOptions(1, true);
|
||||||
lstPack.setAlwaysNonUnique(true);
|
lstPack.setAlwaysNonUnique(true);
|
||||||
@@ -27,34 +23,33 @@ public class CurrentPackPage extends TabPage {
|
|||||||
lstPack.setItemActivateHandler(new FEventHandler() {
|
lstPack.setItemActivateHandler(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
|
parentScreen.getMainPage().addCard(lstPack.getSelectedItem());
|
||||||
pickSelectedCard();
|
pickSelectedCard();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
showChoices(draft.nextChoice());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showChoices(final ItemPool<PaperCard> list) {
|
public void showChoices() {
|
||||||
|
BoosterDraft draft = parentScreen.getDraft();
|
||||||
|
CardPool pool = draft.nextChoice();
|
||||||
int packNumber = draft.getCurrentBoosterIndex() + 1;
|
int packNumber = draft.getCurrentBoosterIndex() + 1;
|
||||||
caption = "Pack " + packNumber;
|
caption = "Pack " + packNumber;
|
||||||
lstPack.setPool(list);
|
lstPack.setPool(pool);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pickSelectedCard() {
|
private void pickSelectedCard() {
|
||||||
|
BoosterDraft draft = parentScreen.getDraft();
|
||||||
draft.setChoice(lstPack.getSelectedItem());
|
draft.setChoice(lstPack.getSelectedItem());
|
||||||
|
|
||||||
if (draft.hasNextChoice()) {
|
if (draft.hasNextChoice()) {
|
||||||
showChoices(draft.nextChoice());
|
showChoices();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
draft.finishedDrafting();
|
draft.finishedDrafting();
|
||||||
saveDraft();
|
parentScreen.saveDraft();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveDraft() {
|
|
||||||
//TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doLayout(float width, float height) {
|
protected void doLayout(float width, float height) {
|
||||||
lstPack.setBounds(0, 0, width, height);
|
lstPack.setBounds(0, 0, width, height);
|
||||||
@@ -1,25 +1,37 @@
|
|||||||
package forge.screens.draft;
|
package forge.screens.draft;
|
||||||
|
|
||||||
import forge.assets.FSkinImage;
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.deck.DeckSection;
|
||||||
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.CardManager;
|
import forge.itemmanager.CardManager;
|
||||||
import forge.itemmanager.ItemManagerConfig;
|
import forge.itemmanager.ItemManagerConfig;
|
||||||
import forge.limited.BoosterDraft;
|
|
||||||
import forge.screens.TabPageScreen.TabPage;
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
|
|
||||||
public class DraftSideboardPage extends TabPage {
|
public class DraftSideboardPage extends TabPage<DraftingProcessScreen> {
|
||||||
private final BoosterDraft draft;
|
|
||||||
private final CardManager lstSideboard = add(new CardManager(false));
|
private final CardManager lstSideboard = add(new CardManager(false));
|
||||||
|
|
||||||
protected DraftSideboardPage(BoosterDraft draft0) {
|
protected DraftSideboardPage() {
|
||||||
super("Side (0)", FSkinImage.FLASHBACK);
|
super("Side (0)", FSkinImage.FLASHBACK);
|
||||||
|
|
||||||
draft = draft0;
|
|
||||||
|
|
||||||
lstSideboard.setCaption("Sideboard");
|
lstSideboard.setCaption("Sideboard");
|
||||||
lstSideboard.setAlwaysNonUnique(true);
|
lstSideboard.setAlwaysNonUnique(true);
|
||||||
lstSideboard.setup(ItemManagerConfig.DRAFT_POOL);
|
lstSideboard.setup(ItemManagerConfig.DRAFT_POOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refresh() {
|
||||||
|
lstSideboard.setPool(parentScreen.getDeck().get(DeckSection.Sideboard));
|
||||||
|
updateCaption();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addCard(PaperCard card) {
|
||||||
|
lstSideboard.addItem(card, 1);
|
||||||
|
updateCaption();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCaption() {
|
||||||
|
caption = "Side (" + parentScreen.getDeck().get(DeckSection.Sideboard).countAll() + ")";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doLayout(float width, float height) {
|
protected void doLayout(float width, float height) {
|
||||||
lstSideboard.setBounds(0, 0, width, height);
|
lstSideboard.setBounds(0, 0, width, height);
|
||||||
|
|||||||
@@ -1,22 +1,137 @@
|
|||||||
package forge.screens.draft;
|
package forge.screens.draft;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import forge.card.MagicColor;
|
||||||
|
import forge.deck.Deck;
|
||||||
|
import forge.deck.DeckGroup;
|
||||||
|
import forge.deck.DeckSection;
|
||||||
import forge.limited.BoosterDraft;
|
import forge.limited.BoosterDraft;
|
||||||
|
import forge.limited.IBoosterDraft;
|
||||||
|
import forge.model.FModel;
|
||||||
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.TabPageScreen;
|
import forge.screens.TabPageScreen;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Callback;
|
import forge.util.Callback;
|
||||||
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
public class DraftingProcessScreen extends TabPageScreen {
|
public class DraftingProcessScreen extends TabPageScreen<DraftingProcessScreen> {
|
||||||
|
private boolean saved;
|
||||||
|
private final BoosterDraft draft;
|
||||||
|
private final Deck deck;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public DraftingProcessScreen(BoosterDraft draft0) {
|
public DraftingProcessScreen(BoosterDraft draft0) {
|
||||||
super(new TabPage[] {
|
super(new TabPage[] {
|
||||||
new CurrentPackPage(draft0),
|
new DraftPackPage(),
|
||||||
new DraftDeckPage(draft0),
|
new DraftMainPage(),
|
||||||
new DraftSideboardPage(draft0)
|
new DraftSideboardPage()
|
||||||
});
|
});
|
||||||
|
draft = draft0;
|
||||||
|
|
||||||
|
//create starting point for draft deck with lands in sideboard
|
||||||
|
deck = new Deck();
|
||||||
|
deck.getOrCreate(DeckSection.Sideboard);
|
||||||
|
|
||||||
|
final String landSet = IBoosterDraft.LAND_SET_CODE[0].getCode();
|
||||||
|
final boolean isZendikarSet = landSet.equals("ZEN"); // we want to generate one kind of Zendikar lands at a time only
|
||||||
|
final boolean zendikarSetMode = MyRandom.getRandom().nextBoolean();
|
||||||
|
|
||||||
|
final int landsCount = 10;
|
||||||
|
|
||||||
|
for (String landName : MagicColor.Constant.BASIC_LANDS) {
|
||||||
|
int numArt = FModel.getMagicDb().getCommonCards().getArtCount(landName, landSet);
|
||||||
|
int minArtIndex = isZendikarSet ? (zendikarSetMode ? 1 : 5) : 1;
|
||||||
|
int maxArtIndex = isZendikarSet ? minArtIndex + 3 : numArt;
|
||||||
|
|
||||||
|
if (FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_IN_POOLS)) {
|
||||||
|
for (int i = minArtIndex; i <= maxArtIndex; i++) {
|
||||||
|
deck.get(DeckSection.Sideboard).add(landName, landSet, i, numArt > 1 ? landsCount : 30);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deck.get(DeckSection.Sideboard).add(landName, landSet, 30);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//show initial cards in card managers
|
||||||
|
getPackPage().showChoices();
|
||||||
|
getMainPage().refresh();
|
||||||
|
getSideboardPage().refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DraftPackPage getPackPage() {
|
||||||
|
return (DraftPackPage)tabPages[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public DraftMainPage getMainPage() {
|
||||||
|
return (DraftMainPage)tabPages[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
public DraftSideboardPage getSideboardPage() {
|
||||||
|
return (DraftSideboardPage)tabPages[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
public BoosterDraft getDraft() {
|
||||||
|
return draft;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Deck getDeck() {
|
||||||
|
return deck;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveDraft() {
|
||||||
|
FOptionPane.showInputDialog("Save this draft as:", "Save Draft", FOptionPane.QUESTION_ICON, new Callback<String>() {
|
||||||
|
@Override
|
||||||
|
public void run(final String name) {
|
||||||
|
if (StringUtils.isEmpty(name)) {
|
||||||
|
saveDraft(); //re-prompt if user doesn't pick a name
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for overwrite case
|
||||||
|
for (DeckGroup d : FModel.getDecks().getDraft()) {
|
||||||
|
if (name.equalsIgnoreCase(d.getName())) {
|
||||||
|
FOptionPane.showConfirmDialog(
|
||||||
|
"There is already a deck named '" + name + "'. Overwrite?",
|
||||||
|
"Overwrite Deck?", false, new Callback<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void run(Boolean result) {
|
||||||
|
if (result) {
|
||||||
|
finishSave(name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
saveDraft(); //If no overwrite, recurse.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
finishSave(name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void finishSave(String name) {
|
||||||
|
saved = true;
|
||||||
|
|
||||||
|
// Construct computer's decks and save draft
|
||||||
|
final Deck[] computer = draft.getDecks();
|
||||||
|
|
||||||
|
final DeckGroup finishedDraft = new DeckGroup(name);
|
||||||
|
finishedDraft.setHumanDeck((Deck) deck.copyTo(name));
|
||||||
|
finishedDraft.addAiDecks(computer);
|
||||||
|
|
||||||
|
FModel.getDecks().getDraft().add(finishedDraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClose(Callback<Boolean> canCloseCallback) {
|
public void onClose(Callback<Boolean> canCloseCallback) {
|
||||||
if (canCloseCallback == null) { return; }
|
if (saved || canCloseCallback == null) {
|
||||||
|
super.onClose(canCloseCallback); //can skip prompt if draft saved
|
||||||
|
}
|
||||||
FOptionPane.showConfirmDialog("This will end the current draft and you will not be able to resume.\n\n" +
|
FOptionPane.showConfirmDialog("This will end the current draft and you will not be able to resume.\n\n" +
|
||||||
"Leave anyway?", "Leave Draft?", "Leave", "Cancel", false, canCloseCallback);
|
"Leave anyway?", "Leave Draft?", "Leave", "Cancel", false, canCloseCallback);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import forge.toolbox.FList;
|
|||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Callback;
|
import forge.util.Callback;
|
||||||
|
|
||||||
public class FilesPage extends TabPage {
|
public class FilesPage extends TabPage<SettingsScreen> {
|
||||||
private final FGroupList<FilesItem> lstItems = add(new FGroupList<FilesItem>());
|
private final FGroupList<FilesItem> lstItems = add(new FGroupList<FilesItem>());
|
||||||
|
|
||||||
protected FilesPage() {
|
protected FilesPage() {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package forge.screens.settings;
|
|||||||
import forge.assets.FSkinImage;
|
import forge.assets.FSkinImage;
|
||||||
import forge.screens.TabPageScreen.TabPage;
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
|
|
||||||
public class HelpPage extends TabPage {
|
public class HelpPage extends TabPage<SettingsScreen> {
|
||||||
|
|
||||||
protected HelpPage() {
|
protected HelpPage() {
|
||||||
super("Help", FSkinImage.UNKNOWN);
|
super("Help", FSkinImage.UNKNOWN);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import forge.toolbox.FGroupList;
|
|||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
public class SettingsPage extends TabPage {
|
public class SettingsPage extends TabPage<SettingsScreen> {
|
||||||
private final FGroupList<Setting> lstSettings = add(new FGroupList<Setting>());
|
private final FGroupList<Setting> lstSettings = add(new FGroupList<Setting>());
|
||||||
|
|
||||||
public SettingsPage() {
|
public SettingsPage() {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import forge.assets.FSkinColor.Colors;
|
|||||||
import forge.screens.TabPageScreen;
|
import forge.screens.TabPageScreen;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
public class SettingsScreen extends TabPageScreen {
|
public class SettingsScreen extends TabPageScreen<SettingsScreen> {
|
||||||
public static final float INSETS_FACTOR = 0.025f;
|
public static final float INSETS_FACTOR = 0.025f;
|
||||||
public static final FSkinFont DESC_FONT = FSkinFont.get(11);
|
public static final FSkinFont DESC_FONT = FSkinFont.get(11);
|
||||||
public static final FSkinColor DESC_COLOR = FSkinColor.get(Colors.CLR_TEXT).alphaColor(0.5f);
|
public static final FSkinColor DESC_COLOR = FSkinColor.get(Colors.CLR_TEXT).alphaColor(0.5f);
|
||||||
@@ -23,6 +23,7 @@ public class SettingsScreen extends TabPageScreen {
|
|||||||
Forge.openScreen(settingsScreen);
|
Forge.openScreen(settingsScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
private SettingsScreen() {
|
private SettingsScreen() {
|
||||||
super(new TabPage[] {
|
super(new TabPage[] {
|
||||||
new SettingsPage(),
|
new SettingsPage(),
|
||||||
|
|||||||
Reference in New Issue
Block a user