From e0d9678b99243a2a4202202ff440ff4c16a30b4b Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 1 Sep 2015 11:22:04 +0200 Subject: [PATCH] * Fixed split card handling in deck editor. --- Mage/src/mage/cards/mock/MockSplitCard.java | 4 +- .../mage/cards/mock/MockSplitCardHalf.java | 58 +++++++++++++++++++ Mage/src/mage/filter/FilterCard.java | 27 +++++---- 3 files changed, 73 insertions(+), 16 deletions(-) create mode 100644 Mage/src/mage/cards/mock/MockSplitCardHalf.java diff --git a/Mage/src/mage/cards/mock/MockSplitCard.java b/Mage/src/mage/cards/mock/MockSplitCard.java index 3eb271bdadb..e1c03601f41 100644 --- a/Mage/src/mage/cards/mock/MockSplitCard.java +++ b/Mage/src/mage/cards/mock/MockSplitCard.java @@ -51,12 +51,12 @@ public class MockSplitCard extends SplitCard { CardInfo leftHalf = CardRepository.instance.findCard(getLeftHalfName(card)); if (leftHalf != null) { - this.leftHalfCard = new MockCard(leftHalf); + this.leftHalfCard = new MockSplitCardHalf(leftHalf); } CardInfo rightHalf = CardRepository.instance.findCard(getRightHalfName(card)); if (rightHalf != null) { - this.rightHalfCard = new MockCard(rightHalf); + this.rightHalfCard = new MockSplitCardHalf(rightHalf); } } diff --git a/Mage/src/mage/cards/mock/MockSplitCardHalf.java b/Mage/src/mage/cards/mock/MockSplitCardHalf.java new file mode 100644 index 00000000000..4eefd3d0b1a --- /dev/null +++ b/Mage/src/mage/cards/mock/MockSplitCardHalf.java @@ -0,0 +1,58 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.mock; + +import mage.cards.SplitCard; +import mage.cards.SplitCardHalf; +import mage.cards.repository.CardInfo; + +/** + * + * @author LevelX2 + */ +public class MockSplitCardHalf extends MockCard implements SplitCardHalf { + + public MockSplitCardHalf(CardInfo card) { + super(card); + } + + public MockSplitCardHalf(final MockSplitCardHalf card) { + super(card); + } + + @Override + public MockSplitCardHalf copy() { + return new MockSplitCardHalf(this); + } + + @Override + public void setParentCard(SplitCard card) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + +} diff --git a/Mage/src/mage/filter/FilterCard.java b/Mage/src/mage/filter/FilterCard.java index 97cb529a055..2995a693184 100644 --- a/Mage/src/mage/filter/FilterCard.java +++ b/Mage/src/mage/filter/FilterCard.java @@ -64,30 +64,29 @@ public class FilterCard extends FilterObject { } //20130711 708.6c - /* If anything performs a comparison involving multiple characteristics or - * values of one or more split cards in any zone other than the stack or - * involving multiple characteristics or values of one or more fused split - * spells, each characteristic or value is compared separately. If each of - * the individual comparisons would return a “yes” answer, the whole + /* If anything performs a comparison involving multiple characteristics or + * values of one or more split cards in any zone other than the stack or + * involving multiple characteristics or values of one or more fused split + * spells, each characteristic or value is compared separately. If each of + * the individual comparisons would return a “yes” answer, the whole * comparison returns a “yes” answer. The individual comparisons may involve * different halves of the same split card. */ - @Override public boolean match(Card card, Game game) { - if(card.isSplitCard()){ - return super.match(((SplitCard)card).getLeftHalfCard(), game) || - super.match(((SplitCard)card).getRightHalfCard(), game); - } - else{ - return super.match(card, game); + if (card.isSplitCard()) { + return super.match(((SplitCard) card).getLeftHalfCard(), game) + || super.match(((SplitCard) card).getRightHalfCard(), game); + } else { + return super.match(card, game); } } + public boolean match(Card card, UUID playerId, Game game) { if (!this.match(card, game)) { return false; } - + return Predicates.and(extraPredicates).apply(new ObjectPlayer(card, playerId), game); } @@ -111,7 +110,7 @@ public class FilterCard extends FilterObject { } return filtered; } - + public boolean hasPredicates() { return predicates.size() > 0; }