import { System, SystemNames } from "."; import { Game } from ".."; import { ComponentNames, Grid, LambdaSpawn } from "../components"; import { FunctionBox } from "../entities"; export class LambdaFactory extends System { constructor() { super(SystemNames.LambdaFactory); } public update(_dt: number, game: Game) { game.forEachEntityWithComponent(ComponentNames.LambdaSpawn, (entity) => { const lambdaSpawn = entity.getComponent( ComponentNames.LambdaSpawn, )!; const hasGrid = entity.hasComponent(SystemNames.Grid); if (!lambdaSpawn.direction || !hasGrid) { return; } const grid = entity.getComponent(SystemNames.Grid)!; const lambda = new FunctionBox(grid.gridPosition, lambdaSpawn.code); const lambdaGrid = lambda.getComponent(SystemNames.Grid)!; lambdaGrid.movingDirection = lambdaSpawn.direction; lambda.addComponent(lambdaGrid); game.addEntity(lambda); lambdaSpawn.direction = null; entity.addComponent(lambdaSpawn); }); } }