UNPKG

@davidmorgan/nes-vue

Version:

依据于nes-js项目,使用vue3 版本重写了Nes模拟器。

164 lines (152 loc) 4.4 kB
import { ComponentOptionsMixin } from 'vue'; import { ComponentProvideOptions } from 'vue'; import { DefineComponent } from 'vue'; import { Directive } from 'vue'; import { NESInstance } from 'jsnes'; import { PublicProps } from 'vue'; export declare interface Controller { UP: string; DOWN: string; LEFT: string; RIGHT: string; A: string; B: string; C: string; D: string; SELECT: string; START: string; } declare interface Controller_2 { UP: string DOWN: string LEFT: string RIGHT: string A: string B: string C: string D: string SELECT: string START: string } declare type ControllerKey = keyof Controller_2 export declare interface EmitErrorObj { code: number; message: string; } export declare const nes: NESInstance; export declare const NesVue: DefineComponent<{ url: string; autoStart?: boolean; width?: number | string; height?: number | string; label?: string; gain?: number; noClip?: boolean; storage?: boolean; debugger?: boolean; turbo?: number; dbName?: string; p1?: Partial<Controller>; p2?: Partial<Controller>; }, { start: (url?: string) => void; reset: () => void; stop: () => void; pause: () => void; play: () => void; save: (id: string) => boolean | undefined; load: (id: string) => boolean | undefined; remove: (id: string) => void; clear: () => void; screenshot: (download?: boolean, imageName?: string) => HTMLImageElement | undefined; fm2URL: (url: string, fix?: number) => Promise<() => void>; fm2Text: (text: string, fix?: number) => Promise<() => void>; fm2Play: () => void; fm2Stop: () => void; cheatCode: (code: string) => void; cancelCheatCode: (code: string) => void; cancelCheatCodeAll: () => void; }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & { success: () => any; error: (error: EmitErrorObj) => any; fps: (fps: number) => any; saved: (saved: SavedOrLoaded) => any; loaded: (loaded: SavedOrLoaded) => any; "update:url": (path: string) => any; removed: (id: string) => any; }, string, PublicProps, Readonly<{ url: string; autoStart?: boolean; width?: number | string; height?: number | string; label?: string; gain?: number; noClip?: boolean; storage?: boolean; debugger?: boolean; turbo?: number; dbName?: string; p1?: Partial<Controller>; p2?: Partial<Controller>; }> & Readonly<{ onSuccess?: (() => any) | undefined; onError?: ((error: EmitErrorObj) => any) | undefined; onFps?: ((fps: number) => any) | undefined; onSaved?: ((saved: SavedOrLoaded) => any) | undefined; onLoaded?: ((loaded: SavedOrLoaded) => any) | undefined; "onUpdate:url"?: ((path: string) => any) | undefined; onRemoved?: ((id: string) => any) | undefined; }>, { p1: Partial<Controller>; p2: Partial<Controller>; height: number | string; width: number | string; label: string; storage: boolean; autoStart: boolean; gain: number; noClip: boolean; debugger: boolean; turbo: number; dbName: string; }, {}, {}, {}, string, ComponentProvideOptions, false, { cvs: HTMLCanvasElement; }, HTMLDivElement>; export declare type NesVueInstance = InstanceType<typeof NesVue>; export declare interface NesVueProps { url: string; autoStart?: boolean; width?: number | string; height?: number | string; label?: string; gain?: number; clip?: boolean; storage?: boolean; debugger?: boolean; turbo?: number; p1?: Partial<Controller>; p2?: Partial<Controller>; } export declare interface SavedOrLoaded { id: string; message: string; target: 'indexedDB' | 'localStorage'; } /** * v-gamepad directive * @example * ```vue * <script setup> * import { NesVue, vGamepad } from '@davidmorgan/nes-vue' * </script> * * <template> * <nes-vue * url="https://micromatrix.org/nes-vue/Super Mario Bros (JU).nes" * /> * <button v-gamepad="'RIGHT'">RIGHT</button> * </template> * ``` */ export declare const vGamepad: Directive<HTMLElement, ControllerKey | ControllerKey[]>; export { }