Experimental canvas 2D engine for tile-based sidescroller/sandbox games, created strictly for educational purposes.
entity-component-system game-engine canvas-2d
at develop 1.0 kB view raw
1import { Cosmic, System, Entity } from "@cosmic/core"; 2import { Transform, PlayerControlled } from "@cosmic/kit/components"; 3 4export class PlayerControlSystem extends System { 5 public requiredComponents = new Set([Transform.name, PlayerControlled.name]); 6 7 constructor(private engine: Cosmic) { 8 super(); 9 } 10 11 update(entities: Entity[], deltaTime: number): void { 12 const input = this.engine.input; 13 14 entities.forEach((entity) => { 15 const transform = entity.getComponent(Transform)!; 16 const playerControlled = entity.getComponent(PlayerControlled)!; 17 18 if (input.isKeyDown(playerControlled.inputUp)) 19 transform.y -= playerControlled.speed * deltaTime; 20 if (input.isKeyDown(playerControlled.inputDown)) 21 transform.y += playerControlled.speed * deltaTime; 22 if (input.isKeyDown(playerControlled.inputLeft)) 23 transform.x -= playerControlled.speed * deltaTime; 24 if (input.isKeyDown(playerControlled.inputRight)) 25 transform.x += playerControlled.speed * deltaTime; 26 }); 27 } 28}