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),