[Jrisk-cvs] SF.net SVN: domination-code:[2513] Domination
Brought to you by:
yuranet
|
From: <yu...@us...> - 2024-03-14 00:54:30
|
Revision: 2513
http://sourceforge.net/p/domination/code/2513
Author: yuranet
Date: 2024-03-14 00:54:27 +0000 (Thu, 14 Mar 2024)
Log Message:
-----------
pause music when game loses focus
Modified Paths:
--------------
Domination/sharedUI/src_mapstore_lobby/net/yura/domination/audio/GameSound.java
Domination/swingUI/src/net/yura/domination/guishared/RiskUIUtil.java
Domination/swingUI/src/net/yura/domination/ui/flashgui/MainMenu.java
Domination/swingUI/src/net/yura/domination/ui/swinggui/SwingGUIFrame.java
Modified: Domination/sharedUI/src_mapstore_lobby/net/yura/domination/audio/GameSound.java
===================================================================
--- Domination/sharedUI/src_mapstore_lobby/net/yura/domination/audio/GameSound.java 2024-03-09 22:25:57 UTC (rev 2512)
+++ Domination/sharedUI/src_mapstore_lobby/net/yura/domination/audio/GameSound.java 2024-03-14 00:54:27 UTC (rev 2513)
@@ -70,6 +70,7 @@
private boolean soundEnabled = true;
private boolean musicEnabled = true;
+
private AudioSystem audioSystem;
private Map<String, String> currentTheme; // ID -> filename
private String currentMusicId;
@@ -84,7 +85,7 @@
try {
if (currentMusicId != null) {
- stopSound(currentMusicId);
+ stopPlayingLoopedSound();
}
final String folder = "sound";
@@ -116,7 +117,7 @@
}
finally {
if (currentMusicId != null) {
- playMusic(currentMusicId);
+ playCurrentLoopedSound();
}
}
}
@@ -129,10 +130,10 @@
musicEnabled = on;
if (currentMusicId != null) {
if (musicOld && !musicEnabled) {
- stopSound(currentMusicId);
+ stopPlayingLoopedSound();
}
else if (!musicOld && musicEnabled) {
- playMusic(currentMusicId);
+ playCurrentLoopedSound();
}
}
}
@@ -152,10 +153,22 @@
public void playMusic(String audioId) {
currentMusicId = audioId;
- LOGGER.info("Playing music with id: " + audioId);
-
+ LOGGER.info("Playing music with id: " + currentMusicId);
+
+ playCurrentLoopedSound();
+ }
+
+ public void stopMusic() {
+ if (musicEnabled) {
+ LOGGER.info("Stopping music with id: " + currentMusicId);
+ stopPlayingLoopedSound();
+ }
+ currentMusicId = null;
+ }
+
+ private void playCurrentLoopedSound() {
if (musicEnabled && audioSystem != null && currentTheme != null) {
- String audioFile = currentTheme.get(audioId);
+ String audioFile = currentTheme.get(currentMusicId);
if (audioFile != null) {
audioSystem.start(audioFile);
}
@@ -162,18 +175,9 @@
}
}
- public void stopMusic(String audioId) {
- currentMusicId = null;
-
- if (musicEnabled) {
- LOGGER.info("Stopping music with id: " + audioId);
- stopSound(audioId);
- }
- }
-
- private void stopSound(String audioId) {
+ private void stopPlayingLoopedSound() {
if (audioSystem != null && currentTheme != null) {
- String audioFile = currentTheme.get(audioId);
+ String audioFile = currentTheme.get(currentMusicId);
if (audioFile != null) {
audioSystem.stop(audioFile);
}
@@ -192,7 +196,7 @@
private void switchToMusic(String id) {
if (!id.equals(currentMusicId)) {
if (currentMusicId != null) {
- stopMusic(currentMusicId);
+ stopMusic();
}
playMusic(id);
}
Modified: Domination/swingUI/src/net/yura/domination/guishared/RiskUIUtil.java
===================================================================
--- Domination/swingUI/src/net/yura/domination/guishared/RiskUIUtil.java 2024-03-09 22:25:57 UTC (rev 2512)
+++ Domination/swingUI/src/net/yura/domination/guishared/RiskUIUtil.java 2024-03-14 00:54:27 UTC (rev 2513)
@@ -1,6 +1,7 @@
package net.yura.domination.guishared;
import java.applet.Applet;
+import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
@@ -14,6 +15,8 @@
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.Window;
+import java.awt.event.AWTEventListener;
+import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.io.BufferedReader;
@@ -63,6 +66,7 @@
import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicTabbedPaneUI;
import net.yura.domination.audio.GameSound;
+import net.yura.domination.audio.SimpleAudio;
import net.yura.domination.engine.ColorUtil;
import net.yura.domination.engine.JavaCompatUtil;
import net.yura.domination.engine.Risk;
@@ -81,6 +85,7 @@
* @author Yura Mamyrin
*/
public class RiskUIUtil {
+
// TODO missing:
//PicturePanel.getImage(
// setupMapsDir(null) should be called b4 the Risk() object is created
@@ -1393,6 +1398,39 @@
}
}
+
+ public static void initAudio(Risk risk) {
+ try {
+ GameSound.INSTANCE.setAudioSystem(risk, new SimpleAudio());
+ GameSound.INSTANCE.load("medieval");
+ }
+ catch (Throwable th) {
+ RiskUtil.printStackTrace("SimpleAudio not loaded", th);
+ }
+
+ Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
+ boolean appActive = true;
+ boolean oldValue;
+ @Override
+ public void eventDispatched(AWTEvent event) {
+ if (event instanceof WindowEvent) {
+ WindowEvent we = (WindowEvent)event;
+ if (we.getID() == WindowEvent.WINDOW_GAINED_FOCUS && !appActive) {
+ if (oldValue) {
+ GameSound.INSTANCE.setMusicEnabled(oldValue);
+ }
+ appActive = true;
+ }
+ else if (we.getID() == WindowEvent.WINDOW_LOST_FOCUS && we.getOppositeWindow() == null && (Toolkit.getDefaultToolkit().getSystemEventQueue().peekEvent() == null)) {
+ oldValue = GameSound.INSTANCE.isMusicEnabled();
+ GameSound.INSTANCE.setMusicEnabled(false);
+ appActive = false;
+ }
+ }
+ }
+ }, AWTEvent.WINDOW_FOCUS_EVENT_MASK);
+ }
+
public static void openOptions(Component parentComponent, Risk myrisk, boolean myTurn, Preferences preferences) {
JCheckBox showDice = new JCheckBox("Show dice", Risk.isShowDice());
Modified: Domination/swingUI/src/net/yura/domination/ui/flashgui/MainMenu.java
===================================================================
--- Domination/swingUI/src/net/yura/domination/ui/flashgui/MainMenu.java 2024-03-09 22:25:57 UTC (rev 2512)
+++ Domination/swingUI/src/net/yura/domination/ui/flashgui/MainMenu.java 2024-03-14 00:54:27 UTC (rev 2513)
@@ -22,7 +22,6 @@
import javax.swing.JPanel;
import javax.swing.RootPaneContainer;
import javax.swing.event.MouseInputListener;
-import net.yura.domination.audio.SimpleAudio;
import net.yura.domination.audio.GameSound;
import net.yura.domination.engine.JavaCompatUtil;
import net.yura.domination.engine.Risk;
@@ -632,13 +631,7 @@
// before we create any UI, we want to load up all settings
RiskSettings.loadSettingsFromPrefs(RiskSettings.getPreferences(MainMenu.class));
- try {
- GameSound.INSTANCE.setAudioSystem(risk, new SimpleAudio());
- GameSound.INSTANCE.load("medieval");
- }
- catch (Throwable th) {
- RiskUtil.printStackTrace("SimpleAudio not loaded", th);
- }
+ RiskUIUtil.initAudio(risk);
final MainMenu mainMneu = newMainMenuFrame(risk, JFrame.EXIT_ON_CLOSE );
@@ -691,6 +684,7 @@
public static MainMenu newMainMenuFrame(Risk risk, int defaultCloseOperation) {
JFrame gui = new JFrame();
+
gui.setIconImage(Toolkit.getDefaultToolkit().getImage( AboutDialog.class.getResource("icon.gif") ));
final MainMenu mm = new MainMenu(risk, gui, gui);
Modified: Domination/swingUI/src/net/yura/domination/ui/swinggui/SwingGUIFrame.java
===================================================================
--- Domination/swingUI/src/net/yura/domination/ui/swinggui/SwingGUIFrame.java 2024-03-09 22:25:57 UTC (rev 2512)
+++ Domination/swingUI/src/net/yura/domination/ui/swinggui/SwingGUIFrame.java 2024-03-14 00:54:27 UTC (rev 2513)
@@ -5,11 +5,8 @@
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
-import net.yura.domination.audio.SimpleAudio;
-import net.yura.domination.audio.GameSound;
import net.yura.domination.engine.Risk;
import net.yura.domination.engine.RiskSettings;
-import net.yura.domination.engine.RiskUtil;
import net.yura.domination.guishared.RiskUIUtil;
import net.yura.domination.guishared.AboutDialog;
@@ -37,13 +34,7 @@
// before we create any UI, we want to load up all settings
RiskSettings.loadSettingsFromPrefs(SwingGUIPanel.getUIPreferences());
- try {
- GameSound.INSTANCE.setAudioSystem(r, new SimpleAudio());
- GameSound.INSTANCE.load("medieval");
- }
- catch (Throwable th) {
- RiskUtil.printStackTrace("SimpleAudio not loaded", th);
- }
+ RiskUIUtil.initAudio(r);
SwingGUIPanel sg = new SwingGUIPanel( r );
|