onLinesCleared method

LevelState onLinesCleared(
  1. LevelState state,
  2. int linesCleared
)

Returns updated LevelState after clearing linesCleared lines.

Lines beyond the level threshold carry over towards the next level, and clearing enough lines at once can advance more than one level.

Implementation

LevelState onLinesCleared(LevelState state, int linesCleared) {
  if (linesCleared == 0) return state;

  var level = state.level;
  var until = state.linesUntilNextLevel - linesCleared;
  while (until <= 0) {
    level++;
    until += linesPerLevel;
  }

  return LevelState(
    level: level,
    linesCleared: state.linesCleared + linesCleared,
    linesUntilNextLevel: until,
  );
}