UNPKG

@hiddentao/clockwork-engine

Version:

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

136 lines 5.18 kB
/** * Memory Rendering Layer * * Headless rendering implementation that tracks state without actual rendering. * Used for testing, replay validation, and server-side game logic. */ import type { RenderingLayer, ViewportOptions } from "../RenderingLayer"; import type { BlendMode, Color, NodeId, SpritesheetId, TextureFiltering, TextureId } from "../types"; interface GraphicsCommand { type: "rectangle" | "roundRect" | "circle" | "polygon" | "line" | "polyline"; data: any; } interface ViewportState { screenWidth: number; screenHeight: number; worldWidth?: number; worldHeight?: number; position: { x: number; y: number; }; zoom: number; options: ViewportOptions; } export declare class MemoryRenderingLayer implements RenderingLayer { private nextNodeId; private nextTextureId; private nextSpritesheetId; private nodes; private textures; private spritesheets; private tickCallbackManager; private tickerSpeed; private canvasSize; 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; 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; hasNode(id: NodeId): boolean; getChildren(id: NodeId): NodeId[]; getPosition(id: NodeId): { x: number; y: number; }; getRotation(id: NodeId): number; getScale(id: NodeId): { x: number; y: number; }; getAnchor(id: NodeId): { x: number; y: number; }; getAlpha(id: NodeId): number; getVisible(id: NodeId): boolean; getZIndex(id: NodeId): number; getTint(id: NodeId): Color | undefined; getBlendMode(id: NodeId): BlendMode | undefined; getTextureFiltering(id: NodeId): TextureFiltering | undefined; getSpriteTexture(id: NodeId): TextureId | undefined; getAnimationData(id: NodeId): { textures: TextureId[]; ticksPerFrame: number; loop: boolean; playing: boolean; }; isAnimationPlaying(id: NodeId): boolean; getGraphics(id: NodeId): GraphicsCommand[]; getViewportData(id: NodeId): ViewportState | undefined; getTickerSpeed(): number; getCanvasSize(): { width: number; height: number; }; tick(deltaTicks: number): void; } export {}; //# sourceMappingURL=MemoryRenderingLayer.d.ts.map