diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-01 19:45:33 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-01 19:45:33 -0700 |
commit | d08e0105cbc59c6cc804f04aaf1e4e625a13960c (patch) | |
tree | 57d5270e146ce2e0c5cfba30e172ab87a2210514 /src/engine/components | |
parent | a8d07a790395e14fe7aedd3ba638db466f9c0842 (diff) | |
download | the-abstraction-engine-d08e0105cbc59c6cc804f04aaf1e4e625a13960c.tar.gz the-abstraction-engine-d08e0105cbc59c6cc804f04aaf1e4e625a13960c.zip |
eyes follow cursor
Diffstat (limited to 'src/engine/components')
-rw-r--r-- | src/engine/components/ComponentNames.ts | 1 | ||||
-rw-r--r-- | src/engine/components/Control.ts | 11 | ||||
-rw-r--r-- | src/engine/components/FacingDirection.ts | 10 | ||||
-rw-r--r-- | src/engine/components/Sprite.ts | 6 | ||||
-rw-r--r-- | src/engine/components/index.ts | 1 |
5 files changed, 27 insertions, 2 deletions
diff --git a/src/engine/components/ComponentNames.ts b/src/engine/components/ComponentNames.ts index 0f1200a..bfeb101 100644 --- a/src/engine/components/ComponentNames.ts +++ b/src/engine/components/ComponentNames.ts @@ -3,4 +3,5 @@ export namespace ComponentNames { export const FacingDirection = "FacingDirection"; export const GridPosition = "GridPosition"; export const BoundingBox = "BoundingBox"; + export const Control = "Control"; } diff --git a/src/engine/components/Control.ts b/src/engine/components/Control.ts new file mode 100644 index 0000000..48983b2 --- /dev/null +++ b/src/engine/components/Control.ts @@ -0,0 +1,11 @@ +import { Component, ComponentNames } from "."; + +export class Control extends Component { + public isControllable: boolean = true; + + constructor(isControllable = true) { + super(ComponentNames.Control); + + this.isControllable = isControllable; + } +} diff --git a/src/engine/components/FacingDirection.ts b/src/engine/components/FacingDirection.ts index a449d21..7108366 100644 --- a/src/engine/components/FacingDirection.ts +++ b/src/engine/components/FacingDirection.ts @@ -1,12 +1,18 @@ import { Component, ComponentNames, Sprite } from "."; -import { type Direction } from "../interfaces"; +import { Direction } from "../interfaces"; export class FacingDirection extends Component { public readonly directionSprites: Map<Direction, Sprite>; + public currentDirection: Direction; - constructor() { + constructor(currentDirection: Direction = Direction.NONE) { super(ComponentNames.FacingDirection); + this.currentDirection = currentDirection; this.directionSprites = new Map<Direction, Sprite>(); } + + public setDirection(direction: Direction) { + this.currentDirection = direction; + } } diff --git a/src/engine/components/Sprite.ts b/src/engine/components/Sprite.ts index 6a66a5c..82d7011 100644 --- a/src/engine/components/Sprite.ts +++ b/src/engine/components/Sprite.ts @@ -1,5 +1,6 @@ import { Component, ComponentNames } from "."; import type { Dimension2D, DrawArgs, Coord2D } from "../interfaces"; +import { clamp } from "../utils"; export class Sprite extends Component { private sheet: HTMLImageElement; @@ -31,6 +32,11 @@ export class Sprite extends Component { this.currentFrame = 0; } + public fillTimingsFromSprite(sprite: Sprite) { + this.msSinceLastFrame = clamp(sprite.msSinceLastFrame, 0, this.msPerFrame); + this.currentFrame = clamp(sprite.currentFrame, 0, this.numFrames - 1); + } + public update(dt: number) { this.msSinceLastFrame += dt; if (this.msSinceLastFrame >= this.msPerFrame) { diff --git a/src/engine/components/index.ts b/src/engine/components/index.ts index 30fe50a..d3a32ad 100644 --- a/src/engine/components/index.ts +++ b/src/engine/components/index.ts @@ -4,3 +4,4 @@ export * from "./Sprite"; export * from "./FacingDirection"; export * from "./GridPosition"; export * from "./BoundingBox"; +export * from "./Control"; |