40 lines
977 B
TypeScript
40 lines
977 B
TypeScript
import { EngineComponent } from '..';
|
|
import { EngineEvents } from '../types/events';
|
|
import { GameRunner } from '../types/game-runner';
|
|
import { EventEmitter, EventMap } from '../utils/events';
|
|
import { Renderer } from './renderer';
|
|
|
|
export class Engine<
|
|
TEvents extends EventMap = EngineEvents
|
|
> extends GameRunner {
|
|
public lastTick = performance.now();
|
|
public running = false;
|
|
public events = new EventEmitter<TEvents>();
|
|
public render!: Renderer;
|
|
public element!: HTMLElement;
|
|
public components: EngineComponent[] = [];
|
|
|
|
mount(element: HTMLElement): void {
|
|
this.element = element;
|
|
this.render = new Renderer(element);
|
|
|
|
for (const component of this.components) {
|
|
component.initialize();
|
|
}
|
|
|
|
this.start();
|
|
}
|
|
|
|
loop(now: number): void {
|
|
throw new Error('Method not implemented.');
|
|
}
|
|
|
|
start(): void {
|
|
throw new Error('Method not implemented.');
|
|
}
|
|
|
|
stop(): void {
|
|
throw new Error('Method not implemented.');
|
|
}
|
|
}
|