package coffee.liz.abstractionengine; import coffee.liz.abstractionengine.grid.component.GridInputState; import coffee.liz.abstractionengine.grid.system.GridCollisionPropagatationSystem; import coffee.liz.abstractionengine.grid.system.GridIndexSystem; import coffee.liz.abstractionengine.grid.system.GridMovementSystem; import coffee.liz.abstractionengine.grid.system.GridPhysicsSystem; import coffee.liz.abstractionengine.grid.system.LambdaEvaluatorSystem; import coffee.liz.ecs.DAGWorld; import coffee.liz.ecs.math.Vec2; import coffee.liz.lambda.ast.SourceCode; import lombok.extern.log4j.Log4j2; import java.time.Duration; /** Grid world implementation for the abstraction engine. */ @Log4j2 public class AbstractionEngineGridWorld extends DAGWorld { public AbstractionEngineGridWorld(final Vec2 gridDimensions, final SourceCode.Syntax preferredSyntax) { super(new GridMovementSystem(), new GridPhysicsSystem(), new GridIndexSystem(gridDimensions), new GridCollisionPropagatationSystem(), new LambdaEvaluatorSystem(preferredSyntax)); } /** * Update world with input state. For now our grid world is a "step function", * so we shouldn't (yet) care about the amount of time between steps. * * @param state * the {@link GridInputState} */ public void update(final GridInputState state) { update(state, Duration.ZERO); } }