Moved track volume dimming into MusicController.
- Fixes an issue where the first few milliseconds of the theme song would always play at full volume, even if container is not focused. - Allows easier application to any song. Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
parent
31a97fbc5d
commit
f5df00255f
|
@ -71,6 +71,11 @@ public class MusicController {
|
||||||
*/
|
*/
|
||||||
private static float pauseTime = 0f;
|
private static float pauseTime = 0f;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the current track volume is dimmed.
|
||||||
|
*/
|
||||||
|
private static boolean trackDimmed = false;
|
||||||
|
|
||||||
// This class should not be instantiated.
|
// This class should not be instantiated.
|
||||||
private MusicController() {}
|
private MusicController() {}
|
||||||
|
|
||||||
|
@ -148,6 +153,7 @@ public class MusicController {
|
||||||
else
|
else
|
||||||
player.play();
|
player.play();
|
||||||
pauseTime = 0f;
|
pauseTime = 0f;
|
||||||
|
trackDimmed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,6 +308,20 @@ public class MusicController {
|
||||||
return (themePlaying && trackExists());
|
return (themePlaying && trackExists());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether or not the volume of the current track, if any,
|
||||||
|
* has been dimmed.
|
||||||
|
*/
|
||||||
|
public static boolean isTrackDimmed() { return trackDimmed; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggles the volume dim state of the current track.
|
||||||
|
*/
|
||||||
|
public static void toggleTrackDimmed() {
|
||||||
|
setVolume((trackDimmed) ? Options.getMusicVolume() : Options.getMusicVolume() / 3f);
|
||||||
|
trackDimmed = !trackDimmed;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stops and releases all sources, clears each of the specified Audio
|
* Stops and releases all sources, clears each of the specified Audio
|
||||||
* buffers, destroys the OpenAL context, and resets SoundStore for future use.
|
* buffers, destroys the OpenAL context, and resets SoundStore for future use.
|
||||||
|
|
|
@ -106,11 +106,6 @@ public class MainMenu extends BasicGameState {
|
||||||
*/
|
*/
|
||||||
private float bgAlpha = 0f;
|
private float bgAlpha = 0f;
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether the theme song volume has been dimmed.
|
|
||||||
*/
|
|
||||||
private boolean volumeDimmed = false;
|
|
||||||
|
|
||||||
// game-related variables
|
// game-related variables
|
||||||
private GameContainer container;
|
private GameContainer container;
|
||||||
private StateBasedGame game;
|
private StateBasedGame game;
|
||||||
|
@ -259,16 +254,9 @@ public class MainMenu extends BasicGameState {
|
||||||
repoButton.hoverUpdate(delta, mouseX, mouseY);
|
repoButton.hoverUpdate(delta, mouseX, mouseY);
|
||||||
|
|
||||||
// window focus change: increase/decrease theme song volume
|
// window focus change: increase/decrease theme song volume
|
||||||
if (MusicController.isThemePlaying()) {
|
if (MusicController.isThemePlaying() &&
|
||||||
boolean hasFocus = container.hasFocus();
|
MusicController.isTrackDimmed() == container.hasFocus())
|
||||||
if (volumeDimmed == hasFocus) {
|
MusicController.toggleTrackDimmed();
|
||||||
if (hasFocus) // restored focus
|
|
||||||
MusicController.setVolume(Options.getMusicVolume());
|
|
||||||
else // lost focus
|
|
||||||
MusicController.setVolume(Options.getMusicVolume() / 3f);
|
|
||||||
volumeDimmed = !hasFocus;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// fade in background
|
// fade in background
|
||||||
if (bgAlpha < 0.9f) {
|
if (bgAlpha < 0.9f) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user