/// <summary> /// Corotina para desabilitar as células que não poderão ser selecionadas após a marcação de uma célula durante a jogada. /// Serão mantidas habilitadas as células nas posições norte, sul, leste e oeste em relação àquela selecionada, marcando-as como alternativas. /// </summary> /// <param name="_celula">GameObject da célula selecionada</param> /// <returns>Nulo</returns> IEnumerator DesabilitarCelulas(GameObject _celula) { for (int _linha = 0; _linha < _geradorSudoku.TotalLinhas; _linha++) { for (int _coluna = 0; _coluna < _geradorSudoku.TotalColunas; _coluna++) { // * Recupera o collider da célula BoxCollider2D _boxCollider2D = _geradorSudoku.ListaCelulas[_linha, _coluna].gameObject.GetComponent <BoxCollider2D>(); // * Recupera o componente script da célula Celula _scriptCelula = _geradorSudoku.ListaCelulas[_linha, _coluna].gameObject.GetComponent <Celula>(); // * Verifica se a célula percorrida no laço está na posição norte, sul, leste ou oeste em relação à celula selecionada, em caso positivo // * habilita o collider da célula e altera seu estado para "Alternativa" if ((_scriptCelula.Linha == _celula.GetComponent <Celula>().Linha - 1 && _scriptCelula.Coluna == _celula.GetComponent <Celula>().Coluna) || (_scriptCelula.Linha == _celula.GetComponent <Celula>().Linha + 1 && _scriptCelula.Coluna == _celula.GetComponent <Celula>().Coluna) || (_scriptCelula.Linha == _celula.GetComponent <Celula>().Linha&& _scriptCelula.Coluna == _celula.GetComponent <Celula>().Coluna - 1) || (_scriptCelula.Linha == _celula.GetComponent <Celula>().Linha&& _scriptCelula.Coluna == _celula.GetComponent <Celula>().Coluna + 1)) { _boxCollider2D.enabled = true; _scriptCelula.Alternativa(); } // * Caso contrário desabilita o collider da célula percorrida pelo laço else { _boxCollider2D.enabled = false; } } } yield return(null); }