Custom Launch Music for Each Planet (#8901)

* plant

* what

* literal ctrl+c ctrl+v

* more music

* issue

* feedback

* commit return
This commit is contained in:
Mythril382
2023-12-01 03:16:44 +08:00
committed by GitHub
parent 0afed49b7c
commit 5fe28254e7
3 changed files with 21 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ package mindustry.mod;
import arc.*;
import arc.assets.*;
import arc.assets.loaders.MusicLoader.*;
import arc.assets.loaders.SoundLoader.*;
import arc.audio.*;
import arc.files.*;
@@ -61,6 +62,7 @@ public class ContentParser{
ObjectMap<Class<?>, ContentType> contentTypes = new ObjectMap<>();
ObjectSet<Class<?>> implicitNullable = ObjectSet.with(TextureRegion.class, TextureRegion[].class, TextureRegion[][].class, TextureRegion[][][].class);
ObjectMap<String, AssetDescriptor<?>> sounds = new ObjectMap<>();
ObjectMap<String, AssetDescriptor<?>> musics = new ObjectMap<>();
Seq<ParseListener> listeners = new Seq<>();
ObjectMap<Class<?>, FieldParser> classParsers = new ObjectMap<>(){{
@@ -284,6 +286,20 @@ public class ContentParser{
sounds.put(path, desc);
return sound;
});
put(Music.class, (type, data) -> {
if(fieldOpt(Musics.class, data) != null) return fieldOpt(Musics.class, data);
if(Vars.headless) return new Music();
String name = "music/" + data.asString();
String path = Vars.tree.get(name + ".ogg").exists() ? name + ".ogg" : name + ".mp3";
if(musics.containsKey(path)) return ((MusicParameter)musics.get(path).params).music;
var music = new Music();
AssetDescriptor<?> desc = Core.assets.load(path, Music.class, new MusicParameter(music));
desc.errored = Throwable::printStackTrace;
musics.put(path, desc);
return music;
});
put(Objectives.Objective.class, (type, data) -> {
if(data.isString()){
var cont = locateAny(data.asString());