diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-02 05:30:17 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-02 05:30:17 -0700 |
commit | cbb88091bdf69cc8752ef1cc3662dc0b99e3ead6 (patch) | |
tree | b10e56d8f5281a9e91db8e2a923f91b216129459 /src/engine/entities | |
parent | 4b9349b3f8bee21eb086cfd6e7668532a50e6048 (diff) | |
download | the-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.ts | 45 | ||||
-rw-r--r-- | src/engine/entities/EntityNames.ts | 3 | ||||
-rw-r--r-- | src/engine/entities/Key.ts | 45 | ||||
-rw-r--r-- | src/engine/entities/LockedDoor.ts | 45 | ||||
-rw-r--r-- | src/engine/entities/index.ts | 3 |
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"; |