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) {
|
if (state == CardStateName.FaceDown) {
|
||||||
view.updateHiddenId(game.nextHiddenCardId());
|
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;
|
return true;
|
||||||
|
|||||||
@@ -16,7 +16,13 @@ public class GameEventCardStatsChanged extends GameEvent {
|
|||||||
|
|
||||||
public final Collection<Card> cards;
|
public final Collection<Card> cards;
|
||||||
public GameEventCardStatsChanged(Card affected) {
|
public GameEventCardStatsChanged(Card affected) {
|
||||||
|
this(affected, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameEventCardStatsChanged(Card affected, boolean isTransform) {
|
||||||
|
players = Arrays.asList(affected.getController());
|
||||||
cards = Arrays.asList(affected);
|
cards = Arrays.asList(affected);
|
||||||
|
transform = isTransform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameEventCardStatsChanged(Collection<Card> affected) {
|
public GameEventCardStatsChanged(Collection<Card> affected) {
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ public class DuelScene extends ForgeScene {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
GameHUD.getInstance().unloadAudio();
|
GameHUD.getInstance().stopAudio();
|
||||||
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();
|
||||||
|
|||||||
@@ -309,6 +309,16 @@ public class GameHUD extends Stage {
|
|||||||
}
|
}
|
||||||
if (GameScene.instance().isNotInWorldMap()) {
|
if (GameScene.instance().isNotInWorldMap()) {
|
||||||
SoundSystem.instance.pause();
|
SoundSystem.instance.pause();
|
||||||
|
playAudio();
|
||||||
|
} else {
|
||||||
|
stopAudio();
|
||||||
|
SoundSystem.instance.resume(); // resume World BGM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Pair<FileHandle, Music> audio = null;
|
||||||
|
|
||||||
|
public void playAudio() {
|
||||||
switch (GameScene.instance().getAdventurePlayerLocation(false, false)) {
|
switch (GameScene.instance().getAdventurePlayerLocation(false, false)) {
|
||||||
case "capital":
|
case "capital":
|
||||||
case "town":
|
case "town":
|
||||||
@@ -324,27 +334,20 @@ public class GameHUD extends Stage {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
playAudio();
|
|
||||||
} else {
|
|
||||||
unloadAudio();
|
|
||||||
SoundSystem.instance.resume(); // resume World BGM
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Pair<FileHandle, Music> audio = null;
|
|
||||||
|
|
||||||
public void playAudio() {
|
|
||||||
if (audio != null) {
|
if (audio != null) {
|
||||||
audio.getRight().setLooping(true);
|
audio.getRight().setLooping(true);
|
||||||
audio.getRight().play();
|
audio.getRight().play();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void fadeAudio(float v) {
|
||||||
public void unloadAudio() {
|
if (audio != null) {
|
||||||
|
audio.getRight().setVolume(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopAudio() {
|
||||||
if (audio != null) {
|
if (audio != null) {
|
||||||
audio.getRight().setOnCompletionListener(null);
|
|
||||||
audio.getRight().stop();
|
audio.getRight().stop();
|
||||||
Forge.getAssets().manager().unload(audio.getLeft().path());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -353,7 +356,7 @@ public class GameHUD extends Stage {
|
|||||||
private void setAudio(MusicPlaylist playlist) {
|
private void setAudio(MusicPlaylist playlist) {
|
||||||
if (playlist.equals(currentAudioPlaylist))
|
if (playlist.equals(currentAudioPlaylist))
|
||||||
return;
|
return;
|
||||||
unloadAudio();
|
stopAudio();
|
||||||
audio = getMusic(playlist);
|
audio = getMusic(playlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,10 +366,11 @@ public class GameHUD extends Stage {
|
|||||||
if (music != null) {
|
if (music != null) {
|
||||||
currentAudioPlaylist = playlist;
|
currentAudioPlaylist = playlist;
|
||||||
return Pair.of(file, music);
|
return Pair.of(file, music);
|
||||||
}
|
} else {
|
||||||
currentAudioPlaylist = null;
|
currentAudioPlaylist = null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void openDeck() {
|
private void openDeck() {
|
||||||
Forge.switchScene(DeckSelectScene.instance());
|
Forge.switchScene(DeckSelectScene.instance());
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ import forge.Forge;
|
|||||||
import forge.adventure.character.EnemySprite;
|
import forge.adventure.character.EnemySprite;
|
||||||
import forge.adventure.data.DialogData;
|
import forge.adventure.data.DialogData;
|
||||||
import forge.adventure.player.AdventurePlayer;
|
import forge.adventure.player.AdventurePlayer;
|
||||||
|
import forge.adventure.stage.GameHUD;
|
||||||
import forge.adventure.stage.MapStage;
|
import forge.adventure.stage.MapStage;
|
||||||
import forge.card.ColorSet;
|
import forge.card.ColorSet;
|
||||||
import forge.localinstance.properties.ForgePreferences;
|
import forge.localinstance.properties.ForgePreferences;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.sound.SoundSystem;
|
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ public class MapDialog {
|
|||||||
fade += 0.1f;
|
fade += 0.1f;
|
||||||
if (fade > 1f)
|
if (fade > 1f)
|
||||||
fade = 1f;
|
fade = 1f;
|
||||||
SoundSystem.instance.fadeModifier(fade);
|
GameHUD.getInstance().fadeAudio(fade);
|
||||||
}
|
}
|
||||||
}, delay);
|
}, delay);
|
||||||
}
|
}
|
||||||
@@ -211,7 +211,7 @@ public class MapDialog {
|
|||||||
fade -= 0.1f;
|
fade -= 0.1f;
|
||||||
if (fade < 0.1f)
|
if (fade < 0.1f)
|
||||||
fade = 0.1f;
|
fade = 0.1f;
|
||||||
SoundSystem.instance.fadeModifier(fade);
|
GameHUD.getInstance().fadeAudio(fade);
|
||||||
}
|
}
|
||||||
}, delay);
|
}, delay);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ import forge.card.CardRenderer;
|
|||||||
import forge.game.card.CardView;
|
import forge.game.card.CardView;
|
||||||
import forge.gui.GuiBase;
|
import forge.gui.GuiBase;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
|
import forge.sound.SoundEffectType;
|
||||||
|
import forge.sound.SoundSystem;
|
||||||
import forge.util.ImageFetcher;
|
import forge.util.ImageFetcher;
|
||||||
import forge.util.ImageUtil;
|
import forge.util.ImageUtil;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -593,6 +595,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
|||||||
return;
|
return;
|
||||||
clicked = true;
|
clicked = true;
|
||||||
flipProcess = 0;
|
flipProcess = 0;
|
||||||
|
SoundSystem.instance.play(SoundEffectType.FlipCard, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sold() {
|
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.GameEventCardPhased;
|
||||||
import forge.game.event.GameEventCardRegenerated;
|
import forge.game.event.GameEventCardRegenerated;
|
||||||
import forge.game.event.GameEventCardSacrificed;
|
import forge.game.event.GameEventCardSacrificed;
|
||||||
|
import forge.game.event.GameEventCardStatsChanged;
|
||||||
import forge.game.event.GameEventCardTapped;
|
import forge.game.event.GameEventCardTapped;
|
||||||
import forge.game.event.GameEventDayTimeChanged;
|
import forge.game.event.GameEventDayTimeChanged;
|
||||||
import forge.game.event.GameEventFlipCoin;
|
import forge.game.event.GameEventFlipCoin;
|
||||||
@@ -77,6 +78,12 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
|
|||||||
|
|
||||||
return to == ZoneType.Exile ? SoundEffectType.Exile : null;
|
return to == ZoneType.Exile ? SoundEffectType.Exile : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEffectType visit(GameEventCardStatsChanged event) {
|
||||||
|
return event.transform ? SoundEffectType.FlipCard : null ;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SoundEffectType visit(final GameEventCardRegenerated event) { return SoundEffectType.Regen; }
|
public SoundEffectType visit(final GameEventCardRegenerated event) { return SoundEffectType.Regen; }
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ public enum SoundEffectType {
|
|||||||
Equip("equip.mp3", false),
|
Equip("equip.mp3", false),
|
||||||
Exile("exile.mp3", false),
|
Exile("exile.mp3", false),
|
||||||
FlipCoin("flip_coin.mp3", false),
|
FlipCoin("flip_coin.mp3", false),
|
||||||
|
FlipCard("flip_card.mp3", false),
|
||||||
GreenBlackBlueLand("green_black_blue_land.mp3", false),
|
GreenBlackBlueLand("green_black_blue_land.mp3", false),
|
||||||
GreenBlackLand("green_black_land.mp3", false),
|
GreenBlackLand("green_black_land.mp3", false),
|
||||||
GreenBlueLand("green_blue_land.mp3", false),
|
GreenBlueLand("green_blue_land.mp3", false),
|
||||||
|
|||||||
Reference in New Issue
Block a user