Done Issue 16: Games played counter plugin.

This commit is contained in:
magenoxx 2010-11-14 17:01:12 +00:00
parent a2561515a3
commit b143a5a44d
14 changed files with 342 additions and 32 deletions

View file

@ -34,6 +34,7 @@
package mage.client;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@ -47,6 +48,7 @@ import java.util.prefs.Preferences;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JToolBar.Separator;
@ -130,9 +132,9 @@ public class MageFrame extends javax.swing.JFrame {
else
disableButtons();
//TODO:
//TODO: move to plugin impl
if (Plugins.getInstance().isCardPluginLoaded()) {
Separator separator = new javax.swing.JToolBar.Separator();
Separator separator = new javax.swing.JToolBar.Separator();
mageToolbar.add(separator);
JButton btnDownload = new JButton("Images");
@ -147,6 +149,15 @@ public class MageFrame extends javax.swing.JFrame {
});
mageToolbar.add(btnDownload);
}
if (Plugins.getInstance().isCounterPluginLoaded()) {
int i = Plugins.getInstance().getGamesPlayed();
JLabel label = new JLabel(" Games played: " + String.valueOf(i));
desktopPane.add(label);
label.setVisible(true);
label.setForeground(Color.white);
label.setBounds(0, 0, 100, 30);
}
}
private void btnImagesActionPerformed(java.awt.event.ActionEvent evt) {

View file

@ -35,6 +35,7 @@
package mage.client.game;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
@ -44,6 +45,7 @@ import java.util.UUID;
import java.util.logging.Logger;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
@ -84,15 +86,11 @@ public class GamePanel extends javax.swing.JPanel {
//FIXME: remove from here
try {
/*BufferedImage background = ImageIO.read(this.getClass().getResourceAsStream("/green.jpg"));
ImagePanel bgPanel = new ImagePanel(background, ImagePanel.TILED);*/
// Override layout (I can't edit generated code)
this.setLayout(new BorderLayout());
final JLayeredPane j = new JLayeredPane();
j.add(ArrowBuilder.getArrowsPanel(), JLayeredPane.MODAL_LAYER);
j.setSize(1024,768);
//j.setBorder(BorderFactory.createLineBorder(Color.green));
this.add(j);
j.add(jSplitPane1, JLayeredPane.DEFAULT_LAYER);

View file

@ -19,6 +19,9 @@ public interface MagePlugins {
void updateGamePanel(Map<String, JComponent> ui);
MagePermanent getMagePermanent(PermanentView card, BigCard bigCard, CardDimensions dimension, UUID gameId);
boolean isCardPluginLoaded();
boolean isCounterPluginLoaded();
void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents);
void downloadImage(Set<Card> allCards);
int getGamesPlayed();
int addGamesPlayed();
}

View file

@ -2,7 +2,6 @@ package mage.client.plugins.impl;
import java.io.File;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
@ -13,7 +12,6 @@ import javax.swing.JComponent;
import mage.cards.Card;
import mage.cards.CardDimensions;
import mage.cards.ExpansionSet;
import mage.cards.MagePermanent;
import mage.cards.action.impl.EmptyCallback;
import mage.client.cards.BigCard;
@ -22,9 +20,10 @@ import mage.client.plugins.MagePlugins;
import mage.client.util.Config;
import mage.client.util.DefaultActionCallback;
import mage.constants.Constants;
import mage.interfaces.PluginException;
import mage.interfaces.plugin.CardPlugin;
import mage.interfaces.plugin.CounterPlugin;
import mage.interfaces.plugin.ThemePlugin;
import mage.sets.Sets;
import mage.util.Logging;
import mage.view.PermanentView;
import net.xeoh.plugins.base.PluginManager;
@ -38,6 +37,7 @@ public class Plugins implements MagePlugins {
private static PluginManager pm;
private final static Logger logger = Logging.getLogger(Plugins.class.getName());
private CardPlugin cardPlugin = null;
private CounterPlugin counterPlugin = null;
protected static DefaultActionCallback defaultCallback = DefaultActionCallback.getInstance();
private static final EmptyCallback emptyCallback = new EmptyCallback();
@ -51,6 +51,7 @@ public class Plugins implements MagePlugins {
pm = PluginManagerFactory.createPluginManager();
pm.addPluginsFrom(new File(Constants.PLUGINS_DIRECTORY).toURI());
this.cardPlugin = pm.getPlugin(CardPlugin.class);
this.counterPlugin = pm.getPlugin(CounterPlugin.class);
logger.log(Level.INFO, "Done.");
}
@ -91,4 +92,39 @@ public class Plugins implements MagePlugins {
public void downloadImage(Set<Card> allCards) {
if (this.cardPlugin != null) this.cardPlugin.downloadImages(allCards);
}
@Override
public int getGamesPlayed() {
if (this.counterPlugin != null) {
synchronized(Plugins.class) {
try {
return this.counterPlugin.getGamePlayed();
} catch (PluginException e) {
logger.log(Level.SEVERE, e.getMessage());
throw new RuntimeException(e);
}
}
}
return -1;
}
@Override
public int addGamesPlayed() {
if (this.counterPlugin != null) {
synchronized(Plugins.class) {
try {
this.counterPlugin.addGamePlayed();
} catch (PluginException e) {
logger.log(Level.SEVERE, e.getMessage());
throw new RuntimeException(e);
}
}
}
return 0;
}
@Override
public boolean isCounterPluginLoaded() {
return this.counterPlugin != null;
}
}

View file

@ -35,6 +35,7 @@ import java.util.logging.Logger;
import javax.swing.JOptionPane;
import mage.client.MageFrame;
import mage.client.chat.ChatPanel;
import mage.client.plugins.impl.Plugins;
import mage.interfaces.callback.CallbackClient;
import mage.interfaces.callback.ClientCallback;
import mage.util.Logging;
@ -169,6 +170,10 @@ public class Client implements CallbackClient {
catch (Exception ex) {
handleException(ex);
}
if (Plugins.getInstance().isCounterPluginLoaded()) {
Plugins.getInstance().addGamesPlayed();
}
}
protected void watchGame(UUID gameId) {