mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
SoundEffectManager now generic
This commit is contained in:
@@ -22,7 +22,7 @@ public class AudioEventListener<T extends AudioResource, K extends AudioResource
|
||||
this.audioVolumeManager = audioVolumeManager;
|
||||
}
|
||||
|
||||
public AudioEventListener<?, ?> initListeners() {
|
||||
public AudioEventListener<?, ?> initListeners(String buttonSoundToPlay) {
|
||||
new EventFlow()
|
||||
.listen(this::handleStopMusicManager)
|
||||
.listen(this::handlePlaySound)
|
||||
@@ -31,7 +31,7 @@ public class AudioEventListener<T extends AudioResource, K extends AudioResource
|
||||
.listen(this::handleVolumeChange)
|
||||
.listen(this::handleGetVolume)
|
||||
.listen(AudioEvents.ClickButton.class, _ ->
|
||||
soundEffectManager.play("medium-button-click.wav", false));
|
||||
soundEffectManager.play(buttonSoundToPlay, false));
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.toop.framework.resource.ResourceMeta;
|
||||
import org.toop.framework.resource.resources.BaseResource;
|
||||
import org.toop.framework.resource.resources.MusicAsset;
|
||||
import org.toop.framework.resource.resources.SoundEffectAsset;
|
||||
import org.toop.framework.resource.types.AudioResource;
|
||||
|
||||
import javax.sound.sampled.Clip;
|
||||
import javax.sound.sampled.LineEvent;
|
||||
@@ -16,25 +17,28 @@ import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SoundEffectManager implements org.toop.framework.audio.interfaces.SoundEffectManager<SoundEffectAsset> {
|
||||
public class SoundEffectManager<T extends AudioResource> implements org.toop.framework.audio.interfaces.SoundEffectManager<T> {
|
||||
private static final Logger logger = LogManager.getLogger(SoundEffectManager.class);
|
||||
private final HashMap<String, SoundEffectAsset> soundEffectResources;
|
||||
private final HashMap<String, T> soundEffectResources;
|
||||
|
||||
public SoundEffectManager(){
|
||||
public SoundEffectManager(Class<T> type){
|
||||
// If there are duplicates, takes discards the first
|
||||
soundEffectResources = ResourceManager.getAllOfType(SoundEffectAsset.class).stream()
|
||||
.collect(Collectors.toMap(ResourceMeta::getName, ResourceMeta::getResource, (a, b) -> b, HashMap::new));
|
||||
soundEffectResources = (HashMap<String, T>) ResourceManager
|
||||
.getAllOfType((Class<? extends BaseResource>) type)
|
||||
.stream()
|
||||
.collect(Collectors.
|
||||
toMap(ResourceMeta::getName, ResourceMeta::getResource, (a, b) -> b, HashMap::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<SoundEffectAsset> getActiveAudio() {
|
||||
public Collection<T> getActiveAudio() {
|
||||
return this.soundEffectResources.values();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void play(String name, boolean loop) {
|
||||
SoundEffectAsset asset = soundEffectResources.get(name);
|
||||
T asset = soundEffectResources.get(name);
|
||||
|
||||
if (asset == null) {
|
||||
logger.warn("Unable to load audio asset: {}", name);
|
||||
@@ -43,12 +47,12 @@ public class SoundEffectManager implements org.toop.framework.audio.interfaces.S
|
||||
|
||||
asset.play();
|
||||
|
||||
logger.debug("Playing sound: {}", asset.getFile().getName());
|
||||
logger.debug("Playing sound: {}", asset.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop(String name){
|
||||
SoundEffectAsset asset = soundEffectResources.get(name);
|
||||
T asset = soundEffectResources.get(name);
|
||||
|
||||
if (asset == null) {
|
||||
logger.warn("Unable to load audio asset: {}", name);
|
||||
@@ -57,6 +61,6 @@ public class SoundEffectManager implements org.toop.framework.audio.interfaces.S
|
||||
|
||||
asset.stop();
|
||||
|
||||
logger.debug("Stopped sound: {}", asset.getFile().getName());
|
||||
logger.debug("Stopped sound: {}", asset.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,9 @@ public class MusicAsset extends BaseResource implements LoadableResource, AudioR
|
||||
this.volume = volume;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() { return super.getFile().getName(); }
|
||||
|
||||
@Override
|
||||
public void setOnEnd(Runnable run) {
|
||||
mediaPlayer.setOnEndOfMedia(run);
|
||||
|
||||
@@ -98,6 +98,11 @@ public class SoundEffectAsset extends BaseResource implements LoadableResource,
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return this.getFile().getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnEnd(Runnable run) {
|
||||
// TODO
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.toop.framework.resource.types;
|
||||
|
||||
public interface AudioResource {
|
||||
String getName();
|
||||
void updateVolume(double volume);
|
||||
// boolean isPlaying();
|
||||
void play();
|
||||
|
||||
@@ -34,6 +34,11 @@ class MockAudioResource extends BaseResource implements AudioResource {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return super.getFile().getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void play() {
|
||||
played = true;
|
||||
|
||||
Reference in New Issue
Block a user