From 52522558919eef3b7cfca29867763ac4f5ace754 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Sun, 9 Jan 2011 22:41:52 +0300 Subject: [PATCH] [cl.viewer] Displaying not implemented cards (SOM only). There is issue with bigCard not always updated because constant UUID for not implemented cards ;(. --- Mage.Client/plugins/mage-card-plugin.jar | Bin 307425 -> 307559 bytes .../java/mage/client/cards/CardsStorage.java | 36 ++++++++++++----- .../collection/viewer/MageBook.java | 37 +++++++++--------- .../plugins/adapters/MageActionCallback.java | 5 +++ .../org/mage/plugins/card/CardPluginImpl.java | 9 ++--- 5 files changed, 55 insertions(+), 32 deletions(-) diff --git a/Mage.Client/plugins/mage-card-plugin.jar b/Mage.Client/plugins/mage-card-plugin.jar index 53cd6661aa4fa54e5b51c1c69fea38de63a284a7..35cf7874e26aa2ec6cfb6b615d2c67fecd17831e 100644 GIT binary patch delta 16859 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 Sr3Csbz_`d`ZqPY_@c#j1-Z{Mh delta 16633 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 Iu!0c&KX5pUO8@`> diff --git a/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java b/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java index 9d1d186dfbb..fc1128869ab 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java @@ -1,5 +1,6 @@ package mage.client.cards; +import mage.Constants; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardsImpl; @@ -53,9 +54,10 @@ public class CardsStorage { * @param start * @param end * @param set Cards set code. Can be null. + * @param onlyImplemented return only implemented cards * @return */ - public static List getAllCards(int start, int end, String set) { + public static List getAllCards(int start, int end, String set, boolean onlyImplemented) { List cards = new ArrayList(); List pool; if (set == null) { @@ -68,6 +70,14 @@ public class CardsStorage { } } } + if (!onlyImplemented) { + for (Card card : getNotImplementedCards()) { + if (card.getExpansionSetCode().equals(set)) { + pool.add(card); + } + } + Collections.sort(pool, new CardComparator()); + } for (int i = start; i < Math.min(end + 1, pool.size()); i++) { cards.add(pool.get(i)); } @@ -147,6 +157,10 @@ public class CardsStorage { return cards; } Card tmp = allCards.get(0); + Set names = new HashSet(); + for (Card card : allCards) { + names.add(card.getExpansionSetCode() + card.getName()); + } try { InputStream is = CardsStorage.class.getResourceAsStream(filename); Scanner scanner = new Scanner(is); @@ -156,19 +170,23 @@ public class CardsStorage { String[] s = line.split("\\|"); if (s.length == 6) { String name = s[1].trim(); - Integer cid = Integer.parseInt(s[5]); - Card card = tmp.copy(); - card.setName(name); - card.setExpansionSetCode(set); - card.setCardNumber(cid); - card.getRules().clear(); - card.getRules().add("Not implemented"); - cards.add(card); + if (!names.contains(set + name)) { + Integer cid = Integer.parseInt(s[5]); + Card card = tmp.copy(); + card.setName(name); + card.setExpansionSetCode(set); + card.setCardNumber(cid); + card.setRarity(Constants.Rarity.NA); // mark as not implemented + card.getCardType().clear(); + cards.add(card); + } } } } catch (Exception e) { e.printStackTrace(); } + names.clear(); + names = null; } return cards; } diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java index bea4a0babbc..65470486d6a 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java @@ -34,15 +34,12 @@ import mage.cards.MageCard; import mage.client.cards.BigCard; import mage.client.cards.CardsStorage; import mage.client.components.HoverButton; -import mage.client.components.ImageButton; import mage.client.components.arcane.GlowText; import mage.client.components.arcane.ManaSymbols; import mage.client.plugins.impl.Plugins; import mage.client.util.Command; -import mage.client.util.Config; import mage.client.util.ImageHelper; import mage.components.ImagePanel; -import mage.utils.ThreadUtils; import mage.view.CardView; import org.apache.log4j.Logger; @@ -87,8 +84,8 @@ public class MageBook extends JComponent { jPanelCenter.add(jLayeredPane, BorderLayout.CENTER); Image image = ImageHelper.loadImage(LEFT_PAGE_BUTTON_IMAGE_PATH); - pageLeft = new HoverButton(null, image, image, image, new Rectangle(64,64)); - pageLeft.setBounds(0,0,64,64); + pageLeft = new HoverButton(null, image, image, image, new Rectangle(64, 64)); + pageLeft.setBounds(0, 0, 64, 64); pageLeft.setVisible(false); pageLeft.setObserver(new Command() { public void execute() { @@ -102,8 +99,8 @@ public class MageBook extends JComponent { }); image = ImageHelper.loadImage(RIGHT_PAGE_BUTTON_IMAGE_PATH); - pageRight = new HoverButton(null, image, image, image, new Rectangle(64,64)); - pageRight.setBounds(WIDTH - 2*LEFT_RIGHT_PAGES_WIDTH - 64,0,64,64); + pageRight = new HoverButton(null, image, image, image, new Rectangle(64, 64)); + pageRight.setBounds(WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH - 64, 0, 64, 64); pageRight.setVisible(false); pageRight.setObserver(new Command() { public void execute() { @@ -149,7 +146,7 @@ public class MageBook extends JComponent { int count = 0; JPanel currentPanel = jPanelLeft; for (String set : CardsStorage.getSetCodes()) { - HoverButton tab = new HoverButton(null, image, image, image, new Rectangle(39,120)); + HoverButton tab = new HoverButton(null, image, image, image, new Rectangle(39, 120)); Image setImage = ManaSymbols.getSetSymbolImage(set); if (setImage != null) { tab.setOverlayImage(setImage); @@ -196,8 +193,8 @@ public class MageBook extends JComponent { } // calculate the x offset of the second (right) page - int second_page_x = (WIDTH - 2*LEFT_RIGHT_PAGES_WIDTH) - - (cardDimensions.frameWidth+ CardPosition.GAP_X)*3 + CardPosition.GAP_X - OFFSET_X; + int second_page_x = (WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH) - + (cardDimensions.frameWidth + CardPosition.GAP_X) * 3 + CardPosition.GAP_X - OFFSET_X; rectangle.setLocation(second_page_x, OFFSET_Y); for (int i = CARDS_PER_PAGE / 2; i < Math.min(CARDS_PER_PAGE, size); i++) { @@ -215,17 +212,20 @@ public class MageBook extends JComponent { cardImg.update(card); cardImg.setCardBounds(rectangle.x, rectangle.y, cardDimensions.frameWidth, cardDimensions.frameHeight); + boolean implemented = !card.getRarity().equals(mage.Constants.Rarity.NA); + GlowText label = new GlowText(); - label.setGlow(Color.green, 12, 0.0f); - label.setText("Implemented"); - label.setBounds(rectangle.x + 15, rectangle.y + cardDimensions.frameHeight + 7, 100, 30); + label.setGlow(implemented ? Color.green : NOT_IMPLEMENTED, 12, 0.0f); + label.setText(implemented ? "Implemented" : "Not implemented"); + int dx = implemented ? 15 : 5; + label.setBounds(rectangle.x + dx, rectangle.y + cardDimensions.frameHeight + 7, 110, 30); jLayeredPane.add(label); } private java.util.List getCards(int page, String set) { int start = page * CARDS_PER_PAGE; int end = (page + 1) * CARDS_PER_PAGE; - java.util.List cards = CardsStorage.getAllCards(start, end, currentSet); + java.util.List cards = CardsStorage.getAllCards(start, end, currentSet, false); if (cards.size() > CARDS_PER_PAGE) { pageRight.setVisible(true); } @@ -263,13 +263,13 @@ public class MageBook extends JComponent { public static Rectangle translatePosition(int index, Rectangle r) { Rectangle rect = new Rectangle(r); - rect.translate((cardDimensions.frameWidth+GAP_X) * dx[index], + rect.translate((cardDimensions.frameWidth + GAP_X) * dx[index], (cardDimensions.frameHeight + GAP_Y) * dy[index]); return rect; } - private static final int[] dx = {1, 1, -2, 1, 1, -2, 1, 1, 2, 1, -2, 1, 1, -2, 1, 1}; - private static final int[] dy = {0, 0, 1, 0, 0, 1, 0, 0, -2, 0, 1, 0, 0, 1, 0, 0}; + private static final int[] dx = {1, 1, -2, 1, 1, -2, 1, 1, 2, 1, -2, 1, 1, -2, 1, 1}; + private static final int[] dy = {0, 0, 1, 0, 0, 1, 0, 0, -2, 0, 1, 0, 0, 1, 0, 0}; public static final int GAP_X = 17; public static final int GAP_Y = 45; private static int cardWidth; @@ -285,7 +285,7 @@ public class MageBook extends JComponent { private HoverButton pageRight; private int currentPage = 0; - private String currentSet = "M10"; + private String currentSet = "SOM"; private static CardDimensions cardDimensions = new CardDimensions(1.2d); private static Font font = new Font("Arial", Font.PLAIN, 14); @@ -304,4 +304,5 @@ public class MageBook extends JComponent { static private final int OFFSET_X = 25; static private final int OFFSET_Y = 20; static private final int LEFT_RIGHT_PAGES_WIDTH = 40; + static private final Color NOT_IMPLEMENTED = new Color(220, 220, 220, 150); } diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java index 861c4129cc5..0ce06d5225e 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java @@ -10,6 +10,7 @@ import java.util.UUID; import javax.swing.*; +import mage.Constants; import mage.cards.MageCard; import mage.cards.MagePermanent; import mage.cards.action.ActionCallback; @@ -122,6 +123,10 @@ public class MageActionCallback implements ActionCallback { } private void showPopup(final TransferData data, final Component parentComponent, final Point parentPoint) { + // skip popup for not implemented cards (they have Rarity.NA) + if (data.card.getRarity().equals(Constants.Rarity.NA)) { + return; + } if (cardInfoPane == null) { PopupFactory factory = PopupFactory.getSharedInstance(); popup = factory.getPopup(data.component, data.popupText, (int) data.locationOnScreen.getX() + data.popupOffsetX, (int) data.locationOnScreen.getY() + data.popupOffsetY + 40); diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java index 283221690fe..8d3ab57b56a 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -80,9 +80,9 @@ public class CardPluginImpl implements CardPlugin { public MagePermanent getMagePermanent(PermanentView permanent, CardDimensions dimension, UUID gameId, ActionCallback callback, boolean canBeFoil) { boolean foil = canBeFoil && (new Random()).nextInt(5) == 0; CardPanel cardPanel = new CardPanel(permanent, gameId, true, callback, foil); - cardPanel.setShowCastingCost(true); cardPanel.setCardBounds(0, 0, dimension.frameWidth, dimension.frameHeight); - cardPanel.setShowCastingCost(true); + boolean implemented = !permanent.getRarity().equals(mage.Constants.Rarity.NA); + cardPanel.setShowCastingCost(implemented); return cardPanel; } @@ -90,10 +90,9 @@ public class CardPluginImpl implements CardPlugin { public MagePermanent getMageCard(CardView permanent, CardDimensions dimension, UUID gameId, ActionCallback callback, boolean canBeFoil) { boolean foil = canBeFoil && (new Random()).nextInt(5) == 0; CardPanel cardPanel = new CardPanel(permanent, gameId, true, callback, foil); - cardPanel.setShowCastingCost(true); cardPanel.setCardBounds(0, 0, dimension.frameWidth, dimension.frameHeight); - cardPanel.setShowCastingCost(true); - + boolean implemented = !permanent.getRarity().equals(mage.Constants.Rarity.NA); + cardPanel.setShowCastingCost(implemented); return cardPanel; }