import { FunctionApplication, Grass, LambdaFactory, Player } from "../entities"; import { Game } from "../Game"; import { Grid, SystemNames } from "../systems"; import { normalRandom } from "../utils"; import { Level } from "./Level"; import { LevelNames } from "./LevelNames"; export class ChurchNumeralsOne extends Level { constructor() { super(LevelNames.ChurchNumeralsOne); } public init(game: Game) { const grid = game.getSystem(SystemNames.Grid); const dimensions = grid.getGridDimensions(); const grasses = Array.from({ length: dimensions.width }) .fill(0) .map(() => { // random grass return new Grass({ x: Math.floor( normalRandom(dimensions.width / 2, dimensions.width / 4, 1.5), ), y: Math.floor( normalRandom(dimensions.height / 2, dimensions.height / 4, 1.5), ), }); }); [ ...grasses, new LambdaFactory({ x: 1, y: 1 }, "(\\ (f) . (\\ (x) . (f f x)))", 1), new FunctionApplication( { x: 2, y: 2 }, "(_INPUT ((_SPAWN _RIGHT) _KEY))", ), new FunctionApplication( { x: 3, y: 3 }, "(_INPUT _EMPTY)", ), new Player({ x: 0, y: 0 }), ].forEach((e) => game.addEntity(e)); } }