From 4bcf70d4dc03f9e43b2f884b13d6ab28def01503 Mon Sep 17 00:00:00 2001 From: lieght <49651652+BAFGdeJong@users.noreply.github.com> Date: Mon, 13 Oct 2025 02:47:34 +0200 Subject: [PATCH] Removed ResourceManager from AudioManagers --- app/src/main/java/org/toop/Main.java | 27 +++++++++++-------- .../toop/framework/audio/MusicManager.java | 7 ++--- .../framework/audio/SoundEffectManager.java | 5 ++-- .../framework/resource/ResourceManager.java | 13 +++++++++ 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/toop/Main.java b/app/src/main/java/org/toop/Main.java index 987ae17..69b1b86 100644 --- a/app/src/main/java/org/toop/Main.java +++ b/app/src/main/java/org/toop/Main.java @@ -6,10 +6,12 @@ import org.toop.framework.networking.NetworkingClientManager; import org.toop.framework.networking.NetworkingInitializationException; import org.toop.framework.resource.ResourceLoader; import org.toop.framework.resource.ResourceManager; +import org.toop.framework.resource.ResourceMeta; import org.toop.framework.resource.resources.MusicAsset; import org.toop.framework.resource.resources.SoundEffectAsset; import java.util.Arrays; +import java.util.List; public final class Main { static void main(String[] args) { @@ -21,17 +23,20 @@ public final class Main { ResourceManager.loadAssets(new ResourceLoader("app/src/main/resources/assets")); new Thread(NetworkingClientManager::new).start(); new Thread(() -> { - MusicManager musicManager = new MusicManager<>(MusicAsset.class); - SoundEffectManager soundEffectManager = new SoundEffectManager<>(SoundEffectAsset.class); - new AudioEventListener<>( - musicManager, - soundEffectManager, - new AudioVolumeManager() - .registerManager(VolumeControl.MASTERVOLUME, musicManager) - .registerManager(VolumeControl.MASTERVOLUME, soundEffectManager) - .registerManager(VolumeControl.FX, soundEffectManager) - .registerManager(VolumeControl.MUSIC, musicManager) - ).initListeners("medium-button-click.wav"); + MusicManager musicManager = new MusicManager<>(ResourceManager.getAllOfTypeAndRemoveWrapper(MusicAsset.class)); + SoundEffectManager soundEffectManager = new SoundEffectManager<>(ResourceManager.getAllOfType(SoundEffectAsset.class)); + AudioVolumeManager audioVolumeManager = new AudioVolumeManager() + .registerManager(VolumeControl.MASTERVOLUME, musicManager) + .registerManager(VolumeControl.MASTERVOLUME, soundEffectManager) + .registerManager(VolumeControl.FX, soundEffectManager) + .registerManager(VolumeControl.MUSIC, musicManager); + + new AudioEventListener<>( + musicManager, + soundEffectManager, + audioVolumeManager + ).initListeners("medium-button-click.wav"); + }).start(); } } diff --git a/framework/src/main/java/org/toop/framework/audio/MusicManager.java b/framework/src/main/java/org/toop/framework/audio/MusicManager.java index 6060ed7..e426b14 100644 --- a/framework/src/main/java/org/toop/framework/audio/MusicManager.java +++ b/framework/src/main/java/org/toop/framework/audio/MusicManager.java @@ -20,12 +20,9 @@ public class MusicManager implements org.toop.framework private int playingIndex = 0; private boolean playing = false; - public MusicManager(Class type) { + public MusicManager(List resources) { this.dispatcher = new JavaFXDispatcher(); - this.resources = new ArrayList<>(ResourceManager.getAllOfType((Class) type) - .stream() - .map(e -> (T) e.getResource()) - .toList()); + this.resources = resources; createShuffled(); } diff --git a/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java b/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java index 7a2d0c5..e357aee 100644 --- a/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java +++ b/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java @@ -21,10 +21,9 @@ public class SoundEffectManager implements org.toop.fra private static final Logger logger = LogManager.getLogger(SoundEffectManager.class); private final HashMap soundEffectResources; - public SoundEffectManager(Class type){ + public SoundEffectManager(List> resources) { // If there are duplicates, takes discards the first - soundEffectResources = (HashMap) ResourceManager - .getAllOfType((Class) type) + this.soundEffectResources = (HashMap) resources .stream() .collect(Collectors. toMap(ResourceMeta::getName, ResourceMeta::getResource, (a, b) -> b, HashMap::new)); diff --git a/framework/src/main/java/org/toop/framework/resource/ResourceManager.java b/framework/src/main/java/org/toop/framework/resource/ResourceManager.java index eecada8..0a9668a 100644 --- a/framework/src/main/java/org/toop/framework/resource/ResourceManager.java +++ b/framework/src/main/java/org/toop/framework/resource/ResourceManager.java @@ -119,6 +119,19 @@ public class ResourceManager { return result; } + public static List getAllOfTypeAndRemoveWrapper(Class type) { + List result = new ArrayList<>(); + + for (ResourceMeta meta : assets.values()) { + BaseResource res = meta.getResource(); + if (type.isInstance(res)) { + result.add((T) res); + } + } + + return result; + } + /** * Retrieve an asset by its unique ID. *