// @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 { } } }