public void DropFullLines() { List <bool[]> linesToKeep = new List <bool[]>(); for (int line = 0; line < Settings.LineNumber; line++) { bool lineHasGaps = false; for (int column = 0; column < Settings.ColumnNumber; column++) { if (!BoolData[line, column]) { lineHasGaps = true; break; } } if (lineHasGaps) { bool[] lineToKeep = new bool[Settings.ColumnNumber]; for (int column = 0; column < Settings.ColumnNumber; column++) { lineToKeep[column] = BoolData[line, column]; } linesToKeep.Add((bool[])lineToKeep.Clone()); } } int emptyLinesToAdd = BoolData.GetLength(0) - linesToKeep.Count; UpdateScores(emptyLinesToAdd); bool[,] newBoolData = new bool[Settings.LineNumber, Settings.ColumnNumber]; for (int line = emptyLinesToAdd; line < Settings.LineNumber; line++) { for (int column = 0; column < Settings.ColumnNumber; column++) { newBoolData[line, column] = linesToKeep[line - emptyLinesToAdd][column]; } } BoolData = (bool[, ])newBoolData.Clone(); }