From b1759638781959b22ecbc9e4bae9c2d76959e0dc Mon Sep 17 00:00:00 2001 From: Myrd Date: Sun, 6 Nov 2016 18:22:04 +0000 Subject: [PATCH] Fix more places to load cards lazily correctly. --- forge-core/src/main/java/forge/StaticData.java | 16 ++++++++++++++++ .../src/main/java/forge/gauntlet/GauntletIO.java | 12 ++---------- .../main/java/forge/quest/io/QuestDataIO.java | 8 +++++--- .../main/java/forge/tournament/TournamentIO.java | 7 ++----- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/forge-core/src/main/java/forge/StaticData.java b/forge-core/src/main/java/forge/StaticData.java index 8d9211e7326..c722b123569 100644 --- a/forge-core/src/main/java/forge/StaticData.java +++ b/forge-core/src/main/java/forge/StaticData.java @@ -7,6 +7,7 @@ import forge.card.PrintSheet; import forge.card.CardDb.CardRequest; import forge.item.BoosterBox; import forge.item.FatPack; +import forge.item.PaperCard; import forge.item.SealedProduct; import forge.util.storage.IStorage; import forge.util.storage.StorageBase; @@ -96,6 +97,21 @@ public class StaticData { return sortedEditions; } + public PaperCard getOrLoadCommonCard(String cardName, String setCode, int artIndex, boolean foil) { + PaperCard card = commonCards.getCard(cardName, setCode, artIndex); + if (card == null) { + attemptToLoadCard(cardName, setCode); + commonCards.getCard(cardName, setCode, artIndex); + } + if (card == null) { + card = commonCards.getCard(cardName, setCode, -1); + } + if (card == null) { + return null; + } + return foil ? commonCards.getFoiled(card) : card; + } + public void attemptToLoadCard(String encodedCardName, String setCode) { CardDb.CardRequest r = CardRequest.fromString(encodedCardName); String cardName = r.cardName; diff --git a/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java b/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java index 5c43bd75fd5..9005ec7ebe3 100644 --- a/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java +++ b/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java @@ -185,19 +185,11 @@ public class GauntletIO { final String sIndex = reader.getAttribute("i"); final short index = StringUtils.isNumeric(sIndex) ? Short.parseShort(sIndex) : 0; final boolean foil = "1".equals(reader.getAttribute("foil")); - PaperCard card = FModel.getMagicDb().getCommonCards().getCard(name, set, index); - if (null == card) { - FModel.getMagicDb().attemptToLoadCard(name, set); - card = FModel.getMagicDb().getCommonCards().getCard(name, set, index); - } - if (null == card) { - FModel.getMagicDb().attemptToLoadCard(name, set); - card = FModel.getMagicDb().getCommonCards().getCard(name, set, -1); - } + PaperCard card = FModel.getMagicDb().getOrLoadCommonCard(name, set, index, foil); if (null == card) { throw new RuntimeException("Unsupported card found in quest save: " + name + " from edition " + set); } - return foil ? FModel.getMagicDb().getCommonCards().getFoiled(card) : card; + return card; } } } diff --git a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java index 7937d1fd30e..55bd111e328 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java @@ -897,9 +897,11 @@ public class QuestDataIO { final String sIndex = reader.getAttribute("i"); final short index = StringUtils.isNumeric(sIndex) ? Short.parseShort(sIndex) : 0; final boolean foil = "1".equals(reader.getAttribute("foil")); - PaperCard c = FModel.getMagicDb().getCommonCards().getCard(name, set, index); - if ( null == c ) c = FModel.getMagicDb().getCommonCards().getCard(name); - return foil ? FModel.getMagicDb().getCommonCards().getFoiled(c) : c; + PaperCard card = FModel.getMagicDb().getOrLoadCommonCard(name, set, index, foil); + if (null == card) { + throw new RuntimeException("Unsupported card found in quest save: " + name + " from edition " + set); + } + return card; } } } diff --git a/forge-gui/src/main/java/forge/tournament/TournamentIO.java b/forge-gui/src/main/java/forge/tournament/TournamentIO.java index bc0242e4238..518d5ed6180 100644 --- a/forge-gui/src/main/java/forge/tournament/TournamentIO.java +++ b/forge-gui/src/main/java/forge/tournament/TournamentIO.java @@ -177,14 +177,11 @@ public class TournamentIO { final String sIndex = reader.getAttribute("i"); final short index = StringUtils.isNumeric(sIndex) ? Short.parseShort(sIndex) : 0; final boolean foil = "1".equals(reader.getAttribute("foil")); - PaperCard card = FModel.getMagicDb().getCommonCards().getCard(name, set, index); - if (null == card) { - card = FModel.getMagicDb().getCommonCards().getCard(name, set, -1); - } + PaperCard card = FModel.getMagicDb().getOrLoadCommonCard(name, set, index, foil); if (null == card) { throw new RuntimeException("Unsupported card found in quest save: " + name + " from edition " + set); } - return foil ? FModel.getMagicDb().getCommonCards().getFoiled(card) : card; + return card; } } }