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