private List <BubbleSlot> GetAdjacentBubblesWithSameScore(BubbleSlot bubbleSlot, List <BubbleSlot> knownAdjacents) { var newAdjacentBubbleSlots = new List <BubbleSlot>(); var adjacentIndexes = GetAdjacentIndexes(bubbleSlot); foreach (var adjacentBubbleIndex in adjacentIndexes) { var bubbleSlotToAdd = _bubbleSlots[adjacentBubbleIndex]; if (bubbleSlotToAdd.HasBubble() && bubbleSlotToAdd.BubbleConfig().number == bubbleSlot.BubbleConfig().number) { if (!knownAdjacents.Any(slot => slot.Id() == bubbleSlotToAdd.Id())) { newAdjacentBubbleSlots.Add(bubbleSlotToAdd); } } } if (newAdjacentBubbleSlots.Count() == 0) { return(knownAdjacents); } var result = new List <BubbleSlot>(); foreach (var newSlot in newAdjacentBubbleSlots) { var newSlotAdjacentBubbles = GetAdjacentBubblesWithSameScore(newSlot, knownAdjacents.Concat(newAdjacentBubbleSlots).ToList()); foreach (var newSlotAdjacentBubble in newSlotAdjacentBubbles) { if (!result.Any(slot => slot.Id() == newSlotAdjacentBubble.Id())) { result.Add(newSlotAdjacentBubble); } } } return(result); }
private void SpawnBubblePop(Vector3 position) { var bubblePop = Instantiate(_bubblePop, transform.position, Quaternion.identity); bubblePop.Pop(_bubbleSlot.BubbleConfig(), position); }