diff --git a/core/src/mindustry/editor/data/MapAudioView.java b/core/src/mindustry/editor/data/MapAudioView.java index 9730537469..371c40d1f6 100644 --- a/core/src/mindustry/editor/data/MapAudioView.java +++ b/core/src/mindustry/editor/data/MapAudioView.java @@ -94,11 +94,8 @@ public class MapAudioView implements AssetView{ list.button(Icon.trash, Styles.graySquarei, iconMed, () -> { ui.showConfirm("@asset.delete.confirm", () -> { - if(audioSource != null){ - audioSource.dispose(); - } - Core.assets.unload("dp-" + asset.name); assets.remove(asset); + state.data.reloadAudio(); diag.rebuild(); }); }).size(h); diff --git a/core/src/mindustry/logic/GlobalVars.java b/core/src/mindustry/logic/GlobalVars.java index 5f1497c8bd..8e5a62dd70 100644 --- a/core/src/mindustry/logic/GlobalVars.java +++ b/core/src/mindustry/logic/GlobalVars.java @@ -38,8 +38,6 @@ public class GlobalVars{ private UnlockableContent[][] logicIdToContent; private int[][] contentIdToLogicId; - public static final Seq soundNames = new Seq<>(); - public void init(){ putEntryOnly("sectionProcessor"); @@ -101,7 +99,6 @@ public class GlobalVars{ for(Sound sound : Core.assets.getAll(Sound.class, new Seq<>(Sound.class))){ if(sound != Sounds.none && sound.file != null){ String name = sound.file.nameWithoutExtension(); - soundNames.add(name); put("@sfx-" + name, Sounds.getSoundId(sound)); } } @@ -303,6 +300,10 @@ public class GlobalVars{ } } + public void remove(String name){ + vars.remove(name); + } + public LVar put(String name, Object value){ return put(name, value, false); } diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index 8167c27f5d..ff887d3920 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -1,11 +1,13 @@ package mindustry.logic; import arc.*; +import arc.audio.*; import arc.func.*; import arc.graphics.*; import arc.scene.style.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.annotations.Annotations.*; @@ -2384,11 +2386,20 @@ public class LStatements{ table.button(b -> { b.image(Icon.pencilSmall); + Seq soundNames = new Seq<>(); + + for(var entry : Core.assets.getAllEntries(Sound.class, new Seq<>())){ + if(entry.value != Sounds.none && entry.value.file != null){ + soundNames.add(Strings.getFileNameWithoutExtension(entry.key)); + } + } + soundNames.sort(); + String soundName = id.startsWith("@sfx-") ? id.substring(5) : id; - b.clicked(() -> showSelect(b, GlobalVars.soundNames.toArray(String.class), soundName, t -> { + b.clicked(() -> showSelect(b, soundNames.toArray(String.class), soundName, t -> { id = "@sfx-" + t; build(table); - }, 2, cell -> cell.size(160, 50))); + }, 3, cell -> cell.size(170, 50))); }, Styles.logict, () -> {}).size(40).color(table.color).left().padLeft(-1); row(table); diff --git a/core/src/mindustry/mod/DataAudioLoader.java b/core/src/mindustry/mod/DataAudioLoader.java index 20a7daaa63..a020a62374 100644 --- a/core/src/mindustry/mod/DataAudioLoader.java +++ b/core/src/mindustry/mod/DataAudioLoader.java @@ -26,6 +26,7 @@ public class DataAudioLoader{ Log.warn("Duplicate audio file: " + asset.name); continue; } + Fi file = asset.getCacheFile(); Sound sound = Vars.headless || file == null ? new Sound() : Sound.createStream(file); loadedSounds.add(sound); @@ -34,6 +35,8 @@ public class DataAudioLoader{ if(Vars.headless || !Core.audio.initialized() || sound.file == null) continue; + Vars.logicVars.put("@sfx-" + prefix + asset.name, nextSoundId - 1, false); + Core.assets.addAsset(prefix + asset.name, Sound.class, sound); registered.add(prefix + asset.name); } @@ -66,6 +69,7 @@ public class DataAudioLoader{ if(!Vars.headless){ for(String reg : registered){ + Vars.logicVars.remove("@sfx-" + reg); try{ Core.assets.unload(reg); }catch(Exception ignored){ //unloading shouldn't throw an error, but ignore it just in case diff --git a/gradle.properties b/gradle.properties index 035ba4a875..1559f4bb58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=f229d1fb3f +archash=6aee8e7686