From 0fd9fb097552686f2257c1aa689d797e80057bd1 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Wed, 19 Jul 2023 20:38:24 -0700 Subject: initial commit --- client/lib/systems/Render.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 client/lib/systems/Render.ts (limited to 'client/lib/systems/Render.ts') diff --git a/client/lib/systems/Render.ts b/client/lib/systems/Render.ts new file mode 100644 index 0000000..0c76b00 --- /dev/null +++ b/client/lib/systems/Render.ts @@ -0,0 +1,41 @@ +import { System, SystemNames } from "."; +import { BoundingBox, ComponentNames, Sprite } from "../components"; +import type { Entity } from "../entities"; +import type { DrawArgs } from "../interfaces"; + +export class Render extends System { + private ctx: CanvasRenderingContext2D; + + constructor(ctx: CanvasRenderingContext2D) { + super(SystemNames.Render); + this.ctx = ctx; + } + + public update( + dt: number, + entityMap: Map, + componentEntities: Map> + ) { + this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); + + componentEntities.get(ComponentNames.Sprite)?.forEach((entityId) => { + const entity = entityMap.get(entityId); + const sprite = entity.getComponent(ComponentNames.Sprite); + sprite.update(dt); + + let drawArgs: DrawArgs; + if (entity.hasComponent(ComponentNames.BoundingBox)) { + const boundingBox = entity.getComponent( + ComponentNames.BoundingBox + ); + + drawArgs = { + center: boundingBox.center, + dimension: boundingBox.dimension, + rotation: boundingBox.rotation, + }; + } + sprite.draw(this.ctx, drawArgs); + }); + } +} -- cgit v1.3