Sound framework improvements

This commit is contained in:
Anuken
2020-11-12 18:07:26 -05:00
parent d163cacb6a
commit d1d3ef0c67
24 changed files with 162 additions and 355 deletions

View File

@@ -2,6 +2,8 @@ package mindustry.mod;
import arc.*;
import arc.assets.*;
import arc.assets.loaders.*;
import arc.assets.loaders.SoundLoader.*;
import arc.audio.*;
import arc.files.*;
import arc.func.*;
@@ -89,15 +91,14 @@ public class ContentParser{
});
put(Sound.class, (type, data) -> {
if(fieldOpt(Sounds.class, data) != null) return fieldOpt(Sounds.class, data);
if(Vars.headless) return new MockSound();
if(Vars.headless) return new Sound();
String name = "sounds/" + data.asString();
String path = Vars.tree.get(name + ".ogg").exists() ? name + ".ogg" : name + ".mp3";
if(Core.assets.contains(path, Sound.class)) return Core.assets.get(path, Sound.class);
ModLoadingSound sound = new ModLoadingSound();
AssetDescriptor<?> desc = Core.assets.load(path, Sound.class);
desc.loaded = result -> sound.sound = (Sound)result;
var sound = new Sound();
AssetDescriptor<?> desc = Core.assets.load(path, Sound.class, new SoundParameter(sound));
desc.errored = Throwable::printStackTrace;
return sound;
});

View File

@@ -1,84 +0,0 @@
package mindustry.mod;
import arc.audio.*;
import arc.mock.*;
import arc.util.*;
public class ModLoadingMusic implements Music{
public Music music = new MockMusic();
@Override
public void play(){
music.play();
}
@Override
public void pause(){
music.pause();
}
@Override
public void stop(){
music.stop();
}
@Override
public boolean isPlaying(){
return music.isPlaying();
}
@Override
public boolean isLooping(){
return music.isLooping();
}
@Override
public void setLooping(boolean isLooping){
music.setLooping(isLooping);
}
@Override
public float getVolume(){
return music.getVolume();
}
@Override
public void setVolume(float volume){
music.setVolume(volume);
}
@Override
public void setPan(float pan, float volume){
music.setPan(pan, volume);
}
@Override
public float getPosition(){
return music.getPosition();
}
@Override
public void setPosition(float position){
music.setPosition(position);
}
@Override
public void dispose(){
music.dispose();
}
@Override
public void setCompletionListener(OnCompletionListener listener){
music.setCompletionListener(listener);
}
@Override
public void setFilter(int index, @Nullable AudioFilter filter){
music.setFilter(index, filter);
}
@Override
public boolean isDisposed(){
return music.isDisposed();
}
}

View File

@@ -1,140 +0,0 @@
package mindustry.mod;
import arc.audio.*;
import arc.math.geom.*;
import arc.mock.*;
import arc.util.*;
public class ModLoadingSound implements Sound{
public Sound sound = new MockSound();
@Override
public float calcPan(float x, float y){
return sound.calcPan(x, y);
}
@Override
public float calcVolume(float x, float y){
return sound.calcVolume(x, y);
}
@Override
public float calcFalloff(float x, float y){
return sound.calcFalloff(x, y);
}
@Override
public int at(float x, float y, float pitch){
return sound.at(x, y, pitch);
}
@Override
public int at(float x, float y){
return sound.at(x, y);
}
@Override
public int at(Position pos){
return sound.at(pos);
}
@Override
public int at(Position pos, float pitch){
return sound.at(pos, pitch);
}
@Override
public int play(){
return sound.play();
}
@Override
public int play(float volume){
return sound.play(volume);
}
@Override
public int play(float volume, float pitch, float pan){
return sound.play(volume, pitch, pan);
}
@Override
public int loop(){
return sound.loop();
}
@Override
public int loop(float volume){
return sound.loop(volume);
}
@Override
public int loop(float volume, float pitch, float pan){
return sound.loop(volume, pitch, pan);
}
@Override
public void stop(){
sound.stop();
}
@Override
public void dispose(){
sound.dispose();
}
@Override
public void stop(int soundId){
sound.stop(soundId);
}
@Override
public void pause(int soundId){
sound.pause(soundId);
}
@Override
public void resume(int soundId){
sound.resume(soundId);
}
@Override
public void setLooping(int soundId, boolean looping){
sound.setLooping(soundId, looping);
}
@Override
public void setPitch(int soundId, float pitch){
sound.setPitch(soundId, pitch);
}
@Override
public void setVolume(int soundId, float volume){
sound.setVolume(soundId, volume);
}
@Override
public void set(int soundId, float pan, float volume){
sound.set(soundId, pan, volume);
}
@Override
public boolean isDisposed(){
return sound.isDisposed();
}
@Override
public int play(float volume, float pitch, float pan, boolean loop){
return sound.play(volume, pitch, pan, loop);
}
@Override
public void setFilter(int index, @Nullable AudioFilter filter){
sound.setFilter(index, filter);
}
@Override
public boolean isPlaying(int soundId){
return sound.isPlaying(soundId);
}
}

View File

@@ -2,9 +2,10 @@ package mindustry.mod;
import arc.*;
import arc.assets.*;
import arc.assets.loaders.MusicLoader.*;
import arc.assets.loaders.SoundLoader.*;
import arc.audio.*;
import arc.files.*;
import arc.mock.*;
import arc.struct.*;
import arc.util.*;
import arc.util.Log.*;
@@ -87,33 +88,31 @@ public class Scripts implements Disposable{
}
public Sound loadSound(String soundName){
if(Vars.headless) return new MockSound();
if(Vars.headless) return new Sound();
String name = "sounds/" + soundName;
String path = Vars.tree.get(name + ".ogg").exists() ? name + ".ogg" : name + ".mp3";
if(Core.assets.contains(path, Sound.class)) return Core.assets.get(path, Sound.class);
ModLoadingSound sound = new ModLoadingSound();
AssetDescriptor<?> desc = Core.assets.load(path, Sound.class);
desc.loaded = result -> sound.sound = (Sound)result;
var sound = new Sound();
AssetDescriptor<?> desc = Core.assets.load(path, Sound.class, new SoundParameter(sound));
desc.errored = Throwable::printStackTrace;
return sound;
}
public Music loadMusic(String soundName){
if(Vars.headless) return new MockMusic();
if(Vars.headless) return new Music();
String name = "music/" + soundName;
String path = Vars.tree.get(name + ".ogg").exists() ? name + ".ogg" : name + ".mp3";
if(Core.assets.contains(path, Music.class)) return Core.assets.get(path, Music.class);
ModLoadingMusic sound = new ModLoadingMusic();
AssetDescriptor<?> desc = Core.assets.load(path, Music.class);
desc.loaded = result -> sound.music = (Music)result;
var music = new Music();
AssetDescriptor<?> desc = Core.assets.load(path, Music.class, new MusicParameter(music));
desc.errored = Throwable::printStackTrace;
return sound;
return music;
}
//endregion