diff options
| author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-07-19 20:38:24 -0700 |
|---|---|---|
| committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-07-19 20:38:24 -0700 |
| commit | 0fd9fb097552686f2257c1aa689d797e80057bd1 (patch) | |
| tree | b8d0367bf7b62c049af60ace301ce1cffc08d821 /client/lib/systems/WallBounds.ts | |
| download | jumpstorm-0fd9fb097552686f2257c1aa689d797e80057bd1.tar.gz jumpstorm-0fd9fb097552686f2257c1aa689d797e80057bd1.zip | |
initial commit
Diffstat (limited to 'client/lib/systems/WallBounds.ts')
| -rw-r--r-- | client/lib/systems/WallBounds.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/client/lib/systems/WallBounds.ts b/client/lib/systems/WallBounds.ts new file mode 100644 index 0000000..3fd5dc4 --- /dev/null +++ b/client/lib/systems/WallBounds.ts @@ -0,0 +1,35 @@ +import { System, SystemNames } from "."; +import { BoundingBox, ComponentNames } from "../components"; +import type { Entity } from "../entities"; + +export class WallBounds extends System { + private screenWidth: number; + + constructor(screenWidth: number) { + super(SystemNames.WallBounds); + + this.screenWidth = screenWidth; + } + + public update( + _dt: number, + entityMap: Map<number, Entity>, + componentEntities: Map<string, Set<number>> + ) { + componentEntities.get(ComponentNames.WallBounded)?.forEach((entityId) => { + const entity = entityMap.get(entityId); + if (!entity.hasComponent(ComponentNames.BoundingBox)) { + return; + } + + const boundingBox = entity.getComponent<BoundingBox>( + ComponentNames.BoundingBox + ); + + boundingBox.center.x = Math.min( + this.screenWidth - boundingBox.dimension.width / 2, + Math.max(boundingBox.dimension.width / 2, boundingBox.center.x) + ); + }); + } +} |
