summaryrefslogtreecommitdiff
path: root/src/engine/components
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-06 14:35:04 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-06 14:35:04 -0700
commit823620b2a6ebb7ece619991e47a37ad46542b69f (patch)
tree82a1501c5f707a1bcbc6c28bd6d0f5731cc9f618 /src/engine/components
parentce06fa7c29ba4e3d6137f7aa74fbfe45af0e8b73 (diff)
downloadthe-abstraction-engine-823620b2a6ebb7ece619991e47a37ad46542b69f.tar.gz
the-abstraction-engine-823620b2a6ebb7ece619991e47a37ad46542b69f.zip
add particles
Diffstat (limited to 'src/engine/components')
-rw-r--r--src/engine/components/Colliding.ts8
-rw-r--r--src/engine/components/ComponentNames.ts1
-rw-r--r--src/engine/components/Life.ts11
-rw-r--r--src/engine/components/Sprite.ts7
-rw-r--r--src/engine/components/index.ts1
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";