update pause timing

This commit is contained in:
Anthony Calosa
2023-03-21 13:17:06 +08:00
parent 1190f40b55
commit a0e3949aab
3 changed files with 15 additions and 4 deletions

View File

@@ -13,6 +13,7 @@ import forge.adventure.data.EffectData;
import forge.adventure.data.EnemyData; import forge.adventure.data.EnemyData;
import forge.adventure.data.ItemData; import forge.adventure.data.ItemData;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
import forge.adventure.stage.GameHUD;
import forge.adventure.stage.IAfterMatch; import forge.adventure.stage.IAfterMatch;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.adventure.util.Current; import forge.adventure.util.Current;
@@ -193,6 +194,7 @@ public class DuelScene extends ForgeScene {
@Override @Override
public void enter() { public void enter() {
GameHUD.getInstance().unloadAudio();
Set<GameType> appliedVariants = new HashSet<>(); Set<GameType> appliedVariants = new HashSet<>();
appliedVariants.add(GameType.Constructed); appliedVariants.add(GameType.Constructed);
AdventurePlayer advPlayer = Current.player(); AdventurePlayer advPlayer = Current.player();

View File

@@ -280,6 +280,8 @@ public class GameHUD extends Stage {
} }
if (!GameScene.instance().isNotInWorldMap()) if (!GameScene.instance().isNotInWorldMap())
updateMusic(); updateMusic();
else
SoundSystem.instance.pause();
} }
Texture miniMapTexture; Texture miniMapTexture;
@@ -306,7 +308,7 @@ public class GameHUD extends Stage {
deckActor.setColor(menuActor.getColor()); deckActor.setColor(menuActor.getColor());
} }
if (GameScene.instance().isNotInWorldMap()) { if (GameScene.instance().isNotInWorldMap()) {
SoundSystem.instance.pause(); //play another music source SoundSystem.instance.pause();
switch (GameScene.instance().getAdventurePlayerLocation(false, false)) { switch (GameScene.instance().getAdventurePlayerLocation(false, false)) {
case "capital": case "capital":
case "town": case "town":
@@ -332,22 +334,28 @@ public class GameHUD extends Stage {
} }
} }
private Pair<FileHandle, Music> audio = null; private Pair<FileHandle, Music> audio = null;
private void unloadAudio() { public void unloadAudio() {
if (audio != null) { if (audio != null) {
audio.getRight().setOnCompletionListener(null); audio.getRight().setOnCompletionListener(null);
audio.getRight().stop(); audio.getRight().stop();
Forge.getAssets().manager().unload(audio.getLeft().path()); Forge.getAssets().manager().unload(audio.getLeft().path());
} }
} }
private MusicPlaylist currentAudioPlaylist = null;
private void setAudio(MusicPlaylist playlist) { private void setAudio(MusicPlaylist playlist) {
if (playlist.equals(currentAudioPlaylist))
return;
unloadAudio(); unloadAudio();
audio = getMusic(playlist); audio = getMusic(playlist);
} }
private Pair<FileHandle, Music> getMusic(MusicPlaylist playlist) { private Pair<FileHandle, Music> getMusic(MusicPlaylist playlist) {
FileHandle file = Gdx.files.absolute(playlist.getNewRandomFilename()); FileHandle file = Gdx.files.absolute(playlist.getNewRandomFilename());
Music music = Forge.getAssets().getMusic(file); Music music = Forge.getAssets().getMusic(file);
if (music != null) if (music != null) {
currentAudioPlaylist = playlist;
return Pair.of(file, music); return Pair.of(file, music);
}
currentAudioPlaylist = null;
return null; return null;
} }

View File

@@ -30,6 +30,7 @@ public class AudioMusic implements IAudioMusic {
public void pause() { public void pause() {
if (music == null) if (music == null)
return; return;
if (music.isPlaying())
music.pause(); music.pause();
} }