mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
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:
@@ -526,7 +526,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
if (state == CardStateName.FaceDown) {
|
||||
view.updateHiddenId(game.nextHiddenCardId());
|
||||
}
|
||||
game.fireEvent(new GameEventCardStatsChanged(this)); //ensure stats updated for new characteristics
|
||||
game.fireEvent(new GameEventCardStatsChanged(this, true)); //ensure stats updated for new characteristics
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -16,7 +16,13 @@ public class GameEventCardStatsChanged extends GameEvent {
|
||||
|
||||
public final Collection<Card> cards;
|
||||
public GameEventCardStatsChanged(Card affected) {
|
||||
this(affected, false);
|
||||
}
|
||||
|
||||
public GameEventCardStatsChanged(Card affected, boolean isTransform) {
|
||||
players = Arrays.asList(affected.getController());
|
||||
cards = Arrays.asList(affected);
|
||||
transform = isTransform;
|
||||
}
|
||||
|
||||
public GameEventCardStatsChanged(Collection<Card> affected) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
BIN
forge-gui/res/sound/flip_card.mp3
Normal file
BIN
forge-gui/res/sound/flip_card.mp3
Normal file
Binary file not shown.
@@ -16,6 +16,7 @@ import forge.game.event.GameEventCardDestroyed;
|
||||
import forge.game.event.GameEventCardPhased;
|
||||
import forge.game.event.GameEventCardRegenerated;
|
||||
import forge.game.event.GameEventCardSacrificed;
|
||||
import forge.game.event.GameEventCardStatsChanged;
|
||||
import forge.game.event.GameEventCardTapped;
|
||||
import forge.game.event.GameEventDayTimeChanged;
|
||||
import forge.game.event.GameEventFlipCoin;
|
||||
@@ -77,6 +78,12 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
|
||||
|
||||
return to == ZoneType.Exile ? SoundEffectType.Exile : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoundEffectType visit(GameEventCardStatsChanged event) {
|
||||
return event.transform ? SoundEffectType.FlipCard : null ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoundEffectType visit(final GameEventCardRegenerated event) { return SoundEffectType.Regen; }
|
||||
@Override
|
||||
|
||||
@@ -59,6 +59,7 @@ public enum SoundEffectType {
|
||||
Equip("equip.mp3", false),
|
||||
Exile("exile.mp3", false),
|
||||
FlipCoin("flip_coin.mp3", false),
|
||||
FlipCard("flip_card.mp3", false),
|
||||
GreenBlackBlueLand("green_black_blue_land.mp3", false),
|
||||
GreenBlackLand("green_black_land.mp3", false),
|
||||
GreenBlueLand("green_blue_land.mp3", false),
|
||||
|
||||
Reference in New Issue
Block a user