From 72c6c7de12e9833f52bf2d0718d70f044f8ab57e Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Thu, 20 Jul 2023 20:47:32 -0700 Subject: a bit of refactoring; importing engine into bun for server --- engine/entities/Player.ts | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 engine/entities/Player.ts (limited to 'engine/entities/Player.ts') diff --git a/engine/entities/Player.ts b/engine/entities/Player.ts new file mode 100644 index 0000000..0ba5a41 --- /dev/null +++ b/engine/entities/Player.ts @@ -0,0 +1,68 @@ +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 + } +} -- cgit v1.2.3-70-g09d2