diff options
Diffstat (limited to 'src/engine/components')
-rw-r--r-- | src/engine/components/Colliding.ts | 8 | ||||
-rw-r--r-- | src/engine/components/ComponentNames.ts | 1 | ||||
-rw-r--r-- | src/engine/components/Life.ts | 11 | ||||
-rw-r--r-- | src/engine/components/Sprite.ts | 7 | ||||
-rw-r--r-- | src/engine/components/index.ts | 1 |
5 files changed, 26 insertions, 2 deletions
diff --git a/src/engine/components/Colliding.ts b/src/engine/components/Colliding.ts index 4027c3d..fe782df 100644 --- a/src/engine/components/Colliding.ts +++ b/src/engine/components/Colliding.ts @@ -1,7 +1,13 @@ import { Component, ComponentNames } from "."; +import { Game } from ".."; +import { Entity } from "../entities"; export class Colliding extends Component { - constructor() { + public onCollision?: (game: Game, entity: Entity) => void; + + constructor(onCollision?: (game: Game, entity: Entity) => void) { super(ComponentNames.Colliding); + + this.onCollision = onCollision; } } diff --git a/src/engine/components/ComponentNames.ts b/src/engine/components/ComponentNames.ts index a9f0c15..dd50fb3 100644 --- a/src/engine/components/ComponentNames.ts +++ b/src/engine/components/ComponentNames.ts @@ -11,4 +11,5 @@ export namespace ComponentNames { export const GridSpawn = "GridSpawn"; export const Text = "Text"; export const LambdaTerm = "LambdaTerm"; + export const Life = "Life"; } diff --git a/src/engine/components/Life.ts b/src/engine/components/Life.ts new file mode 100644 index 0000000..6e6d278 --- /dev/null +++ b/src/engine/components/Life.ts @@ -0,0 +1,11 @@ +import { Component, ComponentNames } from "."; + +export class Life extends Component { + public alive: boolean = true; + + constructor(alive: boolean) { + super(ComponentNames.Life); + + this.alive = alive; + } +} diff --git a/src/engine/components/Sprite.ts b/src/engine/components/Sprite.ts index c623bac..fdf9675 100644 --- a/src/engine/components/Sprite.ts +++ b/src/engine/components/Sprite.ts @@ -2,7 +2,12 @@ import { Component, ComponentNames } from "."; import type { Dimension2D, DrawArgs, Coord2D } from "../interfaces"; import { clamp } from "../utils"; -export class Sprite extends Component { +export interface Renderable { + update(dt: number): void; + draw(ctx: CanvasRenderingContext2D, drawArgs: DrawArgs): void; +} + +export class Sprite extends Component implements Renderable { private sheet: HTMLImageElement; private spriteImgPos: Coord2D; diff --git a/src/engine/components/index.ts b/src/engine/components/index.ts index a7a3cf1..023e73d 100644 --- a/src/engine/components/index.ts +++ b/src/engine/components/index.ts @@ -12,3 +12,4 @@ export * from "./Colliding"; export * from "./GridSpawn"; export * from "./Text"; export * from "./LambdaTerm"; +export * from "./Life"; |