updateDirectionChange function

void updateDirectionChange(
  1. Direction dir,
  2. Snake snake,
  3. GameMap gameMap,
  4. Set<Food> foods,
)

Implementation

void updateDirectionChange(
    Direction dir, Snake snake, GameMap gameMap, Set<Food> foods) {
  final didMove = snake.move(
    dir,
    walls: gameMap.walls,
  );

  if (!didMove) {
    gameOver();
  }
  final updated = gameMap.updateEmptyPoints(snake.points);
  if (!updated) {
    gameOver();
  }

  if (foods.any((f) => f.point == snake.head)) {
    eatFood(snake.head, foods, snake, gameMap);
  }
}