Node get_element(line_type cols_priority, int first, int second)
 {
     if (cols_priority == (int)line_type.col)
     {
         return Grid.Instance.grid[first, second];
     }
     else
     {
         return Grid.Instance.grid[second, first];
     }
 }
    int FindMatchedBalls(line_type rowOrColumnIdentifier, int line_index, BallColor color)
    {
        List<Node> columnNodesToRemove = new List<Node>();
        for (int i = 0; i < 7; i++)
        {
            Node current = get_element(rowOrColumnIdentifier, line_index, i);
            if (current.assignedBall != null &&
                current.assignedBall.color.Equals(color))
            {
                columnNodesToRemove.Add(current);
            }
            else
            {
                if (columnNodesToRemove.Count < 5)
                {
                    columnNodesToRemove.Clear();
                }
                else
                {
                    break;
                }
            }
        }

        int number_of_removed = 0;
        if (columnNodesToRemove.Count >= 5)
        {
            number_of_removed = columnNodesToRemove.Count;
            foreach (Node node in columnNodesToRemove)
            {
                if (node.assignedBall)
                {
                    node.assignedBall.DestroyBall();
                    RemoveBallInfo(color, node);
                    Grid.Instance.UpdateNodeStatus(node, true);
                }
            }
        }
        return number_of_removed;
    }