summaryrefslogtreecommitdiff
path: root/src/engine/entities
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-02 05:30:17 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-02 05:30:17 -0700
commitcbb88091bdf69cc8752ef1cc3662dc0b99e3ead6 (patch)
treeb10e56d8f5281a9e91db8e2a923f91b216129459 /src/engine/entities
parent4b9349b3f8bee21eb086cfd6e7668532a50e6048 (diff)
downloadthe-abstraction-engine-cbb88091bdf69cc8752ef1cc3662dc0b99e3ead6.tar.gz
the-abstraction-engine-cbb88091bdf69cc8752ef1cc3662dc0b99e3ead6.zip
key lock / player curry collisions
Diffstat (limited to 'src/engine/entities')
-rw-r--r--src/engine/entities/Curry.ts45
-rw-r--r--src/engine/entities/EntityNames.ts3
-rw-r--r--src/engine/entities/Key.ts45
-rw-r--r--src/engine/entities/LockedDoor.ts45
-rw-r--r--src/engine/entities/index.ts3
5 files changed, 141 insertions, 0 deletions
diff --git a/src/engine/entities/Curry.ts b/src/engine/entities/Curry.ts
new file mode 100644
index 0000000..85bc7ef
--- /dev/null
+++ b/src/engine/entities/Curry.ts
@@ -0,0 +1,45 @@
+import { Entity, EntityNames } from ".";
+import { BoundingBox, Colliding, Grid, Sprite } from "../components";
+import { IMAGES, SPRITE_SPECS, SpriteSpec, Sprites } from "../config";
+import { Coord2D } from "../interfaces";
+
+export class Curry extends Entity {
+ private static spriteSpec: SpriteSpec = SPRITE_SPECS.get(
+ Sprites.CURRY,
+ ) as SpriteSpec;
+
+ constructor(gridPosition: Coord2D) {
+ super(EntityNames.Curry);
+
+ this.addComponent(new Grid(gridPosition));
+
+ this.addComponent(new Colliding());
+
+ this.addComponent(
+ new BoundingBox(
+ {
+ x: 0,
+ y: 0,
+ },
+ {
+ width: Curry.spriteSpec.width,
+ height: Curry.spriteSpec.height,
+ },
+ 0,
+ ),
+ );
+
+ this.addComponent(
+ new Sprite(
+ IMAGES.get(Curry.spriteSpec.sheet)!,
+ { x: 0, y: 0 },
+ {
+ width: Curry.spriteSpec.width,
+ height: Curry.spriteSpec.height,
+ },
+ Curry.spriteSpec.msPerFrame,
+ Curry.spriteSpec.frames,
+ ),
+ );
+ }
+}
diff --git a/src/engine/entities/EntityNames.ts b/src/engine/entities/EntityNames.ts
index 3ad31d0..7fc69c6 100644
--- a/src/engine/entities/EntityNames.ts
+++ b/src/engine/entities/EntityNames.ts
@@ -3,4 +3,7 @@ export namespace EntityNames {
export const FunctionBox = "FunctionBox";
export const Wall = "Wall";
export const LambdaFactory = "LambdaFactory";
+ export const Key = "Key";
+ export const LockedDoor = "LockedDoor";
+ export const Curry = "Curry";
}
diff --git a/src/engine/entities/Key.ts b/src/engine/entities/Key.ts
new file mode 100644
index 0000000..7168ee8
--- /dev/null
+++ b/src/engine/entities/Key.ts
@@ -0,0 +1,45 @@
+import { Entity, EntityNames } from ".";
+import { BoundingBox, Grid, Pushable, Sprite } from "../components";
+import { IMAGES, SPRITE_SPECS, SpriteSpec, Sprites } from "../config";
+import { Coord2D } from "../interfaces";
+
+export class Key extends Entity {
+ private static spriteSpec: SpriteSpec = SPRITE_SPECS.get(
+ Sprites.KEY,
+ ) as SpriteSpec;
+
+ constructor(gridPosition: Coord2D) {
+ super(EntityNames.Key);
+
+ this.addComponent(new Grid(gridPosition));
+
+ this.addComponent(new Pushable());
+
+ this.addComponent(
+ new BoundingBox(
+ {
+ x: 0,
+ y: 0,
+ },
+ {
+ width: Key.spriteSpec.width,
+ height: Key.spriteSpec.height,
+ },
+ 0,
+ ),
+ );
+
+ this.addComponent(
+ new Sprite(
+ IMAGES.get(Key.spriteSpec.sheet)!,
+ { x: 0, y: 0 },
+ {
+ width: Key.spriteSpec.width,
+ height: Key.spriteSpec.height,
+ },
+ Key.spriteSpec.msPerFrame,
+ Key.spriteSpec.frames,
+ ),
+ );
+ }
+}
diff --git a/src/engine/entities/LockedDoor.ts b/src/engine/entities/LockedDoor.ts
new file mode 100644
index 0000000..5e364b8
--- /dev/null
+++ b/src/engine/entities/LockedDoor.ts
@@ -0,0 +1,45 @@
+import { Entity, EntityNames } from ".";
+import { BoundingBox, Colliding, Grid, Sprite } from "../components";
+import { IMAGES, SPRITE_SPECS, SpriteSpec, Sprites } from "../config";
+import { Coord2D } from "../interfaces";
+
+export class LockedDoor extends Entity {
+ private static spriteSpec: SpriteSpec = SPRITE_SPECS.get(
+ Sprites.LOCKED_DOOR,
+ ) as SpriteSpec;
+
+ constructor(gridPosition: Coord2D) {
+ super(EntityNames.LockedDoor);
+
+ this.addComponent(new Grid(gridPosition));
+
+ this.addComponent(new Colliding());
+
+ this.addComponent(
+ new BoundingBox(
+ {
+ x: 0,
+ y: 0,
+ },
+ {
+ width: LockedDoor.spriteSpec.width,
+ height: LockedDoor.spriteSpec.height,
+ },
+ 0,
+ ),
+ );
+
+ this.addComponent(
+ new Sprite(
+ IMAGES.get(LockedDoor.spriteSpec.sheet)!,
+ { x: 0, y: 0 },
+ {
+ width: LockedDoor.spriteSpec.width,
+ height: LockedDoor.spriteSpec.height,
+ },
+ LockedDoor.spriteSpec.msPerFrame,
+ LockedDoor.spriteSpec.frames,
+ ),
+ );
+ }
+}
diff --git a/src/engine/entities/index.ts b/src/engine/entities/index.ts
index a049350..45c95c0 100644
--- a/src/engine/entities/index.ts
+++ b/src/engine/entities/index.ts
@@ -4,3 +4,6 @@ export * from "./Player";
export * from "./FunctionBox";
export * from "./Wall";
export * from "./LambdaFactory";
+export * from "./Key";
+export * from "./LockedDoor";
+export * from "./Curry";