Search in sources :

Example 1 with Booster

use of org.magic.api.beans.Booster in project MtgDesktopCompanion by nicho92.

the class SealedPanel method open.

protected void open() {
    deck = new MagicDeck();
    deck.setDateCreation(new Date());
    deck.setDescription("Sealed from " + model.getSealedPack());
    deck.setName("sealed from " + model.getSealedPack().toList().size() + " boosters");
    panelOpenedBooster.clear();
    panelDeck.removeAll();
    panelDeck.revalidate();
    panelDeck.repaint();
    ThreadManager.getInstance().execute(() -> {
        int column = 0;
        list = new ArrayList<>();
        lblLoading.setVisible(true);
        for (Entry<MagicEdition, Integer> ed : model.getSealedPack().getEntries()) {
            try {
                for (int i = 0; i < ed.getValue(); i++) {
                    Booster b = MTGControler.getInstance().getEnabledProviders().generateBooster(ed.getKey());
                    column++;
                    for (MagicCard mc : b.getCards()) {
                        list.add(mc);
                        DisplayableCard c = createCard(mc);
                        panelOpenedBooster.addComponent(c, column);
                    }
                }
            } catch (IOException e) {
                MTGLogger.printStackTrace(e);
                lblLoading.setVisible(false);
            }
        }
        panelOpenedBooster.setList(list);
        refreshStats();
        lblLoading.setVisible(false);
    });
}
Also used : MagicCard(org.magic.api.beans.MagicCard) Booster(org.magic.api.beans.Booster) DisplayableCard(org.magic.game.gui.components.DisplayableCard) MagicEdition(org.magic.api.beans.MagicEdition) IOException(java.io.IOException) Date(java.util.Date) MagicDeck(org.magic.api.beans.MagicDeck)

Example 2 with Booster

use of org.magic.api.beans.Booster in project MtgDesktopCompanion by nicho92.

the class MtgjsonProvider method generateBooster.

public Booster generateBooster(MagicEdition me) {
    logger.debug("opening booster for " + me);
    List<MagicCard> common = new ArrayList<>();
    List<MagicCard> uncommon = new ArrayList<>();
    List<MagicCard> rare = new ArrayList<>();
    List<MagicCard> lands = new ArrayList<>();
    Booster b = new Booster();
    try {
        if (cachedCardEds.get(me.getId()) == null)
            cachedCardEds.put(me.getId(), searchCardByCriteria("set", me.getId(), null, true));
        for (MagicCard mc : cachedCardEds.get(me.getId())) {
            if (mc.getEditions().get(0).getRarity().equalsIgnoreCase("common"))
                common.add(mc);
            if (mc.getEditions().get(0).getRarity().equalsIgnoreCase("uncommon"))
                uncommon.add(mc);
            if (mc.getEditions().get(0).getRarity().toLowerCase().contains("rare"))
                rare.add(mc);
            if (mc.getSupertypes().toString().toLowerCase().contains("basic") && mc.getTypes().toString().toLowerCase().contains("land"))
                lands.add(mc);
        }
        Collections.shuffle(lands);
        Collections.shuffle(common);
        Collections.shuffle(uncommon);
        Collections.shuffle(rare);
    } catch (Exception e) {
        logger.error("Error opening booster", e);
    }
    List<MagicCard> resList = new ArrayList<>();
    resList.addAll(common.subList(0, 11));
    resList.addAll(uncommon.subList(0, 3));
    resList.add(rare.get(0));
    if (!lands.isEmpty())
        resList.addAll(lands.subList(0, 1));
    b.setCards(resList);
    b.setEdition(me);
    return b;
}
Also used : MagicCard(org.magic.api.beans.MagicCard) Booster(org.magic.api.beans.Booster) ArrayList(java.util.ArrayList) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) PathNotFoundException(com.jayway.jsonpath.PathNotFoundException)

Example 3 with Booster

use of org.magic.api.beans.Booster in project MtgDesktopCompanion by nicho92.

the class BoosterBoxDashlet method initGUI.

