Ejemplo n.º 1
0
    void Update()
    {
        List <NodePiece> finishedUpdating = new List <NodePiece>();

        for (int i = 0; i < update.Count; i++)
        {
            NodePiece piece = update[i];
            if (!piece.updatePiece())
            {
                finishedUpdating.Add(piece);
            }
        }
        for (int i = 0; i < finishedUpdating.Count; i++)
        {
            NodePiece     piece        = finishedUpdating[i];
            FlippedPieces flip         = getFlipped(piece);
            NodePiece     flippedPiece = null;

            int x = (int)piece.index.x;
            fills[x] = Mathf.Clamp(fills[x] - 1, 0, width);

            List <Point> connected  = isConnected(piece.index, true);
            bool         wasFlipped = (flip != null);

            if (wasFlipped) // ha felcseréltük akkor hyvjuk meg az update-t
            {
                flippedPiece = flip.getOtherPiece(piece);
                AddPoints(ref connected, isConnected(flippedPiece.index, true));
            }
            if (connected.Count == 0)                                   // Ha nincs matchünk
            {
                if (wasFlipped)                                         // Ha felcseréltük
                {
                    FlipPieces(piece.index, flippedPiece.index, false); //Visszacserélés
                }
            }
            else                                 // Ha match van
            {
                foreach (Point pnt in connected) //Összekapcsoltakat kivesszük
                {
                    Node      node      = getNodeAtPoint(pnt);
                    NodePiece nodePiece = node.getPiece();
                    if (piece != null)
                    {
                        nodePiece.gameObject.SetActive(false);
                        dead.Add(nodePiece);
                    }
                    node.SetPiece(null);
                }
                ApplyGravityToBoard();
            }

            flipped.Remove(flip);
            update.Remove(piece);
        }
    }