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/systems/WallBounds.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 engine/systems/WallBounds.ts (limited to 'engine/systems/WallBounds.ts') diff --git a/engine/systems/WallBounds.ts b/engine/systems/WallBounds.ts new file mode 100644 index 0000000..6ea2267 --- /dev/null +++ b/engine/systems/WallBounds.ts @@ -0,0 +1,36 @@ +import { System, SystemNames } from "."; +import { BoundingBox, ComponentNames } from "../components"; +import { Game } from "../Game"; +import type { Entity } from "../entities"; +import { clamp } from "../utils"; + +export class WallBounds extends System { + private screenWidth: number; + + constructor(screenWidth: number) { + super(SystemNames.WallBounds); + + this.screenWidth = screenWidth; + } + + public update(_dt: number, game: Game) { + game.componentEntities + .get(ComponentNames.WallBounded) + ?.forEach((entityId) => { + const entity = game.entities.get(entityId); + if (!entity.hasComponent(ComponentNames.BoundingBox)) { + return; + } + + const boundingBox = entity.getComponent( + ComponentNames.BoundingBox + ); + + boundingBox.center.x = clamp( + boundingBox.center.x, + boundingBox.dimension.width / 2, + this.screenWidth - boundingBox.dimension.width / 2 + ); + }); + } +} -- cgit v1.3