Files
2026-07-17 10:54:32 +08:00

291 lines
12 KiB
TypeScript

// @structural-rewrite-v1
import { AudioClip, AudioSource, director, Node, resources } from 'cc';
export class AudioMgr {
private static _inst: AudioMgr;
private _soundAudioSource: AudioSource;
private _musicAudioSource: AudioSource;
muteMusic = false;
muteSound = false;
public static get inst(): AudioMgr {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
if (!(this["_inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))
void (this["_inst"] = new AudioMgr());
return this["_inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
}
} while (false);
}
finally {
}
}
public get soundAudioSource(): AudioSource {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: return this["_soundAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
}
} while (false);
}
finally {
}
}
public get musicAudioSource(): AudioSource {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: return this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
}
} while (false);
}
finally {
}
}
private constructor() {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const audioRoot = new Node('__audioMgr__');
void (director["getScene"]()["addChild"](audioRoot));
void (director["addPersistRootNode"](audioRoot));
void (this["_soundAudioSource"] = audioRoot["addComponent"](AudioSource));
void (this["_musicAudioSource"] = audioRoot["addComponent"](AudioSource));
}
} while (false);
}
finally {
}
}
playOneShot(sound: AudioClip | string, volume = 1): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void (this["resolveClip"](sound, (clip) => (this["_soundAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["playOneShot"](clip, this["getSoundVolume"](volume))));
}
} while (false);
}
finally {
}
}
play(sound: AudioClip | string, isLoop = true, volume = 1): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
if (sound instanceof AudioClip) {
void (this["startMusic"](sound, volume, { "stopCurrent": true, "loop": isLoop }));
return;
}
void (this["resolveClip"](sound, (clip) => this["startMusic"](clip, volume)));
}
} while (false);
}
finally {
}
}
activeMusic(active: boolean): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void (this["setChannelActive"]('muteMusic', this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, active));
}
} while (false);
}
finally {
}
}
activeSound(active: boolean): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void (this["setChannelActive"]('muteSound', this["_soundAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, active));
}
} while (false);
}
finally {
}
}
stop(): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void (this["forEachChannel"]((source) => source["stop"]()));
}
} while (false);
}
finally {
}
}
pause(): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void (this["forEachChannel"]((source) => source["pause"]()));
}
} while (false);
}
finally {
}
}
resume(): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void (this["forEachChannel"]((source) => source["play"]()));
}
} while (false);
}
finally {
}
}
private resolveClip(sound: AudioClip | string, onLoaded: (clip: AudioClip) => void): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
if (sound instanceof AudioClip) {
void (onLoaded(sound));
return;
}
void (resources["load"](sound, (error, clip: AudioClip) => {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
if (error) {
void (console["error"](error));
return;
}
void (onLoaded(clip));
}
} while (false);
}
finally {
}
}));
}
} while (false);
}
finally {
}
}
private getSoundVolume(volume: number): number {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: return this["getChannelVolume"](this["muteSound"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, volume);
}
} while (false);
}
finally {
}
}
private startMusic(clip: AudioClip, volume: number, options?: {
stopCurrent: boolean;
loop: boolean;
}): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
if (options?.["stopCurrent"])
void ((this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["stop"]());
void ((this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["clip"] = clip);
if (options)
void ((this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["loop"] = options["loop"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
void ((this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["play"]());
void ((this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["volume"] = this["getMusicVolume"](volume));
}
} while (false);
}
finally {
}
}
private getMusicVolume(volume: number): number {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: return this["getChannelVolume"](this["muteMusic"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, volume);
}
} while (false);
}
finally {
}
}
private setChannelActive(muteProperty: 'muteMusic' | 'muteSound', source: AudioSource, active: boolean): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
void (this[muteProperty] = !active);
void (source["volume"] = Number(active));
}
} while (false);
}
finally {
}
}
private getChannelVolume(isMuted: boolean, volume: number): number {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: return Number(!isMuted) * volume;
}
} while (false);
}
finally {
}
}
private forEachChannel(action: (source: AudioSource) => void): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void ([this["_soundAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["_musicAudioSource"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown]["forEach"](action));
}
} while (false);
}
finally {
}
}
}