narraleaf-react
Version:
A React visual novel player framework
51 lines (50 loc) • 1.83 kB
TypeScript
import { Sound, SoundType } from "../../nlcore/elements/sound";
import { FadeOptions } from "../../nlcore/elements/type";
import { Awaitable } from "../../../util/data";
import { GameState } from "../gameState";
import { LogicAction } from "../../nlcore/action/logicAction";
export type AudioDataRaw = {
isPlaying: boolean;
position: number;
};
export type AudioManagerDataRaw = {
sounds: [string, AudioDataRaw][];
groups: [SoundType, number][];
};
export declare class AudioManager {
private gameState;
private state;
private tasks;
private groups;
constructor(gameState: GameState);
play(sound: Sound, options?: FadeOptions): Awaitable<void>;
stop(sound: Sound, duration?: number): Awaitable<void>;
setVolume(sound: Sound, volume: number, duration?: number): Awaitable<void>;
pause(sound: Sound, duration?: number): Awaitable<void>;
resume(sound: Sound, duration?: number): Awaitable<void>;
setRate(sound: Sound, rate: number): Awaitable<void>;
getPosition(sound: Sound): number;
isPlaying(sound: Sound): boolean;
toData(): AudioManagerDataRaw;
fromData(data: AudioManagerDataRaw, elementMap: Map<string, LogicAction.GameElement>): this;
soundFromData(sound: Sound, data: AudioDataRaw): void;
isManaged(sound: Sound): boolean;
reset(): void;
setGroupVolume(type: SoundType, volume: number): void;
setGlobalVolume(volume: number): void;
getGlobalVolume(): number;
getGroupVolume(type: SoundType): number;
private setupGroupVolume;
private initSound;
private pushTask;
private getState;
private abortTask;
private fadeTo;
private stopSound;
private pauseSound;
private resumeSound;
private getHowlConfig;
private createTask;
private wrapTask;
private applyEffectiveVolume;
}