Ejemplo n.º 1
0
 protected virtual void OnLinesCleared(LinesEventArgs e)
 {
     if (LinesCleared != null)
     {
         LinesCleared.Invoke(this, e);
     }
 }
Ejemplo n.º 2
0
        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());
            }
        }