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 /engine/systems/FacingDirection.ts | |
parent | 0fd9fb097552686f2257c1aa689d797e80057bd1 (diff) | |
download | jumpstorm-72c6c7de12e9833f52bf2d0718d70f044f8ab57e.tar.gz jumpstorm-72c6c7de12e9833f52bf2d0718d70f044f8ab57e.zip |
a bit of refactoring; importing engine into bun for server
Diffstat (limited to 'engine/systems/FacingDirection.ts')
-rw-r--r-- | engine/systems/FacingDirection.ts | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/engine/systems/FacingDirection.ts b/engine/systems/FacingDirection.ts new file mode 100644 index 0000000..c6513ac --- /dev/null +++ b/engine/systems/FacingDirection.ts @@ -0,0 +1,36 @@ +import { + ComponentNames, + Velocity, + FacingDirection as FacingDirectionComponent, +} from "../components"; +import { Game } from "../Game"; +import type { Entity } from "../entities"; +import { System, SystemNames } from "./"; + +export class FacingDirection extends System { + constructor() { + super(SystemNames.FacingDirection); + } + + public update(_dt: number, game: Game) { + game.componentEntities + .get(ComponentNames.FacingDirection) + ?.forEach((entityId) => { + const entity = game.entities.get(entityId); + if (!entity.hasComponent(ComponentNames.Velocity)) { + return; + } + + const velocity = entity.getComponent<Velocity>(ComponentNames.Velocity); + const facingDirection = entity.getComponent<FacingDirectionComponent>( + ComponentNames.FacingDirection + ); + + if (velocity.dCartesian.dx > 0) { + entity.addComponent(facingDirection.facingRightSprite); + } else if (velocity.dCartesian.dx < 0) { + entity.addComponent(facingDirection.facingLeftSprite); + } + }); + } +} |