1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-02 11:25:59 -09:00

Added an option to display non land cards in one pile. Fixed Issue 166.

This commit is contained in:
magenoxx 2011-07-17 21:02:09 +04:00
parent b78629c842
commit f65634796b
7 changed files with 67 additions and 19 deletions
Mage.Client
plugins
pom.xml
src/main/java/mage/client
Mage.Common/src/mage/interfaces/plugin
Mage.Plugins/Mage.Card.Plugin
pom.xml
src/main/java/org/mage/plugins/card

View file

@ -88,7 +88,7 @@
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>Mage-Card-Plugin</artifactId> <artifactId>Mage-Card-Plugin</artifactId>
<version>0.5</version> <version>0.6</version>
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<dependency> <dependency>

View file

@ -55,6 +55,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
public static final String KEY_HAND_USE_BIG_CARDS = "handUseBigCards"; public static final String KEY_HAND_USE_BIG_CARDS = "handUseBigCards";
public static final String KEY_HAND_SHOW_TOOLTIPS = "handShowTooltips"; public static final String KEY_HAND_SHOW_TOOLTIPS = "handShowTooltips";
public static final String KEY_PERMANENTS_IN_ONE_PILE = "nonLandPermanentsInOnePile";
public static final String KEY_CARD_IMAGES_USE_DEFAULT = "cardImagesUseDefault"; public static final String KEY_CARD_IMAGES_USE_DEFAULT = "cardImagesUseDefault";
public static final String KEY_CARD_IMAGES_PATH = "cardImagesPath"; public static final String KEY_CARD_IMAGES_PATH = "cardImagesPath";
@ -86,7 +87,9 @@ public class PreferencesDialog extends javax.swing.JDialog {
jTabbedPane1 = new javax.swing.JTabbedPane(); jTabbedPane1 = new javax.swing.JTabbedPane();
jPanel1 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel(); jPanel3 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
showToolTipsInHand = new javax.swing.JCheckBox(); showToolTipsInHand = new javax.swing.JCheckBox();
nonLandPermanentsInOnePile = new javax.swing.JCheckBox();
displayBigCardsInHand = new javax.swing.JCheckBox(); displayBigCardsInHand = new javax.swing.JCheckBox();
jPanel2 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel();
@ -141,6 +144,11 @@ public class PreferencesDialog extends javax.swing.JDialog {
} }
}); });
jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Battlefield"));
nonLandPermanentsInOnePile.setSelected(false);
nonLandPermanentsInOnePile.setText("Put non-land permanents in one pile.");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout); jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup( jPanel3Layout.setHorizontalGroup(
@ -165,19 +173,37 @@ public class PreferencesDialog extends javax.swing.JDialog {
jPanel1.setLayout(jPanel1Layout); jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup( jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap() .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );
.addContainerGap())
);
jPanel1Layout.setVerticalGroup( jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(173, Short.MAX_VALUE)) .addContainerGap(173, Short.MAX_VALUE))
); );
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(nonLandPermanentsInOnePile)
)
.addContainerGap(170, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(nonLandPermanentsInOnePile)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jTabbedPane1.addTab("Main", jPanel1); jTabbedPane1.addTab("Main", jPanel1);
jLabel1.setText("Choose phases MAGE will stop on:"); jLabel1.setText("Choose phases MAGE will stop on:");
@ -430,6 +456,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
save(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS); save(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS);
save(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.showToolTipsInHand, KEY_HAND_SHOW_TOOLTIPS, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.showToolTipsInHand, KEY_HAND_SHOW_TOOLTIPS, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.nonLandPermanentsInOnePile, KEY_PERMANENTS_IN_ONE_PILE, "true", "false", UPDATE_CACHE_POLICY);
saveImagesPath(prefs); saveImagesPath(prefs);
try { try {
prefs.flush(); prefs.flush();
@ -507,6 +534,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
load(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS); load(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS);
load(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true"); load(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true");
load(prefs, dialog.showToolTipsInHand, KEY_HAND_SHOW_TOOLTIPS, "true"); load(prefs, dialog.showToolTipsInHand, KEY_HAND_SHOW_TOOLTIPS, "true");
load(prefs, dialog.nonLandPermanentsInOnePile, KEY_PERMANENTS_IN_ONE_PILE, "true");
loadImagesPath(prefs); loadImagesPath(prefs);
dialog.setLocation(300, 200); dialog.setLocation(300, 200);
dialog.reset(); dialog.reset();
@ -619,10 +647,12 @@ public class PreferencesDialog extends javax.swing.JDialog {
private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JButton saveButton; private javax.swing.JButton saveButton;
private javax.swing.JCheckBox showToolTipsInHand; private javax.swing.JCheckBox showToolTipsInHand;
private javax.swing.JCheckBox useDefaultImageFolder; private javax.swing.JCheckBox useDefaultImageFolder;
private javax.swing.JCheckBox nonLandPermanentsInOnePile;
// End of variables declaration//GEN-END:variables // End of variables declaration//GEN-END:variables
private static final PreferencesDialog dialog = new PreferencesDialog(new javax.swing.JFrame(), true); private static final PreferencesDialog dialog = new PreferencesDialog(new javax.swing.JFrame(), true);

View file

@ -11,6 +11,7 @@ import mage.client.dialog.PreferencesDialog;
import mage.client.plugins.MagePlugins; import mage.client.plugins.MagePlugins;
import mage.client.plugins.adapters.MageActionCallback; import mage.client.plugins.adapters.MageActionCallback;
import mage.client.util.Config; import mage.client.util.Config;
import mage.client.util.SettingsManager;
import mage.constants.Constants; import mage.constants.Constants;
import mage.interfaces.PluginException; import mage.interfaces.PluginException;
import mage.interfaces.plugin.CardPlugin; import mage.interfaces.plugin.CardPlugin;
@ -26,10 +27,7 @@ import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.util.Collection; import java.util.*;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public class Plugins implements MagePlugins { public class Plugins implements MagePlugins {
@ -42,6 +40,7 @@ public class Plugins implements MagePlugins {
private CardPlugin cardPlugin = null; private CardPlugin cardPlugin = null;
private CounterPlugin counterPlugin = null; private CounterPlugin counterPlugin = null;
private static final MageActionCallback mageActionCallback = new MageActionCallback(); private static final MageActionCallback mageActionCallback = new MageActionCallback();
private Map<String, String> sortingOptions = new HashMap<String, String>();
public static MagePlugins getInstance() { public static MagePlugins getInstance() {
return fINSTANCE; return fINSTANCE;
@ -104,7 +103,8 @@ public class Plugins implements MagePlugins {
@Override @Override
public void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents) { public void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents) {
if (this.cardPlugin != null) this.cardPlugin.sortPermanents(ui, permanents); sortingOptions.put("nonLandPermanentsInOnePile", PreferencesDialog.getCachedValue("nonLandPermanentsInOnePile", "false"));
if (this.cardPlugin != null) this.cardPlugin.sortPermanents(ui, permanents, sortingOptions);
} }
@Override @Override

View file

@ -19,7 +19,8 @@ import net.xeoh.plugins.base.Plugin;
/** /**
* Interface for card plugins * Interface for card plugins
* *
* @version 0.6 17,07.2011 added options to #sortPermanents
* @version 0.3 21.11.2010 #getMageCard * @version 0.3 21.11.2010 #getMageCard
* @version 0.2 07.11.2010 #downloadImages * @version 0.2 07.11.2010 #downloadImages
* @version 0.1 31.10.2010 #getMagePermanent, #sortPermanents * @version 0.1 31.10.2010 #getMagePermanent, #sortPermanents
@ -28,7 +29,7 @@ import net.xeoh.plugins.base.Plugin;
public interface CardPlugin extends Plugin { public interface CardPlugin extends Plugin {
MagePermanent getMagePermanent(PermanentView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage); MagePermanent getMagePermanent(PermanentView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage);
MagePermanent getMageCard(CardView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage); MagePermanent getMageCard(CardView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage);
void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> cards); void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> cards, Map<String, String> options);
/** /**
* Download images. * Download images.

View file

@ -76,7 +76,7 @@
</build> </build>
<properties> <properties>
<plugin-version>0.5</plugin-version> <plugin-version>0.6</plugin-version>
<jspf-version>0.9.1</jspf-version> <jspf-version>0.9.1</jspf-version>
</properties> </properties>
</project> </project>

View file

@ -38,6 +38,7 @@ import java.util.List;
* *
* @author nantuko * @author nantuko
* @version 0.1 01.11.2010 Mage permanents. Sorting card layout. * @version 0.1 01.11.2010 Mage permanents. Sorting card layout.
* @version 0.6 17,07.2011 #sortPermanents got option to display non-land permanents in one pile
*/ */
@PluginImplementation @PluginImplementation
@Author(name = "nantuko") @Author(name = "nantuko")
@ -75,7 +76,7 @@ public class CardPluginImpl implements CardPlugin {
@Override @Override
public String toString() { public String toString() {
return "[Card plugin, version 0.5]"; return "[Card plugin, version 0.6]";
} }
@Override @Override
@ -99,8 +100,12 @@ public class CardPluginImpl implements CardPlugin {
} }
@Override @Override
public void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents) { public void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents, Map<String, String> options) {
if (ui == null) //TODO: add caching
//requires to find out is position have been changed that includes:
//adding/removing permanents, type change
if (ui == null)
throw new RuntimeException("Error: no components"); throw new RuntimeException("Error: no components");
JComponent component = ui.get("jScrollPane"); JComponent component = ui.get("jScrollPane");
JComponent component2 = ui.get("battlefieldPanel"); JComponent component2 = ui.get("battlefieldPanel");
@ -157,6 +162,16 @@ public class CardPluginImpl implements CardPlugin {
Row allCreatures = new Row(permanents, RowType.creature); Row allCreatures = new Row(permanents, RowType.creature);
Row allOthers = new Row(permanents, RowType.other); Row allOthers = new Row(permanents, RowType.other);
boolean othersOnTheRight = true;
if (options != null && options.containsKey("nonLandPermanentsInOnePile")) {
if (options.get("nonLandPermanentsInOnePile").equals("true")) {
System.out.println("in one pile");
othersOnTheRight = false;
allCreatures.addAll(allOthers);
allOthers.clear();
}
}
cardWidth = cardWidthMax; cardWidth = cardWidthMax;
Rectangle rect = jScrollPane.getVisibleRect(); Rectangle rect = jScrollPane.getVisibleRect();
playAreaWidth = rect.width; playAreaWidth = rect.width;
@ -198,6 +213,7 @@ public class CardPluginImpl implements CardPlugin {
if (creatures.isEmpty() && lands.isEmpty() && others.isEmpty()) if (creatures.isEmpty() && lands.isEmpty() && others.isEmpty())
break; break;
//cardWidth = (int)(cardWidth / 1.2); //cardWidth = (int)(cardWidth / 1.2);
//FIXME: -1 is too slow. why not binary search?
cardWidth--; cardWidth--;
} }
@ -227,7 +243,7 @@ public class CardPluginImpl implements CardPlugin {
for (int stackIndex = 0, stackCount = row.size(); stackIndex < stackCount; stackIndex++) { for (int stackIndex = 0, stackCount = row.size(); stackIndex < stackCount; stackIndex++) {
Stack stack = row.get(stackIndex); Stack stack = row.get(stackIndex);
// Align others to the right. // Align others to the right.
if (RowType.other.isType(stack.get(0))) { if (othersOnTheRight && RowType.other.isType(stack.get(0))) {
x = playAreaWidth - GUTTER_X + extraCardSpacingX; x = playAreaWidth - GUTTER_X + extraCardSpacingX;
for (int i = stackIndex, n = row.size(); i < n; i++) for (int i = stackIndex, n = row.size(); i < n; i++)
x -= row.get(i).getWidth(); x -= row.get(i).getWidth();
@ -340,8 +356,9 @@ public class CardPluginImpl implements CardPlugin {
private void addAll(Collection<MagePermanent> permanents, RowType type) { private void addAll(Collection<MagePermanent> permanents, RowType type) {
for (MagePermanent panel : permanents) { for (MagePermanent panel : permanents) {
if (!type.isType(panel)) if (!type.isType(panel)) {
continue; continue;
}
Stack stack = new Stack(); Stack stack = new Stack();
stack.add(panel); stack.add(panel);
add(stack); add(stack);