mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Merge branch 'master' into 'master'
Restrict Deck Editor cards See merge request core-developers/forge!4294
This commit is contained in:
@@ -37,6 +37,7 @@ public class StaticData {
|
||||
|
||||
private final String blockDataFolder;
|
||||
private final CardDb commonCards;
|
||||
private final CardDb commonCardsforDeckEditor;
|
||||
private final CardDb variantCards;
|
||||
private final CardDb customCards;
|
||||
private final TokenDb allTokens;
|
||||
@@ -108,11 +109,14 @@ public class StaticData {
|
||||
commonCards = new CardDb(regularCards, editions);
|
||||
variantCards = new CardDb(variantsCards, editions);
|
||||
customCards = new CardDb(customizedCards, customEditions);
|
||||
commonCardsforDeckEditor = new CardDb(regularCards, editions);
|
||||
|
||||
//must initialize after establish field values for the sake of card image logic
|
||||
commonCards.initialize(false, false, enableUnknownCards, loadNonLegalCards);
|
||||
variantCards.initialize(false, false, enableUnknownCards, loadNonLegalCards);
|
||||
customCards.initialize(false, false, enableUnknownCards, loadNonLegalCards);
|
||||
commonCards.initialize(false, false, enableUnknownCards, loadNonLegalCards, false);
|
||||
variantCards.initialize(false, false, enableUnknownCards, loadNonLegalCards, false);
|
||||
customCards.initialize(false, false, enableUnknownCards, loadNonLegalCards, false);
|
||||
//cannot filter commonCards unless we don't allow to put duplicate parts on database, commonCardsforDeckEditor is strictly for Deck Editor use
|
||||
commonCardsforDeckEditor.initialize(false, false, enableUnknownCards, loadNonLegalCards, true);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -129,8 +133,10 @@ public class StaticData {
|
||||
{
|
||||
if (customCards.getAllCards().size() > 0) {
|
||||
Collection<PaperCard> paperCards = customCards.getAllCards();
|
||||
for(PaperCard p: paperCards)
|
||||
for(PaperCard p: paperCards) {
|
||||
commonCards.addCard(p);
|
||||
commonCardsforDeckEditor.addCard(p, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -239,7 +245,13 @@ public class StaticData {
|
||||
}
|
||||
|
||||
public CardDb getCommonCards() {
|
||||
return getCommonCards(true);
|
||||
}
|
||||
|
||||
public CardDb getCommonCards(boolean includeBackSides) {
|
||||
if (includeBackSides)
|
||||
return commonCards;
|
||||
return commonCardsforDeckEditor;
|
||||
}
|
||||
|
||||
public CardDb getCustomCards() {
|
||||
|
||||
@@ -156,6 +156,9 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
}
|
||||
|
||||
private void addSetCard(CardEdition e, CardInSet cis, CardRules cr) {
|
||||
addSetCard(e, cis, cr, false);
|
||||
}
|
||||
private void addSetCard(CardEdition e, CardInSet cis, CardRules cr, boolean noSplitTypesNames) {
|
||||
int artIdx = 1;
|
||||
String key = e.getCode() + "/" + cis.name;
|
||||
if (artIds.containsKey(key)) {
|
||||
@@ -163,7 +166,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
}
|
||||
|
||||
artIds.put(key, artIdx);
|
||||
addCard(new PaperCard(cr, e.getCode(), cis.rarity, artIdx));
|
||||
addCard(new PaperCard(cr, e.getCode(), cis.rarity, artIdx), noSplitTypesNames);
|
||||
}
|
||||
|
||||
public void loadCard(String cardName, CardRules cr) {
|
||||
@@ -182,7 +185,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
reIndex();
|
||||
}
|
||||
|
||||
public void initialize(boolean logMissingPerEdition, boolean logMissingSummary, boolean enableUnknownCards, boolean loadNonLegalCards) {
|
||||
public void initialize(boolean logMissingPerEdition, boolean logMissingSummary, boolean enableUnknownCards, boolean loadNonLegalCards, boolean noSplitTypesNames) {
|
||||
Set<String> allMissingCards = new LinkedHashSet<>();
|
||||
List<String> missingCards = new ArrayList<>();
|
||||
CardEdition upcomingSet = null;
|
||||
@@ -210,7 +213,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
}
|
||||
|
||||
if (cr != null) {
|
||||
addSetCard(e, cis, cr);
|
||||
addSetCard(e, cis, cr, noSplitTypesNames);
|
||||
}
|
||||
else {
|
||||
missingCards.add(cis.name);
|
||||
@@ -255,8 +258,13 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
}
|
||||
|
||||
public void addCard(PaperCard paperCard) {
|
||||
addCard(paperCard, false);
|
||||
}
|
||||
public void addCard(PaperCard paperCard, boolean noSplitTypesNames) {
|
||||
allCardsByName.put(paperCard.getName(), paperCard);
|
||||
|
||||
if (noSplitTypesNames) { return; }
|
||||
|
||||
if (paperCard.getRules().getSplitType() == CardSplitType.None) { return; }
|
||||
|
||||
if (paperCard.getRules().getOtherPart() != null) {
|
||||
|
||||
@@ -82,7 +82,7 @@ public final class CEditorCommander extends CDeckEditor<Deck> {
|
||||
allSections.add(DeckSection.Sideboard);
|
||||
allSections.add(DeckSection.Commander);
|
||||
|
||||
CardDb commonCards = FModel.getMagicDb().getCommonCards();
|
||||
CardDb commonCards = FModel.getMagicDb().getCommonCards(false);
|
||||
if (gameType == GameType.Brawl){
|
||||
GameFormat format = FModel.getFormats().get("Brawl");
|
||||
Predicate<CardRules> commanderFilter = CardRulesPredicates.Presets.CAN_BE_BRAWL_COMMANDER;
|
||||
|
||||
@@ -93,7 +93,7 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
allSections.add(DeckSection.Planes);
|
||||
allSections.add(DeckSection.Conspiracy);
|
||||
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(), 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);
|
||||
@@ -104,8 +104,8 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
allSections.add(DeckSection.Commander);
|
||||
|
||||
commanderFilter = CardRulesPredicates.Presets.CAN_BE_COMMANDER;
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class);
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(), PaperCard.class);
|
||||
|
||||
wantUnique = true;
|
||||
break;
|
||||
@@ -113,8 +113,8 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
allSections.add(DeckSection.Commander);
|
||||
|
||||
commanderFilter = CardRulesPredicates.Presets.CAN_BE_TINY_LEADERS_COMMANDER;
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class);
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(), PaperCard.class);
|
||||
|
||||
wantUnique = true;
|
||||
break;
|
||||
@@ -122,8 +122,8 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
allSections.add(DeckSection.Commander);
|
||||
|
||||
commanderFilter = Predicates.or(CardRulesPredicates.Presets.CAN_BE_OATHBREAKER, CardRulesPredicates.Presets.CAN_BE_SIGNATURE_SPELL);
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class);
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(), PaperCard.class);
|
||||
|
||||
wantUnique = true;
|
||||
break;
|
||||
@@ -131,7 +131,7 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
allSections.add(DeckSection.Commander);
|
||||
|
||||
commanderFilter = CardRulesPredicates.Presets.CAN_BE_BRAWL_COMMANDER;
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(Predicates.and(
|
||||
commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(Predicates.and(
|
||||
FModel.getFormats().get("Brawl").getFilterPrinted(), Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES))), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(FModel.getFormats().get("Brawl").getAllCards(), PaperCard.class);
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
|
||||
private ItemPool<InventoryItem> cardsForSale;
|
||||
private final ItemPool<InventoryItem> fullCatalogCards =
|
||||
ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), InventoryItem.class);
|
||||
ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(), InventoryItem.class);
|
||||
private boolean showingFullCatalog = false;
|
||||
private DragCell allDecksParent = null;
|
||||
private DragCell deckGenParent = null;
|
||||
|
||||
@@ -41,7 +41,7 @@ public enum VWorkshopCatalog implements IVDoc<CWorkshopCatalog> {
|
||||
VWorkshopCatalog() {
|
||||
this.cardManager = new CardManager(cDetailPicture, true, false);
|
||||
this.cardManager.setCaption(localizer.getMessage("lblCatalog"));
|
||||
final Iterable<PaperCard> allCards = Iterables.concat(FModel.getMagicDb().getCommonCards(), FModel.getMagicDb().getVariantCards());
|
||||
final Iterable<PaperCard> allCards = Iterables.concat(FModel.getMagicDb().getCommonCards(false), FModel.getMagicDb().getVariantCards());
|
||||
this.cardManager.setPool(ItemPool.createFrom(allCards, PaperCard.class), true);
|
||||
this.cardManagerContainer.setItemManager(this.cardManager);
|
||||
|
||||
|
||||
@@ -316,10 +316,12 @@ public enum CardZoomer {
|
||||
* Can simply rotate current card image in situ to get same effect.
|
||||
*/
|
||||
private void toggleFlipCard() {
|
||||
try { //prevent NPE trying to view card without alternate
|
||||
isInAltState = !isInAltState;
|
||||
thisCard = thisCard.getCard().getState(isInAltState);
|
||||
imagePanel.setRotation(thisCard.getCard().isFlipCard() && isInAltState ? 180 : 0);
|
||||
setImage();
|
||||
} catch (Exception e){}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1156,10 +1156,10 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
// fall through to below
|
||||
default:
|
||||
if (cardManager.getWantUnique()) {
|
||||
cardManager.setPool(editorType.applyCardFilter(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getUniqueCards(), PaperCard.class), additionalFilter), true);
|
||||
cardManager.setPool(editorType.applyCardFilter(ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getUniqueCards(), PaperCard.class), additionalFilter), true);
|
||||
}
|
||||
else {
|
||||
cardManager.setPool(editorType.applyCardFilter(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class), additionalFilter), true);
|
||||
cardManager.setPool(editorType.applyCardFilter(ItemPool.createFrom(FModel.getMagicDb().getCommonCards(false).getAllCards(), PaperCard.class), additionalFilter), true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1243,7 +1243,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
}
|
||||
|
||||
//if card has more than one art option, add item to change user's preferred art
|
||||
final List<PaperCard> artOptions = FModel.getMagicDb().getCommonCards().getAllCards(card.getName());
|
||||
final List<PaperCard> artOptions = FModel.getMagicDb().getCommonCards(false).getAllCards(card.getName());
|
||||
if (artOptions != null && artOptions.size() > 1) {
|
||||
menu.addItem(new FMenuItem(localizer.getMessage("lblChangePreferredArt"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS, new FEventHandler() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user