UNPKG

@drincs/pixi-vn

Version:

Pixi'VN is a npm package that provides various features for creating visual novels.

292 lines (281 loc) 10.4 kB
import { IMediaInstance as IMediaInstance$1, PlayOptions, Options, SoundLibrary, Sound, filters as filters$1 } from '@pixi/sound'; type IMediaInstance = Omit<IMediaInstance$1, "on" | "destroy" | "init" | "off" | "once" | "toString">; interface SoundOptions extends Omit<Options, "complete" | "loaded" | "sprites" | "source"> { } interface SoundPlayOptions extends Omit<PlayOptions, "complete" | "loaded"> { /** * The delay in seconds before playback becomes audible or resumes. If specified, the sound will be started immediately but delayed (for example, via pause/unpause) so that it is effectively heard only after the delay. If not specified, the sound will play without any additional delay. */ delay?: number; } interface SoundPlayOptionsWithChannel extends SoundPlayOptions { /** * The alias of the audio channel to play the sound on. If the channel does not exist, it will be created. * If not specified, the sound will be played on the default channel (see `SoundManagerInterface.defaultChannelAlias`). */ channel?: string; } interface ChannelOptions extends Pick<SoundPlayOptions, "filters" | "muted" | "volume"> { /** * Whether this channel is a background channel. * Background channels are special channels. Unlike normal channels, media connected to a background channel does not stop when a scene changes, but continues to play in the background. */ background?: boolean; } interface AudioChannelInterface { /** * The alias of the audio channel. This is used to reference the channel when playing sounds. The alias must be unique among all channels. */ readonly alias: string; /** * Plays a sound. * @param alias The media and sound (asset) alias reference. * @param options The options * @return The sound instance, * this cannot be reused after it is done playing. Returns a Promise if the sound * has not yet loaded. */ play(alias: string, options?: SoundPlayOptions): Promise<IMediaInstance>; /** * Plays a sound. * @param mediaAlias The media alias reference. * @param soundAlias The sound (asset) alias reference. * @param options The options * @return The sound instance, * this cannot be reused after it is done playing. Returns a Promise if the sound * has not yet loaded. */ play(mediaAlias: string, soundAlias: string, options?: SoundPlayOptions): Promise<IMediaInstance>; /** * The volume of the audio channel, between 0 and 1. This is multiplied with the volume of each sound played through this channel. */ volume: number; /** * Whether the audio channel is muted. This is combined with the muted state of each sound played through this channel. */ muted: boolean; /** * The MediaInstances currently playing through this channel. This is read-only and cannot be modified directly. Use the play method to add new MediaInstances to this channel. */ readonly mediaInstances: IMediaInstance[]; /** * Whether this channel is a background channel. * Background channels are special channels. Unlike normal channels, media connected to a background channel does not stop when a scene changes, but continues to play in the background. */ readonly background: boolean; /** * Stops all media currently playing through this channel. * @return Instance for chaining. */ stopAll(): this; /** * Pauses any playing sounds. * @return Instance for chaining. */ pauseAll(): this; /** * Resumes any sounds. * @return Instance for chaining. */ resumeAll(): this; /** * Toggle muted property for all sounds. * @return `true` if all sounds are muted. */ toggleMuteAll(): boolean; } type DistortionFilter = { type: "DistortionFilter"; amount?: number; }; type EqualizerFilter = { type: "EqualizerFilter"; f32?: number; f64?: number; f125?: number; f250?: number; f500?: number; f1k?: number; f2k?: number; f4k?: number; f8k?: number; f16k?: number; }; type MonoFilter = { type: "MonoFilter"; }; type ReverbFilter = { type: "ReverbFilter"; seconds?: number; decay?: number; reverse?: boolean; }; type StereoFilter = { type: "StereoFilter"; pan?: number; }; type StreamFilter = { type: "StreamFilter"; }; type TelephoneFilter = { type: "TelephoneFilter"; }; type SoundFilterMemory = DistortionFilter | EqualizerFilter | MonoFilter | ReverbFilter | StereoFilter | StreamFilter | TelephoneFilter; interface ExportedSound { options: SoundOptions; filters?: SoundFilterMemory[]; } interface SoundPlay { stepIndex: number; paused: boolean; options?: SoundPlayOptions | string; } interface ExportedSoundPlay extends SoundPlay { sound: ExportedSound; } /** * Interface exported sounds */ interface SoundGameState { filters?: SoundFilterMemory[]; /** * @deprecated */ soundsPlaying?: { [key: string]: ExportedSoundPlay; }; mediaInstances: { [key: string]: { channelAlias: string; soundAlias: string; stepCounter: number; options: Omit<SoundPlayOptions, "filters"> & { filters?: SoundFilterMemory[]; }; paused: boolean; }; }; } interface SoundManagerInterface extends Omit<SoundLibrary, "init" | "close" | "add" | "play" | "volume" | "speed" | "remove" | "exists" | "find" | "stop" | "pause" | "resume" | "pauseAll" | "resumeAll" | "muteAll" | "unmuteAll" | "stopAll" | "removeAll" | "togglePauseAll"> { /** * @deprecated You can define sound assets directly in `PIXI.Assets` */ add(alias: string, options: string): Sound; /** * Plays a sound. * @param alias The media and sound (asset) alias reference. * @param options The options * @return The sound instance, * this cannot be reused after it is done playing. Returns a Promise if the sound * has not yet loaded. */ play(alias: string, options?: SoundPlayOptionsWithChannel): Promise<IMediaInstance>; play(mediaAlias: string, soundAlias: string, options?: SoundPlayOptionsWithChannel): Promise<IMediaInstance>; /** * Find a media by alias. * @param alias - The media alias reference. * @return Media object. */ find(alias: string): IMediaInstance | undefined; /** * Stops a media and removes it from the manager. * @param alias - The media alias reference. */ stop(alias: string): void; /** * Pauses a media. * @param alias - The media alias reference. * @return Media object. */ pause(alias: string): IMediaInstance | undefined; /** * Resumes a media. * @param alias - The media alias reference. * @return Media object. */ resume(alias: string): IMediaInstance | undefined; /** * Edits the options of an existing sound (asset). * If the asset is not yet loaded, it will be loaded with the new options. */ edit(alias: string, options: SoundOptions): Promise<void>; /** * Pauses any playing sounds. * @return Instance for chaining. */ pauseAll(): this; /** * Resumes any sounds. * @return Instance for chaining. */ resumeAll(): this; /** * Mutes all playing sounds. * @return Instance for chaining. */ muteAll(): this; /** * Unmutes all playing sounds. * @return Instance for chaining. */ unmuteAll(): this; /** * Stops all sounds. * @return Instance for chaining. */ stopAll(): this; load(alias: string | string[]): Promise<void>; backgroundLoad(alias: string | string[]): Promise<void>; backgroundLoadBundle(alias: string): Promise<void>; clear(): void; /** * Adds a new audio channel with the specified alias(es). * @param alias The alias or aliases for the new channel. * @returns The created AudioChannelInterface instance, or undefined if a channel with the alias already exists. */ addChannel(alias: string | string[], options?: ChannelOptions): AudioChannelInterface | undefined; /** * Finds and returns the audio channel associated with the given alias. If the channel does not exist, it will be created. * @param alias The alias of the audio channel to find. * @returns The AudioChannelInterface instance associated with the alias. */ findChannel(alias: string): AudioChannelInterface; /** * Returns an array of all existing audio channels. */ readonly channels: AudioChannelInterface[]; /** * The default channel alias to use when playing a sound without specifying a channel. * By default, this is set to `GENERAL_CHANNEL` ("general"), but it can be changed to any string; if the channel does not yet exist, it will be created on demand when used. */ defaultChannelAlias: string; export(): SoundGameState; restore(data: object): Promise<void>; } declare const filters: { DistortionFilter: typeof filters$1.DistortionFilter; EqualizerFilter: typeof filters$1.EqualizerFilter; MonoFilter: typeof filters$1.MonoFilter; ReverbFilter: typeof filters$1.ReverbFilter; StereoFilter: typeof filters$1.StereoFilter; StreamFilter: typeof filters$1.StreamFilter; TelephoneFilter: typeof filters$1.TelephoneFilter; }; declare class SoundManagerStatic { private constructor(); static mediaInstances: { [alias: string]: { channelAlias: string; soundAlias: string; instance: IMediaInstance; stepCounter: number; options: SoundPlayOptions; }; }; static channels: { [alias: string]: AudioChannelInterface; }; static delayTimeoutInstances: [number | NodeJS.Timeout, string][]; } declare const sound: SoundManagerInterface; export { type AudioChannelInterface, type ChannelOptions, type ExportedSound, type ExportedSoundPlay, type IMediaInstance, type SoundFilterMemory, type SoundGameState, SoundManagerStatic, type SoundOptions, type SoundPlay, type SoundPlayOptions, type SoundPlayOptionsWithChannel, filters, sound };