@maximeij/css-brickout
Version:
Classic Brickout Game Engine implemented in Typescript and rendered with CSS. No dependencies.
92 lines (91 loc) • 2.85 kB
TypeScript
import { Ball, BallConfig, Clickable, Controls, Debug, HUD, Level, LevelConfig, Paddle, PaddleConfig, Pause, Responsive } from './';
type GameOptions = {
fps: number;
capFps: boolean;
allowDebug: boolean;
nextLifeDelayMs: number;
mouseoutPauseDelayMs: number;
mouseoverResumeDelayMs: number;
showCursorInPlay: boolean;
demoMode: boolean;
updatesPerFrame: number;
skipDefaultRules: boolean;
columnAspectRatio: number;
};
export type GameParams = {
ballConfigs: Array<Omit<BallConfig, 'idx' | 'game'>>;
levelConfig: Omit<LevelConfig, 'game'>;
paddleConfig: Partial<PaddleConfig>;
playerConfig?: PlayerParams;
parentId?: string;
options?: Partial<GameOptions>;
};
type PlayerParams = {
lives: number;
score?: number;
};
type State = 'paused' | 'playing' | 'debug' | 'won' | 'lost' | 'away' | 'starting';
export declare class Game implements Responsive {
element: HTMLDivElement;
sizes: {
width: number;
height: number;
};
state: State;
debounceTimer: NodeJS.Timeout | undefined;
ogParams: GameParams;
debug: Debug | null;
lastFrameTime: number;
lastFpsUpdate: number;
options: GameOptions;
_speed: number;
fpsInterval: number;
fpsCap: number;
msSinceStart: number;
balls: Ball[];
level: Level;
paddle: Paddle;
hud: HUD | null;
controls: Controls | null;
lives: number;
score: number;
paused: Pause | null;
resumeLink: Clickable | null;
constructor(params: GameParams);
setBalls: () => void;
debounce: (func: () => void, timeout?: number) => () => void;
start: () => void;
get speed(): number;
set speed(speed: number);
/**
* @deprecated Set speed instead
*/
setOverallSpeed: (speed: number) => void;
update: () => void;
handleBallLost: EventListener;
handleBrickDestroyed: EventListener;
win: () => void;
updateHUDLives: () => void;
updateHUDScore: () => void;
updateHUDTime: () => void;
toggleDebug: () => void;
toggleFullscreen: () => Promise<void>;
togglePause: () => void;
updateSizes: (callResize?: boolean) => boolean;
handleResize: () => void;
handleVisibilityChange: () => void;
handleKeyPress: (e: KeyboardEvent) => void;
handleMouseEnter: () => void;
handleMouseLeave: () => void;
createdPausedElement: (content: string, classes?: string) => void;
pause: (to?: State) => void;
resume: (from?: State) => void;
dispatchGameEvent: (name: string) => void;
destroy: () => void;
}
export type GamePausedEvent = CustomEvent<Game>;
export type GameResumedEvent = CustomEvent<Game>;
export type GameLostEvent = CustomEvent<Game>;
export type GameStartedEvent = CustomEvent<Game>;
export type GameWonEvent = CustomEvent<Game>;
export {};