UNPKG

@maximeij/css-brickout

Version:

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

92 lines (91 loc) 2.92 kB
import { BoundingBox, Vector } from '../util'; import { Game } from './Game'; import { Responsive } from './Responsive'; export type GameObjectConfig = Vector & { game: Game; parent?: Responsive; elementId?: string; className?: string; width?: number; height?: number; angle?: number; startingBonuses?: Array<BonusConfig>; showTitle?: boolean; permanent?: boolean; shape?: 'circle' | 'rectangle'; }; export type PartialGameObjectConfig = Required<Pick<GameObjectConfig, 'game'>> & Partial<GameObjectConfig>; export type BonusConfig = { cssClass: string; duration: number; effect: (object: GameObject) => (object: GameObject) => void; }; type StyleKey = 'top' | 'left' | 'transform'; export declare class GameObject { x: number; y: number; width: number; height: number; area: number; private _angle; bonuses: Array<BonusConfig>; element: HTMLDivElement; game: Game; parent: Responsive; boundingBox: BoundingBox; permanent: boolean; shape: string; radius: number; rx: number; constructor({ game, parent, elementId, className, x, y, width, height, angle, startingBonuses, showTitle, permanent, shape, ...rest }: GameObjectConfig); get angle(): number; set angle(angle: number); updateCircleShape(): void; updateElementSize(): void; updateElement(): void; updateTitle(): void; applyBonuses(): void; updatePosition(x?: number, y?: number): void; updateBoundingBox(): void; updateElementPosition(): void; setStyle(style: StyleKey, value: string): void; setContent(content: string): void; emitParticles(count: number, classNames?: Array<string>, recycleCondition?: 'animationend' | 'transitionend' | number, inheriteSize?: boolean): Array<HTMLElement>; destroy(): void; toString(): string; } export type MovementProps = { angle: number; speed: number; }; export type TurnStep = { movement: MovementProps; condition?: (mgo: MovingGameObject) => boolean; }; export type MovingGameObjectConfig = GameObjectConfig & { movement?: MovementProps | Array<TurnStep>; syncAngles?: boolean; }; export declare class MovingGameObject extends GameObject { private _speed; private _movementAngle; turnSteps: Array<TurnStep>; dx: number; dy: number; active: boolean; syncAngles: boolean; get fx(): number; get fy(): number; get speed(): number; set speed(speed: number); get movementAngle(): number; set movementAngle(angle: number); get movement(): MovementProps; set movement(movementConfig: MovingGameObjectConfig['movement']); constructor({ movement, syncAngles, ...rest }: MovingGameObjectConfig); updatePosition(x?: number, y?: number, fraction?: number): void; setD(): void; processFrame(frameFraction?: number): void; toString(): string; } export {};