mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
redirect dependency between Card and IPaperCard
This commit is contained in:
@@ -53,6 +53,7 @@ import forge.card.MagicColor;
|
|||||||
import forge.card.ability.AbilityFactory;
|
import forge.card.ability.AbilityFactory;
|
||||||
import forge.card.ability.AbilityUtils;
|
import forge.card.ability.AbilityUtils;
|
||||||
import forge.card.ability.ApiType;
|
import forge.card.ability.ApiType;
|
||||||
|
import forge.card.cardfactory.CardFactory;
|
||||||
import forge.card.cardfactory.CardFactoryUtil;
|
import forge.card.cardfactory.CardFactoryUtil;
|
||||||
import forge.card.cost.Cost;
|
import forge.card.cost.Cost;
|
||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
@@ -84,6 +85,8 @@ import forge.game.event.GameEventCardTapped;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.zone.Zone;
|
import forge.game.zone.Zone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.item.IPaperCard;
|
||||||
|
import forge.item.PaperCard;
|
||||||
import forge.util.Expressions;
|
import forge.util.Expressions;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
@@ -8692,5 +8695,24 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
|
|
||||||
return abilities;
|
return abilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Card fromPaperCard(IPaperCard pc, Player owner) {
|
||||||
|
return CardFactory.getCard(pc, owner);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Map<PaperCard, Card> cp2card = new HashMap<PaperCard, Card>();
|
||||||
|
public static Card getCardForUi(IPaperCard pc) {
|
||||||
|
if( pc instanceof PaperCard ) {
|
||||||
|
Card res = cp2card.get(pc);
|
||||||
|
if (null == res) {
|
||||||
|
res = fromPaperCard(pc, null);
|
||||||
|
cp2card.put((PaperCard) pc, res);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
return fromPaperCard(pc, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // end Card class
|
} // end Card class
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
|||||||
Collections.sort(cards);
|
Collections.sort(cards);
|
||||||
|
|
||||||
PaperCard cp = GuiChoose.one(message, cards);
|
PaperCard cp = GuiChoose.one(message, cards);
|
||||||
Card instanceForPlayer = cp.toForgeCard(p); // the Card instance for test needs a game to be tested
|
Card instanceForPlayer = Card.fromPaperCard(cp, p); // the Card instance for test needs a game to be tested
|
||||||
if (instanceForPlayer.isValid(valid, host.getController(), host)) {
|
if (instanceForPlayer.isValid(valid, host.getController(), host)) {
|
||||||
host.setNamedCard(cp.getName());
|
host.setNamedCard(cp.getName());
|
||||||
p.setNamedCard(cp.getName());
|
p.setNamedCard(cp.getName());
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
|||||||
int ncopied = AbilityUtils.calculateAmount(hostCard, num, sa);
|
int ncopied = AbilityUtils.calculateAmount(hostCard, num, sa);
|
||||||
while(ncopied > 0) {
|
while(ncopied > 0) {
|
||||||
final PaperCard cp = Aggregates.random(copysource);
|
final PaperCard cp = Aggregates.random(copysource);
|
||||||
Card possibleCard = cp.getMatchingForgeCard();
|
Card possibleCard = Card.fromPaperCard(cp, null);
|
||||||
// Need to temporarily set the Owner so the Game is set
|
// Need to temporarily set the Owner so the Game is set
|
||||||
possibleCard.setOwner(sa.getActivatingPlayer());
|
possibleCard.setOwner(sa.getActivatingPlayer());
|
||||||
|
|
||||||
@@ -115,8 +115,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
tgtCards.clear();
|
tgtCards.clear();
|
||||||
if (!cards.isEmpty()) {
|
if (!cards.isEmpty()) {
|
||||||
Card c = cards.get(0).getMatchingForgeCard();
|
tgtCards.add(Card.fromPaperCard(cards.get(0), null));
|
||||||
tgtCards.add(c);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ public class PlayEffect extends SpellAbilityEffect {
|
|||||||
int ncopied = AbilityUtils.calculateAmount(source, num, sa);
|
int ncopied = AbilityUtils.calculateAmount(source, num, sa);
|
||||||
while(ncopied > 0) {
|
while(ncopied > 0) {
|
||||||
final PaperCard cp = Aggregates.random(copysource);
|
final PaperCard cp = Aggregates.random(copysource);
|
||||||
Card possibleCard = cp.getMatchingForgeCard();
|
Card possibleCard = Card.fromPaperCard(cp, null);
|
||||||
// Need to temporarily set the Owner so the Game is set
|
// Need to temporarily set the Owner so the Game is set
|
||||||
possibleCard.setOwner(sa.getActivatingPlayer());
|
possibleCard.setOwner(sa.getActivatingPlayer());
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ public class PlayEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
Card original = tgtCard;
|
Card original = tgtCard;
|
||||||
if (sa.hasParam("CopyCard")) {
|
if (sa.hasParam("CopyCard")) {
|
||||||
tgtCard = CardDb.getCard(tgtCard).toForgeCard(sa.getActivatingPlayer());
|
tgtCard = Card.fromPaperCard(CardDb.getCard(tgtCard), sa.getActivatingPlayer());
|
||||||
|
|
||||||
tgtCard.setToken(true);
|
tgtCard.setToken(true);
|
||||||
tgtCard.setCopiedSpell(true);
|
tgtCard.setCopiedSpell(true);
|
||||||
|
|||||||
@@ -56,8 +56,7 @@ public class GameNew {
|
|||||||
PlayerZone bf = player.getZone(ZoneType.Battlefield);
|
PlayerZone bf = player.getZone(ZoneType.Battlefield);
|
||||||
if (cards != null) {
|
if (cards != null) {
|
||||||
for (final IPaperCard cp : cards) {
|
for (final IPaperCard cp : cards) {
|
||||||
Card c = cp.toForgeCard(player);
|
Card c = Card.fromPaperCard(cp, player);
|
||||||
c.setOwner(player);
|
|
||||||
bf.add(c);
|
bf.add(c);
|
||||||
c.setSickness(true);
|
c.setSickness(true);
|
||||||
c.setStartsGameInPlay(true);
|
c.setStartsGameInPlay(true);
|
||||||
@@ -69,13 +68,14 @@ public class GameNew {
|
|||||||
PlayerZone com = player.getZone(ZoneType.Command);
|
PlayerZone com = player.getZone(ZoneType.Command);
|
||||||
|
|
||||||
// Mainly for avatar, but might find something else here
|
// Mainly for avatar, but might find something else here
|
||||||
for (final IPaperCard c : psc.getCardsInCommand(player)) {
|
for (final IPaperCard cp : psc.getCardsInCommand(player)) {
|
||||||
com.add(c.toForgeCard(player));
|
com.add(Card.fromPaperCard(cp, player));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Schemes
|
// Schemes
|
||||||
List<Card> sd = new ArrayList<Card>();
|
List<Card> sd = new ArrayList<Card>();
|
||||||
for(IPaperCard cp : psc.getSchemes(player)) sd.add(cp.toForgeCard(player));
|
for(IPaperCard cp : psc.getSchemes(player))
|
||||||
|
sd.add(Card.fromPaperCard(cp, player));
|
||||||
if ( !sd.isEmpty()) {
|
if ( !sd.isEmpty()) {
|
||||||
for(Card c : sd) {
|
for(Card c : sd) {
|
||||||
player.getZone(ZoneType.SchemeDeck).add(c);
|
player.getZone(ZoneType.SchemeDeck).add(c);
|
||||||
@@ -86,7 +86,8 @@ public class GameNew {
|
|||||||
|
|
||||||
// Planes
|
// Planes
|
||||||
List<Card> l = new ArrayList<Card>();
|
List<Card> l = new ArrayList<Card>();
|
||||||
for(IPaperCard cp : psc.getPlanes(player)) l.add(cp.toForgeCard(player));
|
for(IPaperCard cp : psc.getPlanes(player))
|
||||||
|
l.add(Card.fromPaperCard(cp, player));
|
||||||
if ( !l.isEmpty() ) {
|
if ( !l.isEmpty() ) {
|
||||||
for(Card c : l) {
|
for(Card c : l) {
|
||||||
player.getZone(ZoneType.PlanarDeck).add(c);
|
player.getZone(ZoneType.PlanarDeck).add(c);
|
||||||
@@ -97,7 +98,7 @@ public class GameNew {
|
|||||||
// Commander
|
// Commander
|
||||||
if(psc.getCommander() != null)
|
if(psc.getCommander() != null)
|
||||||
{
|
{
|
||||||
Card cmd = psc.getCommander().toForgeCard(player);
|
Card cmd = Card.fromPaperCard(psc.getCommander(), player);
|
||||||
cmd.setCommander(true);
|
cmd.setCommander(true);
|
||||||
com.add(cmd);
|
com.add(cmd);
|
||||||
player.setCommander(cmd);
|
player.setCommander(cmd);
|
||||||
@@ -159,7 +160,7 @@ public class GameNew {
|
|||||||
cpi = CardDb.instance().getFoiled(cpi);
|
cpi = CardDb.instance().getFoiled(cpi);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Card card = cpi.toForgeCard(player);
|
final Card card = Card.fromPaperCard(cpi, player);
|
||||||
|
|
||||||
// Assign card-specific foiling or random foiling on approximately 1:20 cards if enabled
|
// Assign card-specific foiling or random foiling on approximately 1:20 cards if enabled
|
||||||
if (cp.isFoil() || (canRandomFoil && MyRandom.percentTrue(5))) {
|
if (cp.isFoil() || (canRandomFoil && MyRandom.percentTrue(5))) {
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ public final class BoosterDraft implements IBoosterDraft {
|
|||||||
final List<Card> forAi = new ArrayList<Card>();
|
final List<Card> forAi = new ArrayList<Card>();
|
||||||
final List<PaperCard> booster = this.pack.get((iHumansBooster + i) % this.pack.size());
|
final List<PaperCard> booster = this.pack.get((iHumansBooster + i) % this.pack.size());
|
||||||
for (final IPaperCard cr : booster) {
|
for (final IPaperCard cr : booster) {
|
||||||
forAi.add(cr.getMatchingForgeCard());
|
forAi.add(Card.getCardForUi(cr)); // ai is supposed to analyze it only
|
||||||
}
|
}
|
||||||
|
|
||||||
final PaperCard aiPick = this.draftAI.choose(booster, iPlayer++);
|
final PaperCard aiPick = this.draftAI.choose(booster, iPlayer++);
|
||||||
|
|||||||
@@ -46,4 +46,5 @@ public interface CardContainer {
|
|||||||
* @return a {@link forge.Card} object.
|
* @return a {@link forge.Card} object.
|
||||||
*/
|
*/
|
||||||
Card getCard();
|
Card getCard();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import javax.swing.JScrollPane;
|
|||||||
import javax.swing.event.ListSelectionEvent;
|
import javax.swing.event.ListSelectionEvent;
|
||||||
import javax.swing.event.ListSelectionListener;
|
import javax.swing.event.ListSelectionListener;
|
||||||
|
|
||||||
|
import forge.Card;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -201,7 +202,7 @@ public class CardListViewer {
|
|||||||
// (String) jList.getSelectedValue();
|
// (String) jList.getSelectedValue();
|
||||||
if ((row >= 0) && (row < CardListViewer.this.list.size())) {
|
if ((row >= 0) && (row < CardListViewer.this.list.size())) {
|
||||||
final PaperCard cp = CardListViewer.this.list.get(row);
|
final PaperCard cp = CardListViewer.this.list.get(row);
|
||||||
CardListViewer.this.detail.setCard(cp.getMatchingForgeCard());
|
CardListViewer.this.detail.setCard(Card.getCardForUi(cp));
|
||||||
CardListViewer.this.picture.setCard(cp);
|
CardListViewer.this.picture.setCard(cp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ public class DualListBox<T> extends FPanel {
|
|||||||
} else if (obj instanceof SpellAbility) {
|
} else if (obj instanceof SpellAbility) {
|
||||||
card = ((SpellAbility) obj).getSourceCard();
|
card = ((SpellAbility) obj).getSourceCard();
|
||||||
} else if (obj instanceof PaperCard) {
|
} else if (obj instanceof PaperCard) {
|
||||||
card = ((IPaperCard) obj).getMatchingForgeCard();
|
card = Card.getCardForUi((IPaperCard) obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiUtils.clearPanelSelections();
|
GuiUtils.clearPanelSelections();
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ public final class GuiDisplayUtil {
|
|||||||
for (final String element : data) {
|
for (final String element : data) {
|
||||||
final String[] cardinfo = element.trim().split("\\|");
|
final String[] cardinfo = element.trim().split("\\|");
|
||||||
|
|
||||||
final Card c = CardDb.instance().getCard(cardinfo[0]).toForgeCard(player);
|
final Card c = Card.fromPaperCard(CardDb.instance().getCard(cardinfo[0]), player);
|
||||||
|
|
||||||
boolean hasSetCurSet = false;
|
boolean hasSetCurSet = false;
|
||||||
for (final String info : cardinfo) {
|
for (final String info : cardinfo) {
|
||||||
@@ -383,8 +383,7 @@ public final class GuiDisplayUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getGame().getAction().invoke(new Runnable() { @Override public void run() {
|
getGame().getAction().invoke(new Runnable() { @Override public void run() {
|
||||||
Card forgeCard = c.toForgeCard(p);
|
getGame().getAction().moveToHand(Card.fromPaperCard(c, p));
|
||||||
getGame().getAction().moveToHand(forgeCard);
|
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -407,10 +406,9 @@ public final class GuiDisplayUtil {
|
|||||||
final Game game = getGame();
|
final Game game = getGame();
|
||||||
game.getAction().invoke(new Runnable() {
|
game.getAction().invoke(new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
final Card forgeCard = c.toForgeCard(p);
|
final Card forgeCard = Card.fromPaperCard(c, p);
|
||||||
|
|
||||||
if (c.getRules().getType().isLand()) {
|
if (c.getRules().getType().isLand()) {
|
||||||
forgeCard.setOwner(p);
|
|
||||||
game.getAction().moveToPlay(forgeCard);
|
game.getAction().moveToPlay(forgeCard);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -480,7 +478,7 @@ public final class GuiDisplayUtil {
|
|||||||
// use standard forge's list selection dialog
|
// use standard forge's list selection dialog
|
||||||
final IPaperCard c = GuiChoose.oneOrNone("Name the card", allPlanars);
|
final IPaperCard c = GuiChoose.oneOrNone("Name the card", allPlanars);
|
||||||
if (c == null) { return; }
|
if (c == null) { return; }
|
||||||
final Card forgeCard = c.toForgeCard(p);
|
final Card forgeCard = Card.fromPaperCard(c, p);
|
||||||
|
|
||||||
forgeCard.setOwner(p);
|
forgeCard.setOwner(p);
|
||||||
game.getAction().changeZone(null, p.getZone(ZoneType.PlanarDeck), forgeCard, 0);
|
game.getAction().changeZone(null, p.getZone(ZoneType.PlanarDeck), forgeCard, 0);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import javax.swing.event.ListSelectionEvent;
|
|||||||
import javax.swing.event.ListSelectionListener;
|
import javax.swing.event.ListSelectionListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
import forge.Card;
|
||||||
import forge.card.CardDb;
|
import forge.card.CardDb;
|
||||||
import forge.gui.CardDetailPanel;
|
import forge.gui.CardDetailPanel;
|
||||||
import forge.gui.deckchooser.FDeckChooser;
|
import forge.gui.deckchooser.FDeckChooser;
|
||||||
@@ -132,7 +133,7 @@ public enum VSubmenuVanguard implements IVSubmenu<CSubmenuVanguard> {
|
|||||||
Object obj = avatarLists.get(index).getSelectedValue();
|
Object obj = avatarLists.get(index).getSelectedValue();
|
||||||
|
|
||||||
if (obj instanceof PaperCard) {
|
if (obj instanceof PaperCard) {
|
||||||
cdpAvatarDetails.get(index).setCard(((IPaperCard) obj).getMatchingForgeCard());
|
cdpAvatarDetails.get(index).setCard(Card.getCardForUi((IPaperCard) obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import javax.swing.event.ListSelectionEvent;
|
|||||||
import javax.swing.event.ListSelectionListener;
|
import javax.swing.event.ListSelectionListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
import forge.Card;
|
||||||
import forge.gui.CardDetailPanel;
|
import forge.gui.CardDetailPanel;
|
||||||
import forge.gui.CardPicturePanel;
|
import forge.gui.CardPicturePanel;
|
||||||
import forge.gui.toolbox.FList;
|
import forge.gui.toolbox.FList;
|
||||||
@@ -103,7 +104,7 @@ public class QuestWinLoseCardViewer extends FPanel {
|
|||||||
// (String) jList.getSelectedValue();
|
// (String) jList.getSelectedValue();
|
||||||
if ((row >= 0) && (row < QuestWinLoseCardViewer.this.list.size())) {
|
if ((row >= 0) && (row < QuestWinLoseCardViewer.this.list.size())) {
|
||||||
final PaperCard cp = QuestWinLoseCardViewer.this.list.get(row);
|
final PaperCard cp = QuestWinLoseCardViewer.this.list.get(row);
|
||||||
QuestWinLoseCardViewer.this.detail.setCard(cp.getMatchingForgeCard());
|
QuestWinLoseCardViewer.this.detail.setCard(Card.getCardForUi(cp));
|
||||||
QuestWinLoseCardViewer.this.picture.setCard(cp);
|
QuestWinLoseCardViewer.this.picture.setCard(cp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public enum CDetail implements ICDoc {
|
|||||||
|
|
||||||
public void showCard(InventoryItem item) {
|
public void showCard(InventoryItem item) {
|
||||||
if (item instanceof IPaperCard) {
|
if (item instanceof IPaperCard) {
|
||||||
showCard(((IPaperCard)item).getMatchingForgeCard());
|
showCard(Card.getCardForUi((IPaperCard)item));
|
||||||
} else if (item instanceof InventoryItemFromSet) {
|
} else if (item instanceof InventoryItemFromSet) {
|
||||||
view.getLblFlipcard().setVisible(false);
|
view.getLblFlipcard().setVisible(false);
|
||||||
view.getPnlDetail().setItem((InventoryItemFromSet)item);
|
view.getPnlDetail().setItem((InventoryItemFromSet)item);
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public enum CPicture implements ICDoc {
|
|||||||
public void showImage(final InventoryItem item) {
|
public void showImage(final InventoryItem item) {
|
||||||
if (item instanceof IPaperCard) {
|
if (item instanceof IPaperCard) {
|
||||||
IPaperCard paperCard = ((IPaperCard)item);
|
IPaperCard paperCard = ((IPaperCard)item);
|
||||||
Card c = paperCard.getMatchingForgeCard();
|
Card c = Card.getCardForUi(paperCard);
|
||||||
if (paperCard.isFoil() && c.getFoil() == 0) {
|
if (paperCard.isFoil() && c.getFoil() == 0) {
|
||||||
c.setRandomFoil();
|
c.setRandomFoil();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import javax.swing.JScrollPane;
|
|||||||
import javax.swing.event.ListSelectionEvent;
|
import javax.swing.event.ListSelectionEvent;
|
||||||
import javax.swing.event.ListSelectionListener;
|
import javax.swing.event.ListSelectionListener;
|
||||||
|
|
||||||
|
import forge.Card;
|
||||||
import forge.gui.CardDetailPanel;
|
import forge.gui.CardDetailPanel;
|
||||||
import forge.gui.CardPicturePanel;
|
import forge.gui.CardPicturePanel;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
@@ -92,7 +93,7 @@ public class CardViewer extends JPanel {
|
|||||||
// (String) jList.getSelectedValue();
|
// (String) jList.getSelectedValue();
|
||||||
if ((row >= 0) && (row < CardViewer.this.list.size())) {
|
if ((row >= 0) && (row < CardViewer.this.list.size())) {
|
||||||
final PaperCard cp = CardViewer.this.list.get(row);
|
final PaperCard cp = CardViewer.this.list.get(row);
|
||||||
CardViewer.this.detail.setCard(cp.getMatchingForgeCard());
|
CardViewer.this.detail.setCard(Card.getCardForUi(cp));
|
||||||
CardViewer.this.picture.setCard(cp);
|
CardViewer.this.picture.setCard(cp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,9 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import forge.Card;
|
//import forge.Card;
|
||||||
import forge.card.CardRarity;
|
import forge.card.CardRarity;
|
||||||
import forge.card.CardRules;
|
import forge.card.CardRules;
|
||||||
import forge.game.player.Player;
|
|
||||||
import forge.util.PredicateString;
|
import forge.util.PredicateString;
|
||||||
|
|
||||||
public interface IPaperCard extends InventoryItem {
|
public interface IPaperCard extends InventoryItem {
|
||||||
@@ -161,7 +160,4 @@ public interface IPaperCard extends InventoryItem {
|
|||||||
|
|
||||||
public abstract String getItemType();
|
public abstract String getItemType();
|
||||||
|
|
||||||
public abstract Card getMatchingForgeCard();
|
|
||||||
public abstract Card toForgeCard(Player owner);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -17,16 +17,10 @@
|
|||||||
*/
|
*/
|
||||||
package forge.item;
|
package forge.item;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
|
||||||
import forge.Card;
|
|
||||||
import forge.card.CardRarity;
|
import forge.card.CardRarity;
|
||||||
import forge.card.CardRules;
|
import forge.card.CardRules;
|
||||||
import forge.card.cardfactory.CardFactory;
|
|
||||||
import forge.game.player.Player;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -184,34 +178,7 @@ public final class PaperCard implements Comparable<IPaperCard>, InventoryItemFro
|
|||||||
// return String.format("%s|%s", name, cardSet);
|
// return String.format("%s|%s", name, cardSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* To forge card.
|
|
||||||
*
|
|
||||||
* @return the card
|
|
||||||
*/
|
|
||||||
private static final Map<PaperCard, Card> cp2card = new HashMap<PaperCard, Card>();
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see forge.item.ICardPrinted#getMatchingForgeCard()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Card getMatchingForgeCard() {
|
|
||||||
Card res = cp2card.get(this);
|
|
||||||
if (null == res) {
|
|
||||||
res = toForgeCard(null);
|
|
||||||
cp2card.put(this, res);
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see forge.item.ICardPrinted#toForgeCard(forge.game.player.Player)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Card toForgeCard(Player owner) {
|
|
||||||
final Card c = CardFactory.getCard(this, owner);
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -2,12 +2,10 @@ package forge.item;
|
|||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import forge.Card;
|
|
||||||
import forge.card.CardEdition;
|
import forge.card.CardEdition;
|
||||||
import forge.card.CardRarity;
|
import forge.card.CardRarity;
|
||||||
import forge.card.CardRules;
|
import forge.card.CardRules;
|
||||||
import forge.card.cardfactory.CardFactory;
|
|
||||||
import forge.game.player.Player;
|
|
||||||
|
|
||||||
public class PaperToken implements InventoryItemFromSet, IPaperCard {
|
public class PaperToken implements InventoryItemFromSet, IPaperCard {
|
||||||
private String name;
|
private String name;
|
||||||
@@ -61,13 +59,6 @@ public class PaperToken implements InventoryItemFromSet, IPaperCard {
|
|||||||
public String getImageFilename() { return imageFileName; }
|
public String getImageFilename() { return imageFileName; }
|
||||||
|
|
||||||
@Override public String getItemType() { return "Token"; }
|
@Override public String getItemType() { return "Token"; }
|
||||||
@Override public Card getMatchingForgeCard() { return toForgeCard(null); } // hope this won't be queried too frequently, so no cache
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Card toForgeCard(Player owner) {
|
|
||||||
final Card c = CardFactory.getCard(this, owner);
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public boolean isToken() { return true; }
|
@Override public boolean isToken() { return true; }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user