mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +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/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/VCardScript.java -text
|
||||||
forge-gui-desktop/src/main/java/forge/screens/workshop/views/VWorkshopCatalog.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/CardFaceSymbols.java -text
|
||||||
forge-gui-desktop/src/main/java/forge/toolbox/ContextMenuBuilder.java -text
|
forge-gui-desktop/src/main/java/forge/toolbox/ContextMenuBuilder.java -text
|
||||||
forge-gui-desktop/src/main/java/forge/toolbox/FAbsolutePositioner.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/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/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/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/EventVisualizer.java -text
|
||||||
forge-gui/src/main/java/forge/sound/IAudioClip.java -text
|
forge-gui/src/main/java/forge/sound/IAudioClip.java -text
|
||||||
forge-gui/src/main/java/forge/sound/NoSoundClip.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.VField;
|
||||||
import forge.screens.match.views.VHand;
|
import forge.screens.match.views.VHand;
|
||||||
import forge.screens.match.views.VPrompt;
|
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.FButton;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.toolbox.FSkin;
|
import forge.toolbox.FSkin;
|
||||||
@@ -435,4 +438,14 @@ public class GuiDesktop implements IGuiBase {
|
|||||||
public LobbyPlayer getQuestPlayer() {
|
public LobbyPlayer getQuestPlayer() {
|
||||||
return getGuiPlayer();
|
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.FControl;
|
||||||
import forge.screens.match.views.VPhaseIndicator.PhaseLabel;
|
import forge.screens.match.views.VPhaseIndicator.PhaseLabel;
|
||||||
import forge.screens.match.winlose.ViewWinLose;
|
import forge.screens.match.winlose.ViewWinLose;
|
||||||
|
import forge.sound.IAudioClip;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.toolbox.GuiChoose;
|
import forge.toolbox.GuiChoose;
|
||||||
import forge.util.ITriggerEvent;
|
import forge.util.ITriggerEvent;
|
||||||
@@ -363,4 +364,14 @@ public class GuiMobile implements IGuiBase {
|
|||||||
public LobbyPlayer getQuestPlayer() {
|
public LobbyPlayer getQuestPlayer() {
|
||||||
return getGuiPlayer();
|
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.item.PaperCard;
|
||||||
import forge.match.input.InputQueue;
|
import forge.match.input.InputQueue;
|
||||||
import forge.properties.ForgeProfileProperties;
|
import forge.properties.ForgeProfileProperties;
|
||||||
|
import forge.sound.IAudioClip;
|
||||||
import forge.util.ITriggerEvent;
|
import forge.util.ITriggerEvent;
|
||||||
|
|
||||||
|
|
||||||
@@ -84,4 +85,6 @@ public interface IGuiBase {
|
|||||||
LobbyPlayer createAiPlayer(String name, int avatarIndex);
|
LobbyPlayer createAiPlayer(String name, int avatarIndex);
|
||||||
LobbyPlayer getQuestPlayer();
|
LobbyPlayer getQuestPlayer();
|
||||||
ForgeProfileProperties getProfileProps();
|
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 com.google.common.eventbus.Subscribe;
|
||||||
|
|
||||||
|
import forge.GuiBase;
|
||||||
import forge.events.UiEvent;
|
import forge.events.UiEvent;
|
||||||
import forge.game.event.GameEvent;
|
import forge.game.event.GameEvent;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
@@ -41,9 +42,12 @@ public class SoundSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IAudioClip clip = loadedClips.get(type);
|
IAudioClip clip = loadedClips.get(type);
|
||||||
if (null == clip) { // cache miss
|
if (clip == null) { // cache miss
|
||||||
String resource = type.getResourceFileName();
|
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);
|
loadedClips.put(type, clip);
|
||||||
}
|
}
|
||||||
return clip;
|
return clip;
|
||||||
@@ -62,7 +66,10 @@ public class SoundSystem {
|
|||||||
|
|
||||||
IAudioClip clip = loadedScriptClips.get(fileName);
|
IAudioClip clip = loadedScriptClips.get(fileName);
|
||||||
if (null == clip) { // cache miss
|
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);
|
loadedScriptClips.put(fileName, clip);
|
||||||
}
|
}
|
||||||
return clip;
|
return clip;
|
||||||
@@ -74,8 +81,9 @@ public class SoundSystem {
|
|||||||
*/
|
*/
|
||||||
public void play(String resourceFileName, boolean isSynchronized) {
|
public void play(String resourceFileName, boolean isSynchronized) {
|
||||||
if (isUsingAltSystem()) {
|
if (isUsingAltSystem()) {
|
||||||
new AltSoundSystem(ForgeConstants.SOUND_DIR + resourceFileName, isSynchronized).start();
|
GuiBase.getInterface().startAltSoundSystem(ForgeConstants.SOUND_DIR + resourceFileName, isSynchronized);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
IAudioClip snd = fetchResource(resourceFileName);
|
IAudioClip snd = fetchResource(resourceFileName);
|
||||||
if (!isSynchronized || snd.isDone()) {
|
if (!isSynchronized || snd.isDone()) {
|
||||||
snd.play();
|
snd.play();
|
||||||
@@ -88,8 +96,9 @@ public class SoundSystem {
|
|||||||
*/
|
*/
|
||||||
public void play(SoundEffectType type, boolean isSynchronized) {
|
public void play(SoundEffectType type, boolean isSynchronized) {
|
||||||
if (isUsingAltSystem()) {
|
if (isUsingAltSystem()) {
|
||||||
new AltSoundSystem(ForgeConstants.SOUND_DIR + type.getResourceFileName(), isSynchronized).start();
|
GuiBase.getInterface().startAltSoundSystem(ForgeConstants.SOUND_DIR + type.getResourceFileName(), isSynchronized);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
IAudioClip snd = fetchResource(type);
|
IAudioClip snd = fetchResource(type);
|
||||||
if (!isSynchronized || snd.isDone()) {
|
if (!isSynchronized || snd.isDone()) {
|
||||||
snd.play();
|
snd.play();
|
||||||
@@ -148,5 +157,4 @@ public class SoundSystem {
|
|||||||
play(effect, effect.isSynced());
|
play(effect, effect.isSynced());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user