Example #1
0
 private void RemoveNormalPiece(NormalPiece piece, Action act)
 {
     act?.Invoke();
     piece.Line[piece.Index] = null;
     foreach (var pConnection in piece.Connections)
     {
         RefreshPieceConnections(pConnection);
     }
 }
Example #2
0
 private void RecursiveFall(NormalPiece piece)
 {
     RemoveNormalPiece(piece, piece.Fall);
     foreach (var pieceConnection in piece.NotHoldConnections)
     {
         if (pieceConnection.isActive)
         {
             RecursiveFall((NormalPiece)pieceConnection);
         }
     }
 }
Example #3
0
        private List <NormalPiece> GetNeighborPiecesSameType(NormalPiece piece, List <NormalPiece> list)
        {
            foreach (var pieceConnection in piece.Connections.ConvertAll(x => (NormalPiece)x))
            {
                if (pieceConnection.Compare(piece) && !list.Contains(pieceConnection))
                {
                    list.Add(pieceConnection);
                    GetNeighborPiecesSameType(pieceConnection, list);
                }
            }

            return(list);
        }
Example #4
0
        private void TryBreaking(NormalPiece piece)
        {
            var piecesToBreak = GetNeighborPiecesSameType(piece, new List <NormalPiece>());

            if (piecesToBreak.Count >= MIN_AMOUNT_TO_BREAK)
            {
                foreach (var p in piecesToBreak)
                {
                    RemoveNormalPiece(p, p.Break);
                }
                CheckFallingPieces();
            }
        }
Example #5
0
        private void CreateBoard()
        {
            for (var i = 0; i < MAX_LINES; i++)
            {
                var line       = new PiecesLine(i, (i % 2 != 0), i == 0);
                var lineAmount = MAX_PIECES_PER_LINE - (line.IsShortLine ? 1 : 0);

                for (var j = 0; j < lineAmount; j++)
                {
                    var pieceToAdd = i < INITIAL_LINE_AMOUNT?NormalPiece.GetRandom() : null;

                    pieceToAdd?.UpdatePosition(line, j);
                    pieceToAdd?.Lock();
                    line.Add(pieceToAdd);
                }

                lines.Add(line);
            }

            UpdateConnections();

            Dump();
        }
Example #6
0
        public Piece GetNextPiece()
        {
            var piece = NormalPiece.GetRandom();

            return(piece);
        }