protected virtual void OnLinesCleared(LinesEventArgs e) { if (LinesCleared != null) { LinesCleared.Invoke(this, e); } }
private void ClearLinesFromDeadGrid() { var oldGrid = (ShapeEnum[, ])deadGrid.Clone(); List <int> yLinesToClear = new List <int>(); for (int y = 0; y < deadGrid.GetLength(1); y++) { bool fullLine = true; for (int x = 0; x < deadGrid.GetLength(0); x++) { if (deadGrid[x, y] == ShapeEnum.Empty) { fullLine = false; break; } } if (fullLine) { yLinesToClear.Add(y); for (int ytoClear = y; ytoClear > 0; ytoClear--) { for (int x = 0; x < deadGrid.GetLength(0); x++) { deadGrid[x, ytoClear] = deadGrid[x, ytoClear - 1]; } } } } if (yLinesToClear.Any()) { totalLinesCleared += yLinesToClear.Count(); LinesAboutToClear.Invoke(this, oldGrid); LinesCleared.Invoke(this, yLinesToClear.ToArray()); } }