From 0454786545d5d697653f6d2157724a71313a9b93 Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Wed, 29 Sep 2021 09:30:53 +0300 Subject: [PATCH] - Auto-detect custom sound files for cards if they exist. --- .../java/forge/sound/EventVisualizer.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/forge-gui/src/main/java/forge/sound/EventVisualizer.java b/forge-gui/src/main/java/forge/sound/EventVisualizer.java index 978f99d4e67..2e7bbfc3659 100644 --- a/forge-gui/src/main/java/forge/sound/EventVisualizer.java +++ b/forge-gui/src/main/java/forge/sound/EventVisualizer.java @@ -315,14 +315,18 @@ public class EventVisualizer extends IGameEventVisitor.Base imp // Implement sound effects for specific cards here, if necessary. String effect = ""; if (null != c) { - effect = c.getSVar("SoundEffect"); - } - if (!effect.isEmpty()) { - // Only proceed if the file actually exists - return new File(ForgeConstants.SOUND_DIR, effect).exists(); + if (c.hasSVar("SoundEffect")) { + effect = c.getSVar("SoundEffect"); + } else { + effect = TextUtil.fastReplace(TextUtil.fastReplace( + TextUtil.fastReplace(c.getName(), ",", ""), + " ", "_"), "'", "").toLowerCase() + ".mp3"; + + } } - return false; + // Only proceed if the file actually exists + return new File(ForgeConstants.SOUND_DIR, effect).exists(); } @@ -339,11 +343,24 @@ public class EventVisualizer extends IGameEventVisitor.Base imp if (evt instanceof GameEventSpellResolved) { c = ((GameEventSpellResolved) evt).spell.getHostCard(); - } else if (evt instanceof GameEventLandPlayed) { - c = ((GameEventLandPlayed) evt).land; + } else if (evt instanceof GameEventZone) { + GameEventZone evZone = (GameEventZone)evt; + if (evZone.zoneType == ZoneType.Battlefield && evZone.mode == EventValueChangeType.Added && evZone.card.isLand()) { + c = evZone.card; // assuming a land is played or otherwise put on the battlefield + } } - return c != null ? c.getSVar("SoundEffect") : ""; + if (c == null) { + return ""; + } else { + if (c.hasSVar("SoundEffect")) { + return c.getSVar("SoundEffect"); + } else { + return TextUtil.fastReplace(TextUtil.fastReplace( + TextUtil.fastReplace(c.getName(), ",", ""), + " ", "_"), "'", "").toLowerCase() + ".mp3"; + } + } }