diff options
Diffstat (limited to 'src/engine/entities')
-rw-r--r-- | src/engine/entities/FunctionBox.ts | 3 | ||||
-rw-r--r-- | src/engine/entities/Piston.ts | 33 |
2 files changed, 26 insertions, 10 deletions
diff --git a/src/engine/entities/FunctionBox.ts b/src/engine/entities/FunctionBox.ts index 7493c8a..f381455 100644 --- a/src/engine/entities/FunctionBox.ts +++ b/src/engine/entities/FunctionBox.ts @@ -9,6 +9,7 @@ import { LambdaTerm, Modal, Pushable, + RadialObserve, Sprite, } from "../components"; import { Coord2D } from "../interfaces"; @@ -40,6 +41,8 @@ export class FunctionBox extends Entity { this.addComponent(new Pushable()); + this.addComponent(new RadialObserve()); + this.addComponent(new Grid(gridPosition)); this.addComponent( diff --git a/src/engine/entities/Piston.ts b/src/engine/entities/Piston.ts index 18b761b..214eaac 100644 --- a/src/engine/entities/Piston.ts +++ b/src/engine/entities/Piston.ts @@ -1,5 +1,11 @@ import { Entity, EntityNames } from "."; -import { Colliding, ComponentNames, FacingDirection, Grid, RadialObserve } from "../components"; +import { + Colliding, + ComponentNames, + FacingDirection, + Grid, + RadialObserve, +} from "../components"; import { Game } from "../Game"; import { Coord2D, Direction } from "../interfaces"; @@ -7,7 +13,7 @@ export class Piston extends Entity { constructor(gridPosition: Coord2D, direction: Direction) { super(EntityNames.Piston); - const radius = 1 + .001; + const radius = 1; this.addComponent(new RadialObserve(this.onObservation.bind(this), radius)); this.addComponent(new FacingDirection(direction)); @@ -18,24 +24,31 @@ export class Piston extends Entity { } private onObservation(_game: Game, entity: Entity) { - const facingDirection = this.getComponent<FacingDirection>(ComponentNames.FacingDirection); + const facingDirection = this.getComponent<FacingDirection>( + ComponentNames.FacingDirection, + ); - const myPosition = this.getComponent<Grid>(ComponentNames.Grid).gridPosition; + const myPosition = this.getComponent<Grid>( + ComponentNames.Grid, + ).gridPosition; const observingGrid = entity.getComponent<Grid>(ComponentNames.Grid); const observingPosition = observingGrid.gridPosition; - const [dx, dy] = [myPosition.x - observingPosition.x, myPosition.y - observingPosition.y].map(x => Math.round(x)); + const [dx, dy] = [ + myPosition.x - observingPosition.x, + myPosition.y - observingPosition.y, + ].map((x) => Math.round(x)); const v: Record<typeof dx, Record<typeof dy, Direction>> = { [-1]: { - [dy]: Direction.RIGHT, + [dy]: Direction.RIGHT, }, [1]: { - [dy]: Direction.LEFT, + [dy]: Direction.LEFT, }, [0]: { - [-1]: Direction.UP, - [1]: Direction.DOWN, - } + [-1]: Direction.UP, + [1]: Direction.DOWN, + }, }; if (facingDirection.currentDirection !== v[dx][dy]) { |