mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
40 lines
899 B
TypeScript
40 lines
899 B
TypeScript
import { AudioSink } from "./audiosink";
|
|
|
|
export abstract class AudioSource {
|
|
#connectedTo: AudioSink[] = [];
|
|
#name = "";
|
|
#playing = false;
|
|
|
|
connect(sink: AudioSink) {
|
|
this.getNode().connect(sink.getNode());
|
|
this.#connectedTo.push(sink);
|
|
document.dispatchEvent(new CustomEvent("audioSourcesUpdated"));
|
|
}
|
|
|
|
disconnect(sinkToDisconnect?: AudioSink) {
|
|
if (sinkToDisconnect !== undefined) {
|
|
this.getNode().disconnect(sinkToDisconnect.getNode());
|
|
this.#connectedTo = this.#connectedTo.filter((sink) => sink != sinkToDisconnect);
|
|
} else {
|
|
this.getNode().disconnect();
|
|
}
|
|
|
|
document.dispatchEvent(new CustomEvent("audioSourcesUpdated"));
|
|
}
|
|
|
|
setName(name) {
|
|
this.#name = name;
|
|
}
|
|
|
|
getName() {
|
|
return this.#name;
|
|
}
|
|
|
|
getConnectedTo() {
|
|
return this.#connectedTo;
|
|
}
|
|
|
|
abstract play(): void;
|
|
abstract getNode(): AudioNode;
|
|
}
|