Fix Android Music, Add flip_card sfx

- fix secondary music not playing on Android (let assetmanager unload them on exit)
- fix MapDialog audio bgm fade
- add Flip sfx on RewardActor flip and transform setstate effect
This commit is contained in:
Anthony Calosa
2023-03-21 21:56:41 +08:00
parent 92c6bd1365
commit 865d228cb2
9 changed files with 49 additions and 28 deletions

View File

@@ -201,7 +201,7 @@ public class DuelScene extends ForgeScene {
@Override
public void enter() {
GameHUD.getInstance().unloadAudio();
GameHUD.getInstance().stopAudio();
Set<GameType> appliedVariants = new HashSet<>();
appliedVariants.add(GameType.Constructed);
AdventurePlayer advPlayer = Current.player();

View File

@@ -309,24 +309,9 @@ public class GameHUD extends Stage {
}
if (GameScene.instance().isNotInWorldMap()) {
SoundSystem.instance.pause();
switch (GameScene.instance().getAdventurePlayerLocation(false, false)) {
case "capital":
case "town":
setAudio(MusicPlaylist.TOWN);
break;
case "dungeon":
case "cave":
setAudio(MusicPlaylist.CAVE);
break;
case "castle":
setAudio(MusicPlaylist.CASTLE);
break;
default:
break;
}
playAudio();
} else {
unloadAudio();
stopAudio();
SoundSystem.instance.resume(); // resume World BGM
}
}
@@ -334,17 +319,35 @@ public class GameHUD extends Stage {
private Pair<FileHandle, Music> audio = null;
public void playAudio() {
switch (GameScene.instance().getAdventurePlayerLocation(false, false)) {
case "capital":
case "town":
setAudio(MusicPlaylist.TOWN);
break;
case "dungeon":
case "cave":
setAudio(MusicPlaylist.CAVE);
break;
case "castle":
setAudio(MusicPlaylist.CASTLE);
break;
default:
break;
}
if (audio != null) {
audio.getRight().setLooping(true);
audio.getRight().play();
}
}
public void unloadAudio() {
public void fadeAudio(float v) {
if (audio != null) {
audio.getRight().setVolume(v);
}
}
public void stopAudio() {
if (audio != null) {
audio.getRight().setOnCompletionListener(null);
audio.getRight().stop();
Forge.getAssets().manager().unload(audio.getLeft().path());
}
}
@@ -353,7 +356,7 @@ public class GameHUD extends Stage {
private void setAudio(MusicPlaylist playlist) {
if (playlist.equals(currentAudioPlaylist))
return;
unloadAudio();
stopAudio();
audio = getMusic(playlist);
}
@@ -363,9 +366,10 @@ public class GameHUD extends Stage {
if (music != null) {
currentAudioPlaylist = playlist;
return Pair.of(file, music);
} else {
currentAudioPlaylist = null;
return null;
}
currentAudioPlaylist = null;
return null;
}
private void openDeck() {

View File

@@ -15,11 +15,11 @@ import forge.Forge;
import forge.adventure.character.EnemySprite;
import forge.adventure.data.DialogData;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.stage.GameHUD;
import forge.adventure.stage.MapStage;
import forge.card.ColorSet;
import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel;
import forge.sound.SoundSystem;
import forge.util.Localizer;
import org.apache.commons.lang3.tuple.Pair;
@@ -196,7 +196,7 @@ public class MapDialog {
fade += 0.1f;
if (fade > 1f)
fade = 1f;
SoundSystem.instance.fadeModifier(fade);
GameHUD.getInstance().fadeAudio(fade);
}
}, delay);
}
@@ -211,7 +211,7 @@ public class MapDialog {
fade -= 0.1f;
if (fade < 0.1f)
fade = 0.1f;
SoundSystem.instance.fadeModifier(fade);
GameHUD.getInstance().fadeAudio(fade);
}
}, delay);
}

View File

@@ -41,6 +41,8 @@ import forge.card.CardRenderer;
import forge.game.card.CardView;
import forge.gui.GuiBase;
import forge.item.PaperCard;
import forge.sound.SoundEffectType;
import forge.sound.SoundSystem;
import forge.util.ImageFetcher;
import forge.util.ImageUtil;
import org.apache.commons.lang3.StringUtils;
@@ -593,6 +595,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
return;
clicked = true;
flipProcess = 0;
SoundSystem.instance.play(SoundEffectType.FlipCard, false);
}
public void sold() {