public MatchThreeCandy GetRandomCandy() { MatchThreeCandyData candyData = m_CandiesData[Random.Range(0, m_CandiesData.Length)]; GameObject obj = Instantiate(candyData.Prefab); MatchThreeCandy candy = obj.AddComponent <MatchThreeCandy>(); candy.CandyData = candyData; SpriteRenderer spriteRenderer = obj.GetComponent <SpriteRenderer>(); spriteRenderer.color = candyData.Color; return(candy); }
public static MatchThreeCell GetCell(MatchThreeCandy candy) { foreach (var row in GameField) { foreach (var cell in row) { if (cell.Candy == candy) { return(cell); } } } return(null); }
private void SetupCandiesLine(MatchThreeCell firstCell, Direction direction) { MatchThreeCell cell = firstCell; while (cell) { MatchThreeCandy newCandy = m_Types.GetRandomCandy(); //пробуем генерить пока не получим разрешенную кoнефетку //типов конфеток должно быть 5 или более - иначе возможен вариант вечного цикла while (!IsFreeCandyPlacement(cell, newCandy.CandyData.Id)) { Destroy(newCandy.gameObject); newCandy = m_Types.GetRandomCandy(); } cell.Candy = newCandy; cell.Candy.transform.position = cell.transform.position; cell = cell.GetNeighbour(direction); } }
private void OnMouseUp() { inDrag = false; if (currentCollider) { MatchThreeCandy targetCandy = currentCollider.GetComponent <MatchThreeCandy>(); var targetCell = MatchThreeField.GetCell(targetCandy); var currentCell = MatchThreeField.GetCell(this); //пытаемся поменять ячейки currentCell.Candy = targetCandy; targetCell.Candy = this; //проверить валидность bool isFreePlacement = MatchThreeController.IsFreeCandyPlacement(targetCell, CandyData.Id); if (isFreePlacement) { isFreePlacement = MatchThreeController.IsFreeCandyPlacement(currentCell, targetCandy.CandyData.Id); } //если смена НЕ приведет к совпадению 3-х if (isFreePlacement) { targetCell.Candy = targetCandy; currentCell.Candy = this; transform.position = baseCandyPosition; return; } //Если приведет к совпадению 3-х transform.position = targetCell.transform.position; targetCandy.transform.position = currentCell.transform.position; return; } transform.position = baseCandyPosition; }