22 package com.realtime.crossfire.jxclient.sound;
25 import java.util.concurrent.ExecutorService;
26 import java.util.concurrent.Executors;
27 import javax.sound.sampled.DataLine;
28 import org.jetbrains.annotations.NotNull;
29 import org.jetbrains.annotations.Nullable;
57 clipCache =
new ClipCache(audioFileLoader, debugSound);
65 public void play(@Nullable
final String name, @NotNull
final String action) {
66 final DataLine clip = clipCache.
allocateClip(name, action);
71 executorService.execute(() -> {
89 executorService.shutdownNow();
Allocates new sound clips.
ClipManager(@NotNull final AudioFileLoader audioFileLoader, @Nullable final DebugWriter debugSound)
Creates a new instance.
DataLine allocateClip(@Nullable final String name, @NotNull final String action)
Allocates a new clip.
void shutdown()
Terminates all running clips and free resources.
Writer debug information to a log file.
void play(@Nullable final String name, @NotNull final String action)
Plays the given sound effect.
final ClipCache clipCache
The clip cache used to allocate new clips.
Manages a set of sound clips (short sound effects).
final ExecutorService executorService
The executor service used to play sound clips.
void freeClip(@NotNull final Line clip)
Deallocates a clip.