diff --git a/.gitattributes b/.gitattributes index dfd28819faf..4f5e04e64ed 100644 --- a/.gitattributes +++ b/.gitattributes @@ -946,6 +946,8 @@ forge-gui-desktop/src/main/java/forge/screens/workshop/menus/WorkshopFileMenu.ja forge-gui-desktop/src/main/java/forge/screens/workshop/views/VCardDesigner.java -text forge-gui-desktop/src/main/java/forge/screens/workshop/views/VCardScript.java -text forge-gui-desktop/src/main/java/forge/screens/workshop/views/VWorkshopCatalog.java -text +forge-gui-desktop/src/main/java/forge/sound/AltSoundSystem.java -text +forge-gui-desktop/src/main/java/forge/sound/AudioClip.java -text forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java -text forge-gui-desktop/src/main/java/forge/toolbox/ContextMenuBuilder.java -text forge-gui-desktop/src/main/java/forge/toolbox/FAbsolutePositioner.java -text @@ -16449,8 +16451,6 @@ forge-gui/src/main/java/forge/quest/io/QuestDuelReader.java -text forge-gui/src/main/java/forge/quest/io/ReadPriceList.java svneol=native#text/plain forge-gui/src/main/java/forge/quest/io/package-info.java svneol=native#text/plain forge-gui/src/main/java/forge/quest/package-info.java svneol=native#text/plain -forge-gui/src/main/java/forge/sound/AltSoundSystem.java -text -forge-gui/src/main/java/forge/sound/AudioClip.java -text forge-gui/src/main/java/forge/sound/EventVisualizer.java -text forge-gui/src/main/java/forge/sound/IAudioClip.java -text forge-gui/src/main/java/forge/sound/NoSoundClip.java -text diff --git a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java index 074ec1d8a24..3f080741193 100644 --- a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java +++ b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java @@ -63,6 +63,9 @@ import forge.screens.match.controllers.CStack; import forge.screens.match.views.VField; import forge.screens.match.views.VHand; import forge.screens.match.views.VPrompt; +import forge.sound.AltSoundSystem; +import forge.sound.AudioClip; +import forge.sound.IAudioClip; import forge.toolbox.FButton; import forge.toolbox.FOptionPane; import forge.toolbox.FSkin; @@ -435,4 +438,14 @@ public class GuiDesktop implements IGuiBase { public LobbyPlayer getQuestPlayer() { return getGuiPlayer(); } + + @Override + public IAudioClip createAudioClip(String filename) { + return AudioClip.fileExists(filename) ? new AudioClip(filename) : null; + } + + @Override + public void startAltSoundSystem(String filename, boolean isSynchronized) { + new AltSoundSystem(filename, isSynchronized).start(); + } } diff --git a/forge-gui/src/main/java/forge/sound/AltSoundSystem.java b/forge-gui-desktop/src/main/java/forge/sound/AltSoundSystem.java old mode 100755 new mode 100644 similarity index 100% rename from forge-gui/src/main/java/forge/sound/AltSoundSystem.java rename to forge-gui-desktop/src/main/java/forge/sound/AltSoundSystem.java diff --git a/forge-gui/src/main/java/forge/sound/AudioClip.java b/forge-gui-desktop/src/main/java/forge/sound/AudioClip.java similarity index 100% rename from forge-gui/src/main/java/forge/sound/AudioClip.java rename to forge-gui-desktop/src/main/java/forge/sound/AudioClip.java diff --git a/forge-gui-mobile/src/forge/GuiMobile.java b/forge-gui-mobile/src/forge/GuiMobile.java index 9da6d2b7dc1..58ffd577ca5 100644 --- a/forge-gui-mobile/src/forge/GuiMobile.java +++ b/forge-gui-mobile/src/forge/GuiMobile.java @@ -42,6 +42,7 @@ import forge.properties.ForgeProfileProperties; import forge.screens.match.FControl; import forge.screens.match.views.VPhaseIndicator.PhaseLabel; import forge.screens.match.winlose.ViewWinLose; +import forge.sound.IAudioClip; import forge.toolbox.FOptionPane; import forge.toolbox.GuiChoose; import forge.util.ITriggerEvent; @@ -363,4 +364,14 @@ public class GuiMobile implements IGuiBase { public LobbyPlayer getQuestPlayer() { return getGuiPlayer(); } + + @Override + public IAudioClip createAudioClip(String filename) { + return null; //TODO: Support audio clips + } + + @Override + public void startAltSoundSystem(String filename, boolean isSynchronized) { + //TODO: Support alt sound system + } } diff --git a/forge-gui/src/main/java/forge/interfaces/IGuiBase.java b/forge-gui/src/main/java/forge/interfaces/IGuiBase.java index 316209d1ba9..ffde8a697eb 100644 --- a/forge-gui/src/main/java/forge/interfaces/IGuiBase.java +++ b/forge-gui/src/main/java/forge/interfaces/IGuiBase.java @@ -28,6 +28,7 @@ import forge.game.zone.ZoneType; import forge.item.PaperCard; import forge.match.input.InputQueue; import forge.properties.ForgeProfileProperties; +import forge.sound.IAudioClip; import forge.util.ITriggerEvent; @@ -84,4 +85,6 @@ public interface IGuiBase { LobbyPlayer createAiPlayer(String name, int avatarIndex); LobbyPlayer getQuestPlayer(); ForgeProfileProperties getProfileProps(); + IAudioClip createAudioClip(String filename); + void startAltSoundSystem(String filename, boolean isSynchronized); } \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/sound/SoundSystem.java b/forge-gui/src/main/java/forge/sound/SoundSystem.java index ff86deacd96..cddb64d61dc 100644 --- a/forge-gui/src/main/java/forge/sound/SoundSystem.java +++ b/forge-gui/src/main/java/forge/sound/SoundSystem.java @@ -2,6 +2,7 @@ package forge.sound; import com.google.common.eventbus.Subscribe; +import forge.GuiBase; import forge.events.UiEvent; import forge.game.event.GameEvent; import forge.model.FModel; @@ -41,9 +42,12 @@ public class SoundSystem { } IAudioClip clip = loadedClips.get(type); - if (null == clip) { // cache miss + if (clip == null) { // cache miss String resource = type.getResourceFileName(); - clip = AudioClip.fileExists(resource) ? new AudioClip(resource) : emptySound; + clip = GuiBase.getInterface().createAudioClip(resource); + if (clip == null) { + clip = emptySound; + } loadedClips.put(type, clip); } return clip; @@ -62,7 +66,10 @@ public class SoundSystem { IAudioClip clip = loadedScriptClips.get(fileName); if (null == clip) { // cache miss - clip = AudioClip.fileExists(fileName) ? new AudioClip(fileName) : emptySound; + clip = GuiBase.getInterface().createAudioClip(fileName); + if (clip == null) { + clip = emptySound; + } loadedScriptClips.put(fileName, clip); } return clip; @@ -74,8 +81,9 @@ public class SoundSystem { */ public void play(String resourceFileName, boolean isSynchronized) { if (isUsingAltSystem()) { - new AltSoundSystem(ForgeConstants.SOUND_DIR + resourceFileName, isSynchronized).start(); - } else { + GuiBase.getInterface().startAltSoundSystem(ForgeConstants.SOUND_DIR + resourceFileName, isSynchronized); + } + else { IAudioClip snd = fetchResource(resourceFileName); if (!isSynchronized || snd.isDone()) { snd.play(); @@ -88,8 +96,9 @@ public class SoundSystem { */ public void play(SoundEffectType type, boolean isSynchronized) { if (isUsingAltSystem()) { - new AltSoundSystem(ForgeConstants.SOUND_DIR + type.getResourceFileName(), isSynchronized).start(); - } else { + GuiBase.getInterface().startAltSoundSystem(ForgeConstants.SOUND_DIR + type.getResourceFileName(), isSynchronized); + } + else { IAudioClip snd = fetchResource(type); if (!isSynchronized || snd.isDone()) { snd.play(); @@ -148,5 +157,4 @@ public class SoundSystem { play(effect, effect.isSynced()); } } - }