UNPKG

@hiddentao/clockwork-engine

Version:

A TypeScript/PIXI.js game engine for deterministic, replayable games with built-in rendering

95 lines 3.82 kB
/** * Rendering Layer Interface * * Platform-agnostic rendering abstraction that wraps rendering engines * like PIXI.js, Canvas2D, or provides headless implementations. */ import type { BlendMode, Color, NodeId, SpritesheetId, TextureFiltering, TextureId } from "./types"; /** * Viewport configuration options */ export interface ViewportOptions { screenWidth: number; screenHeight: number; worldWidth?: number; worldHeight?: number; enableDrag?: boolean; enableZoom?: boolean; enablePinch?: boolean; clampWheel?: boolean; minScale?: number; maxScale?: number; } /** * Main rendering layer interface */ export interface RenderingLayer { createNode(): NodeId; destroyNode(id: NodeId): void; addChild(parent: NodeId, child: NodeId): void; removeChild(parent: NodeId, child: NodeId): void; setPosition(id: NodeId, x: number, y: number): void; setRotation(id: NodeId, radians: number): void; setScale(id: NodeId, scaleX: number, scaleY: number): void; setAnchor(id: NodeId, anchorX: number, anchorY: number): void; setAlpha(id: NodeId, alpha: number): void; setVisible(id: NodeId, visible: boolean): void; setZIndex(id: NodeId, z: number): void; getRotation(id: NodeId): number; getScale(id: NodeId): { x: number; y: number; }; setSize(id: NodeId, width: number, height: number): void; getSize(id: NodeId): { width: number; height: number; }; setTint(id: NodeId, color: Color): void; setBlendMode(id: NodeId, mode: BlendMode): void; setTextureFiltering(id: NodeId, filtering: TextureFiltering): void; getBounds(id: NodeId): { x: number; y: number; width: number; height: number; }; setSprite(id: NodeId, textureId: TextureId): void; setAnimatedSprite(id: NodeId, textureIds: TextureId[], ticksPerFrame: number): void; playAnimation(id: NodeId, loop: boolean): void; stopAnimation(id: NodeId): void; setAnimationCompleteCallback(id: NodeId, callback: ((id: NodeId) => void) | null): void; drawRectangle(id: NodeId, x: number, y: number, w: number, h: number, fill?: Color, stroke?: Color, strokeWidth?: number): void; drawCircle(id: NodeId, x: number, y: number, radius: number, fill?: Color, stroke?: Color, strokeWidth?: number): void; drawPolygon(id: NodeId, points: number[], fill?: Color, stroke?: Color, strokeWidth?: number): void; drawRoundRect(id: NodeId, x: number, y: number, w: number, h: number, radius: number, fill?: Color, stroke?: Color, strokeWidth?: number): void; drawLine(id: NodeId, x1: number, y1: number, x2: number, y2: number, color: Color, width?: number): void; drawPolyline(id: NodeId, points: number[], color: Color, width?: number): void; clearGraphics(id: NodeId): void; loadTexture(url: string): Promise<TextureId>; loadSpritesheet(imageUrl: string, jsonData: any): Promise<SpritesheetId>; getTexture(spritesheet: SpritesheetId, frameName: string): TextureId | null; setViewport(id: NodeId, options: ViewportOptions): void; getViewportPosition(id: NodeId): { x: number; y: number; }; setViewportPosition(id: NodeId, x: number, y: number): void; setViewportZoom(id: NodeId, zoom: number): void; getViewportZoom(id: NodeId): number; worldToScreen(id: NodeId, x: number, y: number): { x: number; y: number; }; screenToWorld(id: NodeId, x: number, y: number): { x: number; y: number; }; onTick(callback: (deltaTicks: number) => void): void; setTickerSpeed(speed: number): void; getFPS(): number; render(): void; resize(width: number, height: number): void; destroy(): void; } //# sourceMappingURL=RenderingLayer.d.ts.map