@davidmorgan/nes-vue
Version:
依据于nes-js项目,使用vue3 版本重写了Nes模拟器。
164 lines (152 loc) • 4.4 kB
TypeScript
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 { }