@Override
public void initGUI() {
    JSpinner boxSizeSpinner;
    JXTable table;
    BoostersTableModel boostersModel;
    DefaultListModel<MagicCard> cardsModel;
    JTextPane txtDetailBox;
    JPanel panneauHaut = new JPanel();
    getContentPane().add(panneauHaut, BorderLayout.NORTH);
    List<MagicEdition> eds = new ArrayList<>();
    try {
        eds.addAll(MTGControler.getInstance().getEnabledProviders().loadEditions());
        Collections.sort(eds);
        eds.add(0, null);
    } catch (Exception e) {
        MTGLogger.printStackTrace(e);
    }
    JComboBox<MagicEdition> cboEditions = new JComboBox<>(new DefaultComboBoxModel<MagicEdition>(eds.toArray(new MagicEdition[eds.size()])));
    cboEditions.setRenderer(new MagicEditionListRenderer());
    panneauHaut.add(cboEditions);
    JLabel lblBoxSize = new JLabel("Box size: ");
    panneauHaut.add(lblBoxSize);
    boxSizeSpinner = new JSpinner();
    boxSizeSpinner.setModel(new SpinnerNumberModel(36, 0, null, 1));
    panneauHaut.add(boxSizeSpinner);
    JScrollPane scrollPane = new JScrollPane();
    getContentPane().add(scrollPane, BorderLayout.CENTER);
    boostersModel = new BoostersTableModel();
    cardsModel = new DefaultListModel<>();
    table = new JXTable(boostersModel);
    scrollPane.setViewportView(table);
    JPanel panneauBas = new JPanel();
    getContentPane().add(panneauBas, BorderLayout.SOUTH);
    JButton btnCalculate = new JButton("Open");
    panneauBas.add(btnCalculate);
    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    getContentPane().add(tabbedPane, BorderLayout.EAST);
    txtDetailBox = new JTextPane();
    txtDetailBox.setEditable(false);
    tabbedPane.addTab("Box", null, txtDetailBox, null);
    JScrollPane scrollPane1 = new JScrollPane();
    tabbedPane.addTab("Booster", null, scrollPane1, null);
    JList<MagicCard> list1 = new JList<>();
    list1.setModel(cardsModel);
    list1.setCellRenderer(new MagicCardListRenderer());
    scrollPane1.setViewportView(list1);
    btnCalculate.addActionListener(e -> ThreadManager.getInstance().execute(() -> {
        try {
            List<CardShake> prices = MTGControler.getInstance().getEnabledDashBoard().getShakeForEdition((MagicEdition) cboEditions.getSelectedItem());
            boostersModel.clear();
            double total = 0;
            Map<String, Double> priceRarity = new HashMap<>();
            for (int i = 0; i < (int) boxSizeSpinner.getValue(); i++) {
                Booster booster = MTGControler.getInstance().getEnabledProviders().generateBooster((MagicEdition) cboEditions.getSelectedItem());
                Collections.reverse(booster.getCards());
                booster.setBoosterNumber(String.valueOf(i + 1));
                double price = 0;
                for (MagicCard mc : booster.getCards()) {
                    for (CardShake cs : prices) if (cs.getName().equalsIgnoreCase(mc.getName())) {
                        price += cs.getPrice();
                        booster.setPrice(price);
                        cs.setCard(mc);
                        String rarity = mc.getEditions().get(0).getRarity();
                        if (priceRarity.get(rarity) != null)
                            priceRarity.put(rarity, priceRarity.get(rarity) + cs.getPrice());
                        else
                            priceRarity.put(rarity, cs.getPrice());
                    }
                }
                boostersModel.addLine(booster);
                total = total + booster.getPrice();
                StringBuilder temp = new StringBuilder();
                temp.append("TOTAL: ").append(doubleFormat.format(total)).append("\n");
                for (Entry<String, Double> s : priceRarity.entrySet()) temp.append(s.getKey()).append(": ").append(doubleFormat.format(priceRarity.get(s.getKey()))).append("\n");
                txtDetailBox.setText(temp.toString());
            }
        } catch (Exception e1) {
            logger.error(e1);
        }
    }, "Open Box"));
    table.getSelectionModel().addListSelectionListener(event -> {
        if (!event.getValueIsAdjusting()) {
            int viewRow = table.getSelectedRow();
            if (viewRow > -1) {
                int modelRow = table.convertRowIndexToModel(viewRow);
                List<MagicCard> list = ((Booster) table.getModel().getValueAt(modelRow, 0)).getCards();
                cardsModel.clear();
                for (MagicCard mc : list) cardsModel.addElement(mc);
            }
        }
    });
    if (getProperties().size() > 0) {
        Rectangle r = new Rectangle((int) Double.parseDouble(getProperty("x")), (int) Double.parseDouble(getProperty("y")), (int) Double.parseDouble(getProperty("w")), (int) Double.parseDouble(getProperty("h")));
        setBounds(r);
    }
    setVisible(true);
}
Also used : JPanel(javax.swing.JPanel) JTabbedPane(javax.swing.JTabbedPane) MagicEdition(org.magic.api.beans.MagicEdition) ArrayList(java.util.ArrayList) JButton(javax.swing.JButton) Rectangle(java.awt.Rectangle) MagicCardListRenderer(org.magic.gui.renderer.MagicCardListRenderer) SpinnerNumberModel(javax.swing.SpinnerNumberModel) JTextPane(javax.swing.JTextPane) Entry(java.util.Map.Entry) ArrayList(java.util.ArrayList) JList(javax.swing.JList) List(java.util.List) BoostersTableModel(org.magic.gui.models.BoostersTableModel) CardShake(org.magic.api.beans.CardShake) JScrollPane(javax.swing.JScrollPane) JXTable(org.jdesktop.swingx.JXTable) JComboBox(javax.swing.JComboBox) Booster(org.magic.api.beans.Booster) JLabel(javax.swing.JLabel) MagicCard(org.magic.api.beans.MagicCard) JSpinner(javax.swing.JSpinner) HashMap(java.util.HashMap) Map(java.util.Map) MagicEditionListRenderer(org.magic.gui.renderer.MagicEditionListRenderer) JList(javax.swing.JList)

