From 7080f7e3fb853647c2cbc356c81ef68146eda3c5 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 5 Jan 2023 15:06:17 -0500 Subject: [PATCH] v2.0.0: added a desktop setting for playing music when focus is lost --- .../messages/windows/windows.properties | 1 + .../shatteredpixeldungeon/SPDSettings.java | 9 +++++++ .../windows/WndSettings.java | 24 ++++++++++++++++++- .../desktop/DesktopWindowListener.java | 13 ++++++++-- 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/core/src/main/assets/messages/windows/windows.properties b/core/src/main/assets/messages/windows/windows.properties index c1eef2237..81cda877c 100644 --- a/core/src/main/assets/messages/windows/windows.properties +++ b/core/src/main/assets/messages/windows/windows.properties @@ -273,6 +273,7 @@ windows.wndsettings$audiotab.music_mute=Mute Music windows.wndsettings$audiotab.sfx_vol=SFX Volume windows.wndsettings$audiotab.sfx_mute=Mute SFX windows.wndsettings$audiotab.ignore_silent=Ignore Silent Mode +windows.wndsettings$audiotab.music_bg=Play Music in Background windows.wndsettings$langstab.title=Language Settings windows.wndsettings$langstab.completed=This language has been fully translated and reviewed. windows.wndsettings$langstab.unreviewed=_This language has not yet been reviewed._ It may contain errors, but all text has been translated. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java index bb0fe0d3c..2f13c6c02 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java @@ -281,6 +281,7 @@ public class SPDSettings extends GameSettings { public static final String KEY_SOUND_FX = "soundfx"; public static final String KEY_SFX_VOL = "sfx_vol"; public static final String KEY_IGNORE_SILENT= "ignore_silent"; + public static final String KEY_MUSIC_BG = "music_bg"; public static void music( boolean value ) { Music.INSTANCE.enable( value ); @@ -326,6 +327,14 @@ public class SPDSettings extends GameSettings { public static boolean ignoreSilentMode(){ return getBoolean( KEY_IGNORE_SILENT, false); } + + public static void playMusicInBackground( boolean value ){ + put( KEY_MUSIC_BG, value); + } + + public static boolean playMusicInBackground(){ + return getBoolean( KEY_MUSIC_BG, true); + } //Languages and Font diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java index 6eb005ac0..df6c4ad57 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java @@ -894,6 +894,7 @@ public class WndSettings extends WndTabbed { CheckBox chkMuteSFX; ColorBlock sep3; CheckBox chkIgnoreSilent; + CheckBox chkMusicBG; @Override protected void createChildren() { @@ -956,7 +957,7 @@ public class WndSettings extends WndTabbed { chkMuteSFX.checked(!SPDSettings.soundFx()); add( chkMuteSFX ); - if (DeviceCompat.isiOS() && Messages.lang() == Languages.ENGLISH){ + if (DeviceCompat.isiOS()){ sep3 = new ColorBlock(1, 1, 0xFF000000); add(sep3); @@ -970,6 +971,21 @@ public class WndSettings extends WndTabbed { }; chkIgnoreSilent.checked(SPDSettings.ignoreSilentMode()); add(chkIgnoreSilent); + + } else if (DeviceCompat.isDesktop()){ + + sep3 = new ColorBlock(1, 1, 0xFF000000); + add(sep3); + + chkMusicBG = new CheckBox( Messages.get(this, "music_bg") ){ + @Override + protected void onClick() { + super.onClick(); + SPDSettings.playMusicInBackground(checked()); + } + }; + chkMusicBG.checked(SPDSettings.playMusicInBackground()); + add(chkMusicBG); } } @@ -1008,6 +1024,12 @@ public class WndSettings extends WndTabbed { chkIgnoreSilent.setRect(0, sep3.y + 1 + GAP, width, BTN_HEIGHT); height = chkIgnoreSilent.bottom(); + } else if (chkMusicBG != null){ + sep3.size(width, 1); + sep3.y = chkMuteSFX.bottom() + GAP; + + chkMusicBG.setRect(0, sep3.y + 1 + GAP, width, BTN_HEIGHT); + height = chkMusicBG.bottom(); } } diff --git a/desktop/src/main/java/com/shatteredpixel/shatteredpixeldungeon/desktop/DesktopWindowListener.java b/desktop/src/main/java/com/shatteredpixel/shatteredpixeldungeon/desktop/DesktopWindowListener.java index dc59368e5..098a893cf 100644 --- a/desktop/src/main/java/com/shatteredpixel/shatteredpixeldungeon/desktop/DesktopWindowListener.java +++ b/desktop/src/main/java/com/shatteredpixel/shatteredpixeldungeon/desktop/DesktopWindowListener.java @@ -25,6 +25,7 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3WindowListener; import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; +import com.watabou.noosa.audio.Music; public class DesktopWindowListener implements Lwjgl3WindowListener { @@ -41,8 +42,16 @@ public class DesktopWindowListener implements Lwjgl3WindowListener { @Override public void iconified ( boolean b ) { } - public void focusLost () { } - public void focusGained () { } + public void focusLost () { + if (!SPDSettings.playMusicInBackground()) { + Music.INSTANCE.pause(); + } + } + public void focusGained () { + if (!SPDSettings.playMusicInBackground()){ + Music.INSTANCE.resume(); + } + } public boolean closeRequested () { return true; } public void filesDropped ( String[] strings ) { } public void refreshRequested () { }