UNPKG

@maximeij/css-brickout

Version:

Classic Brickout Game Engine implemented in Typescript and rendered with CSS. No dependencies.

37 lines (36 loc) 1.62 kB
import { Brick, CompositeBrick, GameObject, Level, MovingGameObject, MovingGameObjectConfig, Paddle } from './'; export type BallConfig = Omit<MovingGameObjectConfig, 'elementId' | 'shape'> & { idx: number; radius: number; damage?: number; }; export declare class Ball extends MovingGameObject { destroyed: boolean; damage: number; antiJuggling: string | false; readonly dx: number; readonly dy: number; constructor({ idx, radius, movement, damage, ...objConfig }: BallConfig); setD(): void; /** * Detects collisions between this ball and the boundaries, level bricks, and paddle (in that order) * @param level The level with the bricks and strips * @param paddle The player's paddle * @returns true if the position has been updated already */ handleLevelCollision(level: Level, paddle: Paddle, frameFraction: number): boolean; handleBoundaryCollision(): true | undefined; resolveCollision(object: GameObject, frameFraction?: number): true | undefined; handleBrickCollision(brick: Brick, frameFraction?: number, composite?: CompositeBrick): true | undefined; handlePaddleCollision(paddle: Paddle, frameFraction?: number): true | undefined; isColliding(object: GameObject): boolean; processFrame(frameFraction?: number, level?: Level, paddle?: Paddle): void; dispatchCollisionEvent(object?: GameObject): void; destroy(forReal?: boolean): void; toString(): string; } export type BallDestroyedEvent = CustomEvent<Ball>; export type BallCollisionEvent = CustomEvent<{ ball: Ball; object?: GameObject; }>;