mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Fix so editing deck is faster by delaying the loading of the catalog
This commit is contained in:
@@ -74,7 +74,7 @@ public class FDeckChooser extends FScreen {
|
||||
if (generatedDeck == null) { return; }
|
||||
|
||||
generatedDeck = (Deck)generatedDeck.copyTo(""); //prevent deck having a name by default
|
||||
editor = new FDeckEditor(EditorType.Constructed, generatedDeck);
|
||||
editor = new FDeckEditor(EditorType.Constructed, generatedDeck, true);
|
||||
}
|
||||
else {
|
||||
FOptionPane.showErrorDialog("You must select something before you can generate a new deck.");
|
||||
@@ -82,7 +82,7 @@ public class FDeckChooser extends FScreen {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
editor = new FDeckEditor(EditorType.Constructed, "");
|
||||
editor = new FDeckEditor(EditorType.Constructed, "", false);
|
||||
break;
|
||||
}
|
||||
editor.setSaveHandler(new FEventHandler() {
|
||||
@@ -167,7 +167,7 @@ public class FDeckChooser extends FScreen {
|
||||
private void editDeck(DeckProxy deck) {
|
||||
needRefreshOnActivate = true;
|
||||
DeckPreferences.setCurrentDeck(deck.getName());
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Constructed, deck));
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Constructed, deck, true));
|
||||
}
|
||||
|
||||
public void initialize(FPref savedStateSetting, DeckType defaultDeckType) {
|
||||
|
||||
@@ -164,21 +164,54 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
private final FLabel btnSave = deckHeader.add(new FLabel.Builder().icon(FSkinImage.SAVE).align(HAlignment.CENTER).pressedColor(Header.BTN_PRESSED_COLOR).build());
|
||||
private final FLabel btnMoreOptions = deckHeader.add(new FLabel.Builder().text("...").font(FSkinFont.get(20)).align(HAlignment.CENTER).pressedColor(Header.BTN_PRESSED_COLOR).build());
|
||||
|
||||
public FDeckEditor(EditorType editorType0, DeckProxy editDeck) {
|
||||
this(editorType0, editDeck.getName(), editDeck.getPath(), null);
|
||||
public FDeckEditor(EditorType editorType0, DeckProxy editDeck, boolean showMainDeck) {
|
||||
this(editorType0, editDeck.getName(), editDeck.getPath(), null, showMainDeck);
|
||||
}
|
||||
public FDeckEditor(EditorType editorType0, String editDeckName) {
|
||||
this(editorType0, editDeckName, "", null);
|
||||
public FDeckEditor(EditorType editorType0, String editDeckName, boolean showMainDeck) {
|
||||
this(editorType0, editDeckName, "", null, showMainDeck);
|
||||
}
|
||||
public FDeckEditor(EditorType editorType0, Deck newDeck) {
|
||||
this(editorType0, "", "", newDeck);
|
||||
public FDeckEditor(EditorType editorType0, Deck newDeck, boolean showMainDeck) {
|
||||
this(editorType0, "", "", newDeck, showMainDeck);
|
||||
}
|
||||
private FDeckEditor(EditorType editorType0, String editDeckName, String editDeckPath, Deck newDeck) {
|
||||
private FDeckEditor(EditorType editorType0, String editDeckName, String editDeckPath, Deck newDeck, boolean showMainDeck) {
|
||||
super(getPages(editorType0));
|
||||
|
||||
editorType = editorType0;
|
||||
editorType.getController().editor = this;
|
||||
|
||||
//cache specific pages
|
||||
for (TabPage<FDeckEditor> tabPage : tabPages) {
|
||||
if (tabPage instanceof CatalogPage) {
|
||||
catalogPage = (CatalogPage) tabPage;
|
||||
}
|
||||
else if (tabPage instanceof DeckSectionPage) {
|
||||
DeckSectionPage deckSectionPage = (DeckSectionPage) tabPage;
|
||||
if (deckSectionPage.deckSection == DeckSection.Main) {
|
||||
mainDeckPage = deckSectionPage;
|
||||
}
|
||||
else if (deckSectionPage.deckSection == DeckSection.Sideboard) {
|
||||
sideboardPage = deckSectionPage;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (editorType) {
|
||||
case Sealed:
|
||||
//if opening brand new sealed deck, show sideboard (card pool) by default
|
||||
if (!showMainDeck) {
|
||||
setSelectedPage(sideboardPage);
|
||||
}
|
||||
break;
|
||||
case Draft:
|
||||
break;
|
||||
default:
|
||||
//if editing existing non-limited deck, show main deck by default
|
||||
if (showMainDeck) {
|
||||
setSelectedPage(mainDeckPage);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(editDeckName)) {
|
||||
if (editorType == EditorType.Draft) {
|
||||
//hide deck header on while drafting
|
||||
@@ -270,39 +303,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
menu.show(btnMoreOptions, 0, btnMoreOptions.getHeight());
|
||||
}
|
||||
});
|
||||
|
||||
//cache specific pages
|
||||
for (TabPage<FDeckEditor> tabPage : tabPages) {
|
||||
if (tabPage instanceof CatalogPage) {
|
||||
catalogPage = (CatalogPage) tabPage;
|
||||
}
|
||||
else if (tabPage instanceof DeckSectionPage) {
|
||||
DeckSectionPage deckSectionPage = (DeckSectionPage) tabPage;
|
||||
if (deckSectionPage.deckSection == DeckSection.Main) {
|
||||
mainDeckPage = deckSectionPage;
|
||||
}
|
||||
else if (deckSectionPage.deckSection == DeckSection.Sideboard) {
|
||||
sideboardPage = deckSectionPage;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (editorType) {
|
||||
case Sealed:
|
||||
//if opening brand new sealed deck, show sideboard (card pool) by default
|
||||
if (deck.getMain().isEmpty()) {
|
||||
setSelectedPage(sideboardPage);
|
||||
}
|
||||
break;
|
||||
case Draft:
|
||||
break;
|
||||
default:
|
||||
//if editing existing non-limited deck, show main deck by default
|
||||
if (!deck.getMain().isEmpty()) {
|
||||
setSelectedPage(mainDeckPage);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -477,7 +477,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
}
|
||||
|
||||
protected static class CatalogPage extends CardManagerPage {
|
||||
private boolean initialized;
|
||||
private boolean initialized, needRefreshWhenShown;
|
||||
|
||||
protected CatalogPage() {
|
||||
this(ItemManagerConfig.CARD_CATALOG, "Catalog", FSkinImage.FOLDER);
|
||||
@@ -499,7 +499,22 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
return "Catalog";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible0) {
|
||||
if (isVisible() == visible0) { return; }
|
||||
|
||||
super.setVisible(visible0);
|
||||
if (visible0 && needRefreshWhenShown) {
|
||||
needRefreshWhenShown = false;
|
||||
refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public void refresh() {
|
||||
if (!isVisible()) {
|
||||
needRefreshWhenShown = true;
|
||||
return; //delay refreshing while hidden
|
||||
}
|
||||
cardManager.setPool(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class));
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ public class DraftScreen extends LaunchScreen {
|
||||
if (deck == null) { return; }
|
||||
|
||||
DeckPreferences.setDraftDeck(deck.getName());
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Draft, deck));
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Draft, deck, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,7 +16,7 @@ public class DraftingProcessScreen extends FDeckEditor {
|
||||
private final BoosterDraft draft;
|
||||
|
||||
public DraftingProcessScreen(BoosterDraft draft0) {
|
||||
super(EditorType.Draft, "");
|
||||
super(EditorType.Draft, "", false);
|
||||
draft = draft0;
|
||||
getCatalogPage().refresh(); //must refresh after draft set
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class SealedScreen extends LaunchScreen {
|
||||
@Override
|
||||
public void run() {
|
||||
DeckPreferences.setSealedDeck(sealed.getName());
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Sealed, sealed.getName()));
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Sealed, sealed.getName(), false));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -80,7 +80,7 @@ public class SealedScreen extends LaunchScreen {
|
||||
if (deck == null) { return; }
|
||||
|
||||
DeckPreferences.setSealedDeck(deck.getName());
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Sealed, deck));
|
||||
Forge.openScreen(new FDeckEditor(EditorType.Sealed, deck, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user