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); } }