@pixelation/engine
Version:
A simple pixel art game engine.
106 lines (105 loc) • 4.86 kB
TypeScript
import { Aseprite, AsepriteTagAnimationDirection } from "@pixelation/aseprite";
import { PackedColor } from "./colors";
import { Matrix3, Rect } from "./geometry";
import { DeltaTime } from "./lifecycle";
export type Surface = Screen | VirtualScreen;
export declare class Screen {
width: number;
height: number;
image: ImageData;
virtual: boolean;
canvas: HTMLCanvasElement;
context: CanvasRenderingContext2D;
constructor(width: number, height: number, image?: ImageData);
commit(): void;
clear(): void;
pixel(x: number, y: number, color: PackedColor): void;
pixelUnpacked(x: number, y: number, r: number, g: number, b: number, a: number): void;
blit(source: ImageData, x?: number, y?: number, transform?: Matrix3): void;
blitMask(source: ImageData, mask: ImageData, x?: number, y?: number, transform?: Matrix3): void;
line(x0: number, y0: number, x1: number, y1: number, color: PackedColor): void;
fillRect(sx: number, sy: number, sw: number, sh: number, color: PackedColor, transform?: Matrix3): void;
traceRect(sx: number, sy: number, sw: number, sh: number, color: PackedColor, transform?: Matrix3): void;
fillCirc(sx: number, sy: number, sr: number, color: PackedColor, transform?: Matrix3): void;
traceCirc(sx: number, sy: number, sr: number, color: PackedColor, transform?: Matrix3): void;
fillTri(sx0: number, sy0: number, sx1: number, sy1: number, sx2: number, sy2: number, color: PackedColor, transform?: Matrix3): void;
traceTri(sx0: number, sy0: number, sx1: number, sy1: number, sx2: number, sy2: number, color: PackedColor, transform?: Matrix3): void;
}
export declare class VirtualScreen {
width: number;
height: number;
image: ImageData;
virtual: boolean;
canvas: OffscreenCanvas;
context: OffscreenCanvasRenderingContext2D;
constructor(width: number, height: number, image?: ImageData);
commit(): void;
clear(): void;
pixel(x: number, y: number, color: PackedColor): void;
pixelUnpacked(x: number, y: number, r: number, g: number, b: number, a: number): void;
blit(source: ImageData, x?: number, y?: number, transform?: Matrix3): void;
blitMask(source: ImageData, mask: ImageData, x?: number, y?: number, transform?: Matrix3): void;
line(x0: number, y0: number, x1: number, y1: number, color: PackedColor): void;
fillRect(sx: number, sy: number, sw: number, sh: number, color: PackedColor, transform?: Matrix3): void;
traceRect(sx: number, sy: number, sw: number, sh: number, color: PackedColor, transform?: Matrix3): void;
fillCirc(sx: number, sy: number, sr: number, color: PackedColor, transform?: Matrix3): void;
traceCirc(sx: number, sy: number, sr: number, color: PackedColor, transform?: Matrix3): void;
fillTri(sx0: number, sy0: number, sx1: number, sy1: number, sx2: number, sy2: number, color: PackedColor, transform?: Matrix3): void;
traceTri(sx0: number, sy0: number, sx1: number, sy1: number, sx2: number, sy2: number, color: PackedColor, transform?: Matrix3): void;
}
export declare class Sprite {
asset: Aseprite;
frame: number;
subregion: Rect;
image: ImageData;
constructor(asset: Aseprite, frame?: number, subregion?: Rect);
static fromArrayBuffer(arrayBuffer: ArrayBuffer): Sprite;
get width(): number;
get height(): number;
update(): void;
render(screen: Surface, sx: number, sy: number, transform?: Matrix3): void;
}
export declare class AnimatedSprite extends Sprite {
asset: Aseprite;
frame: number;
subregion: Rect;
image: ImageData;
duration: number;
start: number;
end: number;
animation?: string;
direction: AsepriteTagAnimationDirection;
repeat: number;
iterations: number;
playing: boolean;
constructor(asset: Aseprite, frame?: number, subregion?: Rect);
static fromArrayBuffer(arrayBuffer: ArrayBuffer): AnimatedSprite;
get width(): number;
get height(): number;
pause(): void;
play(): void;
setAnimation(animation?: string): void;
update(dt?: DeltaTime): void;
}
export declare class SpriteSheet {
asset: Aseprite;
rows: number;
cols: number;
sprites: Sprite[];
constructor(asset: Aseprite);
static fromArrayBuffer(arrayBuffer: ArrayBuffer): SpriteSheet;
init(): void;
update(): void;
}
export declare class AnimatedSpriteSheet {
asset: Aseprite;
rows: number;
cols: number;
sprites: AnimatedSprite[];
static fromArrayBuffer(arrayBuffer: ArrayBuffer): AnimatedSpriteSheet;
constructor(asset: Aseprite);
init(): void;
update(dt?: DeltaTime): void;
}
export declare const blit: (source: ImageData, target: ImageData, x?: number, y?: number) => void;
export declare const blitMask: (source: ImageData, target: ImageData, mask: ImageData, x?: number, y?: number) => void;