summaryrefslogtreecommitdiff
path: root/engine/systems/FacingDirection.ts
diff options
context:
space:
mode:
Diffstat (limited to 'engine/systems/FacingDirection.ts')
-rw-r--r--engine/systems/FacingDirection.ts36
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);
+ }
+ });
+ }
+}