From 9451a73f1eecdaa07eaeb73b251c5906759e6df8 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 15 Mar 2021 11:46:29 +0800 Subject: [PATCH] Improve convertByXitaxMethod --- .../src/main/java/forge/StaticData.java | 30 +++++++++++++++++++ .../src/main/java/forge/card/CardDb.java | 10 +++++++ forge-core/src/main/java/forge/deck/Deck.java | 14 ++++++--- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/forge-core/src/main/java/forge/StaticData.java b/forge-core/src/main/java/forge/StaticData.java index 83885198401..ad365454fc1 100644 --- a/forge-core/src/main/java/forge/StaticData.java +++ b/forge-core/src/main/java/forge/StaticData.java @@ -247,6 +247,36 @@ public class StaticData { return card; } + public PaperCard getCardFromLatestorEarliest(PaperCard card) { + + PaperCard c = this.getCommonCards().getCardFromEdition(card.getName(), null, CardDb.SetPreference.Latest, card.getArtIndex()); + + if (null != c && c.hasImage()) { + return c; + } + + c = this.getCommonCards().getCardFromEdition(card.getName(), null, CardDb.SetPreference.Latest, -1); + + if (null != c && c.hasImage()) { + return c; + } + + c = this.getCommonCards().getCardFromEdition(card.getName(), null, CardDb.SetPreference.LatestCoreExp, -1); + + if (null != c) { + return c; + } + + c = this.getCommonCards().getCardFromEdition(card.getName(), null, CardDb.SetPreference.EarliestCoreExp, -1); + + if (null != c) { + return c; + } + + // I give up! + return card; + } + public boolean getFilteredHandsEnabled(){ return filteredHandsEnabled; } diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java index cdb48cfa730..771931b63da 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -402,6 +402,16 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { public PaperCard getCardFromEdition(final String cardName, final Date printedBefore, final SetPreference fromSet, int artIndex) { final CardRequest cr = CardRequest.fromString(cardName); List cards = getAllCards(cr.cardName); + if (printedBefore != null){ + cards = Lists.newArrayList(Iterables.filter(cards, new Predicate() { + @Override public boolean apply(PaperCard c) { + CardEdition ed = editions.get(c.getEdition()); + return ed.getDate().before(printedBefore); } + })); + } + + if (cards.size() == 0) // Don't bother continuing! No cards has been found! + return null; boolean cardsListReadOnly = true; if (StringUtils.isNotBlank(cr.edition)) { diff --git a/forge-core/src/main/java/forge/deck/Deck.java b/forge-core/src/main/java/forge/deck/Deck.java index f997a6582a5..7862752e704 100644 --- a/forge-core/src/main/java/forge/deck/Deck.java +++ b/forge-core/src/main/java/forge/deck/Deck.java @@ -252,7 +252,7 @@ public class Deck extends DeckBase implements Iterable p : parts.entrySet()) { if( p.getKey() == DeckSection.Planes || p.getKey() == DeckSection.Schemes || p.getKey() == DeckSection.Avatar) @@ -264,12 +264,18 @@ public class Deck extends DeckBase implements Iterable