diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index 8188e150752..a9c5adbce94 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -123,6 +123,21 @@ 7.6.3 + + com.googlecode.soundlibs + mp3spi + 1.9.5-1 + + + javazoom + jlayer + 1.0.1 + + + org.mobicents.external.tritonus + tritonus_share + 0.3.6 + diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 7ae3188d80d..fa39240d95c 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -66,6 +66,7 @@ import mage.client.tournament.TournamentPanel; import mage.client.util.EDTExceptionHandler; import mage.client.util.SettingsManager; import mage.client.util.gui.ArrowBuilder; +import mage.client.util.MusicPlayer; import mage.components.ImagePanel; import mage.interfaces.Action; import mage.interfaces.MageClient; @@ -540,10 +541,14 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { ArrowBuilder.getBuilder().hideAllPanels(); if (frame instanceof GamePane) { ArrowBuilder.getBuilder().showPanel(((GamePane) frame).getGameId()); + MusicPlayer.playBGM(); + }else{ + MusicPlayer.stopBGM(); } } public static void deactivate(MagePane frame) { + MusicPlayer.stopBGM(); frame.setVisible(false); MagePane topmost = getTopMost(frame); if (activeFrame != frame) { diff --git a/Mage.Client/src/main/java/mage/client/constants/Constants.java b/Mage.Client/src/main/java/mage/client/constants/Constants.java index 007cb7cebab..4f5a48a0b62 100644 --- a/Mage.Client/src/main/java/mage/client/constants/Constants.java +++ b/Mage.Client/src/main/java/mage/client/constants/Constants.java @@ -80,7 +80,8 @@ public final class Constants { public static final String RESOURCE_PATH_SET = IO.imageBaseDir + "sets" + File.separator; public static final String RESOURCE_PATH_SET_SMALL = RESOURCE_PATH_SET + File.separator + "small" + File.separator; public static final String BASE_SOUND_PATH = "plugins" + File.separator + "sounds" + File.separator; - + public static final String BASE_MUSICS_PATH = "plugins" + File.separator + "sounds" + File.separator + "musics" + File.separator ; + public interface IO { String imageBaseDir = "plugins" + File.separator + "images" + File.separator; String IMAGE_PROPERTIES_FILE = "image.url.properties"; diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form index c5c0791b453..8b31b07b896 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form @@ -1,4 +1,4 @@ - +
@@ -7,6 +7,7 @@ + @@ -25,7 +26,7 @@ - + @@ -81,7 +82,7 @@ - + @@ -443,7 +444,7 @@ - + @@ -562,7 +563,10 @@ - + + + + @@ -572,7 +576,9 @@ - + + + @@ -586,6 +592,14 @@ + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java index c1924aaa908..a42facf23c1 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -73,6 +73,7 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String KEY_CARD_IMAGES_SAVE_TO_ZIP = "cardImagesSaveToZip"; public static final String KEY_SOUNDS_ON = "soundsOn"; + public static final String KEY_MUSICS_ON = "MusicsOn"; public static final String KEY_BIG_CARD_TOGGLED = "bigCardToggled"; @@ -201,6 +202,7 @@ public class PreferencesDialog extends javax.swing.JDialog { saveToZipFiles = new javax.swing.JCheckBox(); jPanel22 = new javax.swing.JPanel(); jEnableSounds = new javax.swing.JCheckBox(); + jEnableMusics = new javax.swing.JCheckBox(); jPanel6 = new javax.swing.JPanel(); lblProxyType = new javax.swing.JLabel(); cbProxyType = new javax.swing.JComboBox(); @@ -322,7 +324,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(84, Short.MAX_VALUE)) + .addContainerGap(92, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Main", jPanel1); @@ -537,7 +539,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(92, Short.MAX_VALUE)) + .addContainerGap(96, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Images", jPanel4); @@ -549,13 +551,22 @@ public class PreferencesDialog extends javax.swing.JDialog { } }); + jEnableMusics.setText("enable BGM"); + jEnableMusics.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jEnableMusicsActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel22Layout = new javax.swing.GroupLayout(jPanel22); jPanel22.setLayout(jPanel22Layout); jPanel22Layout.setHorizontalGroup( jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel22Layout.createSequentialGroup() .addGap(19, 19, 19) - .addComponent(jEnableSounds) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jEnableSounds) + .addComponent(jEnableMusics)) .addContainerGap(325, Short.MAX_VALUE)) ); jPanel22Layout.setVerticalGroup( @@ -563,7 +574,9 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGroup(jPanel22Layout.createSequentialGroup() .addGap(24, 24, 24) .addComponent(jEnableSounds) - .addContainerGap(217, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jEnableMusics) + .addContainerGap(194, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Sounds", jPanel22); @@ -605,7 +618,7 @@ public class PreferencesDialog extends javax.swing.JDialog { } }); - jLabel11.setFont(new java.awt.Font("Tahoma", 2, 10)); + jLabel11.setFont(new java.awt.Font("Tahoma", 2, 10)); // NOI18N jLabel11.setText("Note: password won't be encrypted!"); javax.swing.GroupLayout pnlProxyLayout = new javax.swing.GroupLayout(pnlProxy); @@ -747,7 +760,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGap(0, 100, Short.MAX_VALUE) ); - jLabel12.setFont(new java.awt.Font("Tahoma", 1, 11)); + jLabel12.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel12.setText("Choose your avatar:"); jPanel12.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true)); @@ -789,7 +802,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGap(0, 100, Short.MAX_VALUE) ); - jLabel13.setFont(new java.awt.Font("Tahoma", 1, 11)); + jLabel13.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel13.setText("New avatars:"); jPanel16.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true)); @@ -975,7 +988,7 @@ public class PreferencesDialog extends javax.swing.JDialog { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTabbedPane1) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(316, Short.MAX_VALUE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(saveButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(exitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -1028,7 +1041,7 @@ public class PreferencesDialog extends javax.swing.JDialog { // sounds save(prefs, dialog.jEnableSounds, KEY_SOUNDS_ON, "true", "false", UPDATE_CACHE_POLICY); - + save(prefs, dialog.jEnableMusics, KEY_MUSICS_ON, "true", "false", UPDATE_CACHE_POLICY); // connection save(prefs, dialog.cbProxyType, KEY_PROXY_TYPE); save(prefs, dialog.txtProxyServer, KEY_PROXY_ADDRESS); @@ -1124,6 +1137,10 @@ public class PreferencesDialog extends javax.swing.JDialog { // TODO add your handling code here: }//GEN-LAST:event_jEnableSoundsActionPerformed + private void jEnableMusicsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jEnableMusicsActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jEnableMusicsActionPerformed + private void showProxySettings() { if (cbProxyType.getSelectedItem() == Connection.ProxyType.SOCKS) { this.pnlProxy.setVisible(true); @@ -1231,6 +1248,12 @@ public class PreferencesDialog extends javax.swing.JDialog { } else { dialog.jEnableSounds.setSelected(false); } + prop = prefs.get(KEY_MUSICS_ON, "true"); + if (prop.equals("true")) { + dialog.jEnableMusics.setSelected(true); + } else { + dialog.jEnableMusics.setSelected(false); + } } private static void loadProxySettings(Preferences prefs) { @@ -1449,6 +1472,7 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JCheckBox displayBigCardsInHand; private javax.swing.JButton exitButton; private javax.swing.JTextField imageFolderPath; + private javax.swing.JCheckBox jEnableMusics; private javax.swing.JCheckBox jEnableSounds; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; diff --git a/Mage.Client/src/main/java/mage/client/util/MusicPlayer.java b/Mage.Client/src/main/java/mage/client/util/MusicPlayer.java index 0891db61d3f..6ee743113a6 100644 --- a/Mage.Client/src/main/java/mage/client/util/MusicPlayer.java +++ b/Mage.Client/src/main/java/mage/client/util/MusicPlayer.java @@ -2,6 +2,7 @@ package mage.client.util; import java.io.File; import java.awt.List; import javax.sound.sampled.*; +import mage.client.constants.Constants; /** @@ -16,15 +17,13 @@ public class MusicPlayer { List filelist = new List(); static MusicPlayer player = null; - public static String BASE_BGM_PATH = "G:\\mp3\\东方\\TH13_-_东方神灵庙BGM\\"; - public MusicPlayer(){ open(); } //open file and add list private void open(){ - filepath = BASE_BGM_PATH; + filepath = Constants.BASE_MUSICS_PATH; filelist.removeAll(); File filedir = new File(filepath); File[] fileread = filedir.listFiles(); @@ -122,7 +121,7 @@ public class MusicPlayer { } } - + public void run(){ try { Thread.sleep(100);