From 72c6c7de12e9833f52bf2d0718d70f044f8ab57e Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Thu, 20 Jul 2023 20:47:32 -0700 Subject: a bit of refactoring; importing engine into bun for server --- engine/entities/Entity.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 engine/entities/Entity.ts (limited to 'engine/entities/Entity.ts') diff --git a/engine/entities/Entity.ts b/engine/entities/Entity.ts new file mode 100644 index 0000000..e57ccde --- /dev/null +++ b/engine/entities/Entity.ts @@ -0,0 +1,33 @@ +import type { Component } from "../components"; +import { ComponentNotFoundError } from "../exceptions"; + +export abstract class Entity { + private static ID = 0; + + public readonly id: number; + public readonly components: Map; + + constructor() { + this.id = Entity.ID++; + this.components = new Map(); + } + + public addComponent(component: Component) { + this.components.set(component.name, component); + } + + public getComponent(name: string): T { + if (!this.hasComponent(name)) { + throw new Error("Entity does not have component " + name); + } + return this.components.get(name) as T; + } + + public getComponents(): Component[] { + return Array.from(this.components.values()); + } + + public hasComponent(name: string): boolean { + return this.components.has(name); + } +} -- cgit v1.2.3-70-g09d2