Example 4 with Booster

use of org.magic.api.beans.Booster in project MtgDesktopCompanion by nicho92.

the class ScryFallProvider method generateBooster.

@Override
public Booster generateBooster(MagicEdition me) throws IOException {
    List<MagicCard> ret = new ArrayList<>();
    List<MagicCard> common = new ArrayList<>();
    List<MagicCard> uncommon = new ArrayList<>();
    List<MagicCard> rare = new ArrayList<>();
    if (cachedCardEds.get(me.getId()) == null)
        cachedCardEds.put(me.getId(), searchCardByCriteria("set", me.getId(), null, true));
    for (MagicCard mc : cachedCardEds.get(me.getId())) {
        if (mc.getEditions().get(0).getRarity().equalsIgnoreCase("common"))
            common.add(mc);
        if (mc.getEditions().get(0).getRarity().equalsIgnoreCase("uncommon"))
            uncommon.add(mc);
        if (mc.getEditions().get(0).getRarity().toLowerCase().contains("rare"))
            rare.add(mc);
    }
    Collections.shuffle(common);
    Collections.shuffle(uncommon);
    Collections.shuffle(rare);
    ret.addAll(common.subList(0, 11));
    ret.addAll(uncommon.subList(0, 3));
    ret.add(rare.get(0));
    Booster b = new Booster();
    b.setEdition(me);
    b.setCards(ret);
    return b;
}
Also used : MagicCard(org.magic.api.beans.MagicCard) Booster(org.magic.api.beans.Booster) ArrayList(java.util.ArrayList)

Aggregations

Booster (org.magic.api.beans.Booster)4 MagicCard (org.magic.api.beans.MagicCard)4 ArrayList (java.util.ArrayList)3 IOException (java.io.IOException)2 MagicEdition (org.magic.api.beans.MagicEdition)2 PathNotFoundException (com.jayway.jsonpath.PathNotFoundException)1 Rectangle (java.awt.Rectangle)1 MalformedURLException (java.net.MalformedURLException)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Entry (java.util.Map.Entry)1 JButton (javax.swing.JButton)1 JComboBox (javax.swing.JComboBox)1 JLabel (javax.swing.JLabel)1 JList (javax.swing.JList)1 JPanel (javax.swing.JPanel)1 JScrollPane (javax.swing.JScrollPane)1 JSpinner (javax.swing.JSpinner)1