UNPKG

sound-manager

Version:
76 lines (66 loc) 1.71 kB
import { BaseNode, } from '../Node/BaseNode'; import { CollectionSubmanager, } from './CollectionSubmanager'; import { ICollectionSubmanager, } from './ICollectionSubmanager'; import { IPanelRegisterableNode, } from '../Node/IPanelRegisterableNode'; import { IManager, } from './IManager'; import { IManagerOptions, } from './IManagerOptions'; import { IPlayerSubmanager, } from './IPlayerSubmanager'; import { NodeTypes, } from '../enums/NodeTypes'; import { PlayerSubmanager, } from './PlayerSubmanager'; import { assertValid, } from 'ts-assertions'; export class Manager extends BaseNode implements IManager { get type(): NodeTypes.Manager { return NodeTypes.Manager; } public readonly collection: ICollectionSubmanager; public readonly player: IPlayerSubmanager; constructor(options?: IManagerOptions) { super({ ...options }); const { groups } = options || {}; this.collection = new CollectionSubmanager( { groups, getManagerVolume: () => this.getVolume(), }, ); this.player = new PlayerSubmanager( { getCollection: () => this.collection }, ); } public readonly setVolume = (value: number) => { super.setVolume(value); this.collection.updateAllAudioElementsVolume(); return this; }; public readonly volumePanelRegister = (node: IPanelRegisterableNode) => { assertValid<IPanelRegisterableNode>(node).panelRegister(); return this; }; public readonly volumePanelUnregister = (node: IPanelRegisterableNode) => { assertValid<IPanelRegisterableNode>(node).panelUnregister(); return this; }; }