mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Refactor sound support so it can work on both desktop and android
This commit is contained in:
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
0
forge-gui/src/main/java/forge/sound/AltSoundSystem.java → forge-gui-desktop/src/main/java/forge/sound/AltSoundSystem.java
Executable file → Normal file
0
forge-gui/src/main/java/forge/sound/AltSoundSystem.java → forge-gui-desktop/src/main/java/forge/sound/AltSoundSystem.java
Executable file → Normal file
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user