summaryrefslogtreecommitdiff
path: root/src/engine/entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/entities')
-rw-r--r--src/engine/entities/FunctionBox.ts3
-rw-r--r--src/engine/entities/Piston.ts33
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]) {