onLinesCleared method
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,
);
}