Eustia/project/types/plugin.d.ts

192 lines
4.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 这里包含所有插件导出的函数及变量声明声明的函数会在类型标注中标注到core上
interface PluginDeclaration {
/**
* 添加函数 例添加弹出文字像这个就可以使用core.addPop或core.plugin.addPop调用
* @param px 弹出的横坐标
* @param py 弹出的纵坐标
* @param value 弹出的文字
*/
addPop(px: number, py: number, value: string): void;
/**
* 添加变量 例所有的正在弹出的文字像这个就可以使用core.plugin.pop获取
*/
pop: any[];
}
type Forward<T> = {
[K in keyof T as T[K] extends Function
? K extends `_${string}`
? never
: K
: never]: T[K];
};
type ForwardKeys<T> = keyof Forward<T>;
type SpriteMouseEvent = (px: number, py: number) => void;
type SpritKeyEvent = (
key: string,
keyCode: number,
altKey: boolean,
ctrlKey: boolean,
shiftKey: boolean
) => void;
type SpriteWheelEvent = (
deltaY: number,
deltaX: number,
deltaZ: number
) => void;
type SpriteTouchEvent = (...locs: [number, number][]) => void;
interface SpriteEvent {
click: SpriteMouseEvent;
mousedown: SpriteMouseEvent;
mouseup: SpriteMouseEvent;
mouseenter: SpriteMouseEvent;
mouseleave: SpriteMouseEvent;
mousemove: SpriteMouseEvent;
keydown: SpritKeyEvent;
keyup: SpritKeyEvent;
keypress: SpritKeyEvent;
wheel: SpriteWheelEvent;
touchstart: SpriteTouchEvent;
touchend: SpriteTouchEvent;
touchmove: SpriteTouchEvent;
touchcancel: SpriteTouchEvent;
}
declare class Sprite {
/**
* 递增的sprite标识符
*/
static count: number;
/**
* sprite的左上角横坐标
*/
x: number;
/**
* sprite的左上角纵坐标
*/
y: number;
/**
* sprite的宽度
*/
width: number;
/**
* sprite的高度
*/
height: number;
/**
* sprite的纵深
*/
zIndex: number;
/**
* sprite的相对模式相对游戏还是相对窗口
*/
reference: 'game' | 'window';
/**
* sprite的canvas元素
*/
canvas: HTMLCanvasElement;
/**
* sprite的context
*/
context: CanvasRenderingContext2D;
/**
* sprite的名称
*/
name: string;
/**
* spirte的唯一标识符
*/
readonly count: number;
/**
* 创建一个sprite画布
* @param reference 参考系,游戏画面或者窗口
* @param name 可选sprite的名称方便通过core.dymCanvas获取
*/
constructor(
x: number,
y: number,
w: number,
h: number,
z: number,
reference?: 'game' | 'window',
name?: string
);
/**
* 初始化
*/
init(): void;
/**
* @deprecated
* 设置css特效使用css()代替
*/
setCss(css: string): Sprite;
/**
* 设置css特效
*/
css(css: string): Sprite;
/**
* 移动sprite
* @param isDelta 是否是相对位置如果是那么sprite会相对于原先的位置进行移动
*/
move(x: number, y: number, isDelta?: boolean): Sprite;
/**
* 重新设置sprite的大小
* @param {boolean} styleOnly 是否只修改css效果如果是那么将会不高清如果不是那么会清空画布
*/
resize(w: number, h: number, styleOnly?: boolean): Sprite;
/**
* 旋转画布
*/
rotate(angle: number, cx?: number, cy?: number): Sprite;
/**
* 擦除画布
*/
clear(x?: number, y?: number, w?: number, h?: number): Sprite;
/**
* 删除
*/
destroy(): void;
/**
* 监听事件与registerAction类似
*/
on<K extends keyof SpriteEvent>(type: K, handler: SpriteEvent[K]): void;
/**
* 添加事件监听器
*/
addEventListener: HTMLCanvasElement['addEventListener'];
/**
* 删除事件监听器
*/
removeEventListenr: HTMLCanvasElement['removeEventListener'];
}