summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-24 22:40:51 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-24 22:40:51 -0600
commitc568a8e49aaf64afa5799a9d6d55efafd529f451 (patch)
treeca0e8d8d4cd6f35905cf0159ddbef7d7b1059a35
parentf6ffa422d9ebaf9cad966c260c994c731c730ff8 (diff)
downloadthe-abstraction-engine-c568a8e49aaf64afa5799a9d6d55efafd529f451.tar.gz
the-abstraction-engine-c568a8e49aaf64afa5799a9d6d55efafd529f451.zip
filter only colliding and pushable entities in collision test
-rw-r--r--src/engine/systems/Grid.ts8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/engine/systems/Grid.ts b/src/engine/systems/Grid.ts
index 3c0e995..2eea704 100644
--- a/src/engine/systems/Grid.ts
+++ b/src/engine/systems/Grid.ts
@@ -139,11 +139,17 @@ export class Grid extends System {
);
if (collidingEntities.length > 0) {
- // i.e. key going into a door or function going into an application
+ // ensure everything that is a "pushable" or "colliding" which will collide with the entity
+ // can actually continue moving in the direction
const allEntitiesInPreviousCellCanCollide = Array.from(
this.grid[currentPosition.y][currentPosition.x],
)
.map((id) => game.getEntity(id)!)
+ .filter(
+ (entity) =>
+ entity.hasComponent(ComponentNames.Colliding) ||
+ entity.hasComponent(ComponentNames.Pushable),
+ )
.every((entity) =>
collidingEntities.every((collidingEntity) =>
Collision.canCollide(entity.name, collidingEntity.name),