Ejemplo n.º 1
0
    /// <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);
    }