From 1e5874aed5a46cc6d562c6aeedce60dbf9f2b02d Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 8 Apr 2021 09:57:26 +0800 Subject: [PATCH] update preload itempool --- .../controllers/CEditorConstructed.java | 36 +++++-------- .../src/main/java/forge/model/FModel.java | 50 +++++++++++++++++-- 2 files changed, 58 insertions(+), 28 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java index 5324cd1506a..5303b3897c3 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java @@ -63,8 +63,6 @@ public final class CEditorConstructed extends CDeckEditor { private final List allSections = new ArrayList<>(); private ItemPool normalPool, avatarPool, planePool, schemePool, conspiracyPool, commanderPool; - Predicate commanderFilter; - CardManager catalogManager; CardManager deckManager; @@ -94,51 +92,41 @@ public final class CEditorConstructed extends CDeckEditor { allSections.add(DeckSection.Planes); allSections.add(DeckSection.Conspiracy); - normalPool = ItemPool.createFrom(Iterables.concat(FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(), FModel.getMagicDb().getCustomCards().getAllCardsNoAlt()), PaperCard.class); - avatarPool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_VANGUARD, PaperCard.FN_GET_RULES)), PaperCard.class); - planePool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_PLANE_OR_PHENOMENON, PaperCard.FN_GET_RULES)), PaperCard.class); - schemePool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_SCHEME, PaperCard.FN_GET_RULES)), PaperCard.class); - conspiracyPool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_CONSPIRACY, PaperCard.FN_GET_RULES)), PaperCard.class); + normalPool = FModel.getAllCardsNoAlt(); + avatarPool = FModel.getAvatarPool(); + planePool = FModel.getPlanechaseCards(); + schemePool = FModel.getArchenemyCards(); + conspiracyPool = FModel.getConspiracyPool(); break; case Commander: allSections.add(DeckSection.Commander); - commanderFilter = CardRulesPredicates.Presets.CAN_BE_COMMANDER; - commanderPool = ItemPool.createFrom(Iterables.concat(FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), FModel.getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES))), PaperCard.class); - normalPool = ItemPool.createFrom(Iterables.concat(FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(), FModel.getMagicDb().getCustomCards().getAllCardsNoAlt()), PaperCard.class); + commanderPool = FModel.getCommanderPool(); + normalPool = FModel.getAllCardsNoAlt(); wantUnique = true; break; case TinyLeaders: allSections.add(DeckSection.Commander); - commanderFilter = CardRulesPredicates.Presets.CAN_BE_TINY_LEADERS_COMMANDER; - commanderPool = ItemPool.createFrom(Iterables.concat( - FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), - FModel.getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES))), PaperCard.class); - normalPool = ItemPool.createFrom(Iterables.concat(FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(), FModel.getMagicDb().getCustomCards().getAllCardsNoAlt()), PaperCard.class); + commanderPool = FModel.getTinyLeadersCommander(); + normalPool = FModel.getAllCardsNoAlt(); wantUnique = true; break; case Oathbreaker: allSections.add(DeckSection.Commander); - commanderFilter = Predicates.or(CardRulesPredicates.Presets.CAN_BE_OATHBREAKER, CardRulesPredicates.Presets.CAN_BE_SIGNATURE_SPELL); - commanderPool = ItemPool.createFrom(Iterables.concat( - FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), - FModel.getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES))), PaperCard.class); - normalPool = ItemPool.createFrom(Iterables.concat(FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(), FModel.getMagicDb().getCustomCards().getAllCardsNoAlt()), PaperCard.class); + commanderPool = FModel.getOathbreakerCommander(); + normalPool = FModel.getAllCardsNoAlt(); wantUnique = true; break; case Brawl: allSections.add(DeckSection.Commander); - commanderFilter = CardRulesPredicates.Presets.CAN_BE_BRAWL_COMMANDER; - commanderPool = ItemPool.createFrom(Iterables.concat(FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.and( - FModel.getFormats().get("Brawl").getFilterPrinted(), Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES))), FModel.getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.and( - FModel.getFormats().get("Brawl").getFilterPrinted(), Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)))), PaperCard.class); + commanderPool = FModel.getBrawlCommander(); normalPool = ItemPool.createFrom(FModel.getFormats().get("Brawl").getAllCards(), PaperCard.class); wantUnique = true; diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index b113fba4b1b..de663df36eb 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -114,7 +114,7 @@ public final class FModel { private static IStorage planes; private static IStorage worlds; private static GameFormat.Collection formats; - private static ItemPool uniqueCardsNoAlt, allCardsNoAlt, planechaseCards, archenemyCards; + private static ItemPool uniqueCardsNoAlt, allCardsNoAlt, planechaseCards, archenemyCards, brawlCommander, oathbreakerCommander, tinyLeadersCommander, commanderPool, avatarPool, conspiracyPool; public static void initialize(final IProgressBar progressBar, Function adjustPrefs) { //init version to log @@ -277,11 +277,29 @@ public final class FModel { } } - //preload Itempool - uniqueCardsNoAlt = ItemPool.createFrom(Iterables.concat(getMagicDb().getCommonCards().getUniqueCardsNoAlt(), getMagicDb().getCustomCards().getUniqueCardsNoAlt()), PaperCard.class); allCardsNoAlt = ItemPool.createFrom(Iterables.concat(getMagicDb().getCommonCards().getAllCardsNoAlt(), getMagicDb().getCustomCards().getAllCardsNoAlt()), PaperCard.class); archenemyCards = ItemPool.createFrom(getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_SCHEME, PaperCard.FN_GET_RULES)), PaperCard.class); - planechaseCards = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_PLANE_OR_PHENOMENON, PaperCard.FN_GET_RULES)), PaperCard.class); + planechaseCards = ItemPool.createFrom(getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_PLANE_OR_PHENOMENON, PaperCard.FN_GET_RULES)), PaperCard.class); + if (GuiBase.getInterface().isLibgdxPort()) { + //preload mobile Itempool + uniqueCardsNoAlt = ItemPool.createFrom(Iterables.concat(getMagicDb().getCommonCards().getUniqueCardsNoAlt(), getMagicDb().getCustomCards().getUniqueCardsNoAlt()), PaperCard.class); + } else { + //preload Desktop Itempool + commanderPool = ItemPool.createFrom(Iterables.concat( + getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.compose(CardRulesPredicates.Presets.CAN_BE_COMMANDER, PaperCard.FN_GET_RULES)), + getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.compose(CardRulesPredicates.Presets.CAN_BE_COMMANDER, PaperCard.FN_GET_RULES))), PaperCard.class); + brawlCommander = ItemPool.createFrom(Iterables.concat(getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.and( + FModel.getFormats().get("Brawl").getFilterPrinted(), Predicates.compose(CardRulesPredicates.Presets.CAN_BE_BRAWL_COMMANDER, PaperCard.FN_GET_RULES))), getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.and( + FModel.getFormats().get("Brawl").getFilterPrinted(), Predicates.compose(CardRulesPredicates.Presets.CAN_BE_BRAWL_COMMANDER, PaperCard.FN_GET_RULES)))), PaperCard.class); + oathbreakerCommander = ItemPool.createFrom(Iterables.concat( + getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.compose(Predicates.or(CardRulesPredicates.Presets.CAN_BE_OATHBREAKER, CardRulesPredicates.Presets.CAN_BE_SIGNATURE_SPELL), PaperCard.FN_GET_RULES)), + getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.compose(Predicates.or(CardRulesPredicates.Presets.CAN_BE_OATHBREAKER, CardRulesPredicates.Presets.CAN_BE_SIGNATURE_SPELL), PaperCard.FN_GET_RULES))), PaperCard.class); + tinyLeadersCommander = ItemPool.createFrom(Iterables.concat( + getMagicDb().getCommonCards().getAllCardsNoAlt(Predicates.compose(CardRulesPredicates.Presets.CAN_BE_TINY_LEADERS_COMMANDER, PaperCard.FN_GET_RULES)), + getMagicDb().getCustomCards().getAllCardsNoAlt(Predicates.compose(CardRulesPredicates.Presets.CAN_BE_TINY_LEADERS_COMMANDER, PaperCard.FN_GET_RULES))), PaperCard.class); + avatarPool = ItemPool.createFrom(getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_VANGUARD, PaperCard.FN_GET_RULES)), PaperCard.class); + conspiracyPool = ItemPool.createFrom(getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_CONSPIRACY, PaperCard.FN_GET_RULES)), PaperCard.class); + } } private static boolean deckGenMatrixLoaded=false; @@ -314,6 +332,30 @@ public final class FModel { return planechaseCards; } + public static ItemPool getBrawlCommander() { + return brawlCommander; + } + + public static ItemPool getOathbreakerCommander() { + return oathbreakerCommander; + } + + public static ItemPool getTinyLeadersCommander() { + return tinyLeadersCommander; + } + + public static ItemPool getCommanderPool() { + return commanderPool; + } + + public static ItemPool getAvatarPool() { + return avatarPool; + } + + public static ItemPool getConspiracyPool() { + return conspiracyPool; + } + private static boolean keywordsLoaded = false; /**