diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index fa6eac9abc1..7e7b9a4b575 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -652,6 +652,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { menu.show(component, 0, component.getHeight()); } + public static boolean isGameActive() { + return activeFrame instanceof GamePane; + } + public static void setActive(MagePane frame) { // Always hide not hidden popup window or enlarged card view if a frame is set to active try { 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 a0e0fed6df0..f5deb4e6926 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -10,6 +10,7 @@ import mage.client.util.CardLanguage; import mage.client.util.ClientDefaultSettings; import mage.client.util.GUISizeHelper; import mage.client.util.ImageHelper; +import mage.client.util.audio.MusicPlayer; import mage.client.util.gui.BufferedImageBuilder; import static mage.constants.Constants.*; import mage.players.net.UserData; @@ -101,6 +102,7 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String KEY_SOUNDS_SKIP_BUTTONS_ON = "soundsSkipButtonsOn"; public static final String KEY_SOUNDS_OTHER_ON = "soundsOtherOn"; public static final String KEY_SOUNDS_MATCH_MUSIC_ON = "soundsMatchMusicOn"; + public static final String SOUNDS_MATCH_MUSIC_ENABLE_BY_DEFAULT = "true"; public static final String KEY_SOUNDS_MATCH_MUSIC_PATH = "soundsMatchMusicPath"; public static final String KEY_BIG_CARD_TOGGLED = "bigCardToggled"; @@ -2852,6 +2854,13 @@ public class PreferencesDialog extends javax.swing.JDialog { save(prefs, dialog.cbEnableOtherSounds, KEY_SOUNDS_OTHER_ON, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.cbEnableBattlefieldBGM, KEY_SOUNDS_MATCH_MUSIC_ON, "true", "false", UPDATE_CACHE_POLICY); saveSoundPath(prefs); + if (prefs.get(KEY_SOUNDS_MATCH_MUSIC_ON, SOUNDS_MATCH_MUSIC_ENABLE_BY_DEFAULT).equals("true")) { + if (MageFrame.isGameActive()) { + MusicPlayer.playBGM(); + } + } else { + MusicPlayer.stopBGM(); + } // connection save(prefs, dialog.cbProxyType, KEY_PROXY_TYPE); @@ -3354,7 +3363,7 @@ public class PreferencesDialog extends javax.swing.JDialog { dialog.cbEnableOtherSounds.setSelected(prefs.get(KEY_SOUNDS_OTHER_ON, "true").equals("true")); // Match music - dialog.cbEnableBattlefieldBGM.setSelected(prefs.get(KEY_SOUNDS_MATCH_MUSIC_ON, "true").equals("true")); + dialog.cbEnableBattlefieldBGM.setSelected(prefs.get(KEY_SOUNDS_MATCH_MUSIC_ON, SOUNDS_MATCH_MUSIC_ENABLE_BY_DEFAULT).equals("true")); dialog.txtBattlefieldIBGMPath.setEnabled(dialog.cbEnableBattlefieldBGM.isSelected()); dialog.btnBattlefieldBGMBrowse.setEnabled(dialog.cbEnableBattlefieldBGM.isSelected()); // load and save the path always, so you can reactivate music without selecting path again diff --git a/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java b/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java index 83b73777dc6..0fc2074764d 100644 --- a/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java +++ b/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java @@ -24,9 +24,12 @@ public class MusicPlayer { //open file and add list private boolean open() { + if (!isMusicEnabled()) { + return false; + } String path = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SOUNDS_MATCH_MUSIC_PATH, "true"); filepath = path + File.separator; - if (path == null) { + if (path == null || path.equals("")) { filepath = Constants.BASE_MUSICS_PATH; } filelist.removeAll(); @@ -51,6 +54,11 @@ public class MusicPlayer { return true; } + private static boolean isMusicEnabled() { + String enabled = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SOUNDS_MATCH_MUSIC_ON, PreferencesDialog.SOUNDS_MATCH_MUSIC_ENABLE_BY_DEFAULT); + return "true".equals(enabled); + } + public static void playBGM() { stopBGM(); if (player == null) { @@ -62,8 +70,7 @@ public class MusicPlayer { } public void play() { - String soundsOn = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SOUNDS_MATCH_MUSIC_ON, "true"); - if (soundsOn.equals("true")) { + if (isMusicEnabled()) { player.breaked = false; player.breaked_out = false; player.stopped = false;