diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-07-20 20:47:32 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-07-20 20:47:32 -0700 |
commit | 72c6c7de12e9833f52bf2d0718d70f044f8ab57e (patch) | |
tree | 152f5f31d59011bb8c617bfbcfc44cc8f47ecad5 /client/lib/entities | |
parent | 0fd9fb097552686f2257c1aa689d797e80057bd1 (diff) | |
download | jumpstorm-72c6c7de12e9833f52bf2d0718d70f044f8ab57e.tar.gz jumpstorm-72c6c7de12e9833f52bf2d0718d70f044f8ab57e.zip |
a bit of refactoring; importing engine into bun for server
Diffstat (limited to 'client/lib/entities')
-rw-r--r-- | client/lib/entities/Entity.ts | 33 | ||||
-rw-r--r-- | client/lib/entities/Floor.ts | 31 | ||||
-rw-r--r-- | client/lib/entities/Player.ts | 68 | ||||
-rw-r--r-- | client/lib/entities/index.ts | 3 |
4 files changed, 0 insertions, 135 deletions
diff --git a/client/lib/entities/Entity.ts b/client/lib/entities/Entity.ts deleted file mode 100644 index e57ccde..0000000 --- a/client/lib/entities/Entity.ts +++ /dev/null @@ -1,33 +0,0 @@ -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<string, Component>; - - constructor() { - this.id = Entity.ID++; - this.components = new Map(); - } - - public addComponent(component: Component) { - this.components.set(component.name, component); - } - - public getComponent<T extends Component>(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); - } -} diff --git a/client/lib/entities/Floor.ts b/client/lib/entities/Floor.ts deleted file mode 100644 index d51badc..0000000 --- a/client/lib/entities/Floor.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { IMAGES, SPRITE_SPECS, Sprites, type SpriteSpec } from "../config"; -import { BoundingBox, Sprite } from "../components"; -import { TopCollidable } from "../components/TopCollidable"; -import { Entity } from "../entities"; - -export class Floor extends Entity { - private static spriteSpec: SpriteSpec = SPRITE_SPECS.get(Sprites.FLOOR); - - constructor(width: number) { - super(); - - this.addComponent( - new Sprite( - IMAGES.get(Floor.spriteSpec.states[width].sheet), - { x: 0, y: 0 }, - { width, height: Floor.spriteSpec.height }, - Floor.spriteSpec.msPerFrame, - Floor.spriteSpec.frames - ) - ); - - this.addComponent( - new BoundingBox( - { x: 300, y: 300 }, - { width, height: Floor.spriteSpec.height } - ) - ); - - this.addComponent(new TopCollidable()); - } -} diff --git a/client/lib/entities/Player.ts b/client/lib/entities/Player.ts deleted file mode 100644 index 0ba5a41..0000000 --- a/client/lib/entities/Player.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Entity } from "."; -import { IMAGES, SPRITE_SPECS, Sprites, type SpriteSpec } from "../config"; -import { - Jump, - FacingDirection, - BoundingBox, - Sprite, - Velocity, - Gravity, - WallBounded, - Forces, - Collide, - Control, - Mass, - Moment, -} from "../components"; -import { PhysicsConstants } from "../config"; -import { Direction } from "../interfaces"; - -export class Player extends Entity { - private static MASS: number = 10; - private static MOI: number = 1000; - - private static spriteSpec: SpriteSpec = SPRITE_SPECS.get(Sprites.COFFEE); - - constructor() { - super(); - - this.addComponent( - new BoundingBox( - { x: 300, y: 100 }, - { width: Player.spriteSpec.width, height: Player.spriteSpec.height }, - 0 - ) - ); - - this.addComponent(new Velocity({ dx: 0, dy: 0 }, 0)); - - this.addComponent(new Mass(Player.MASS)); - this.addComponent(new Moment(Player.MOI)); - this.addComponent(new Forces()); - this.addComponent(new Gravity()); - - this.addComponent(new Jump()); - this.addComponent(new Control()); - - this.addComponent(new Collide()); - this.addComponent(new WallBounded()); - - this.addFacingDirectionComponents(); - } - - private addFacingDirectionComponents() { - const [leftSprite, rightSprite] = [Direction.LEFT, Direction.RIGHT].map( - (direction) => - new Sprite( - IMAGES.get(Player.spriteSpec.states[direction].sheet), - { x: 0, y: 0 }, - { width: Player.spriteSpec.width, height: Player.spriteSpec.height }, - Player.spriteSpec.msPerFrame, - Player.spriteSpec.frames - ) - ); - - this.addComponent(new FacingDirection(leftSprite, rightSprite)); - this.addComponent(leftSprite); // face Left by default - } -} diff --git a/client/lib/entities/index.ts b/client/lib/entities/index.ts deleted file mode 100644 index a921512..0000000 --- a/client/lib/entities/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./Entity"; -export * from "./Floor"; -export * from "./Player"; |