Exemplo n.º 1
0
    /*
     * Adiciona uma cor, remaneja os aneis para que possa caber mais um
     */
    public void ganhaCor(List <Colored.Corenum> coresDisponiveis)
    {
        /*
         * Os aneis (ativos) tem o mesmo tamanho. Mas comecam em lugares diferente,
         * e para isso rotacionamos eles.
         * Tambem temos de fazer cada anel preenchero suficiente para ocupar sua porcao do circulo
         *
         * Eu estou pintando os aneis conforme o camaleao ganha cores.
         * As cores que estao representadas na gameScene sao meramente ilustrativas.
         *
         * Isso da um pouco mais de flexibilidade.
         * No momento o que determina as cores realmente, e a funcao GetColor que esta em Colored
         *
         *
         */


        float  rotacaoArco = 360 / coresDisponiveis.Count;
        double tamArco     = 1.0 / coresDisponiveis.Count;
        float  rotacao     = 0;

        //print("oba nova cor");
        for (int i = 0; i < _rings.Length; i++)
        {
            Image r      = _rings[i];
            Image rImage = null;
            foreach (Transform t in r.transform)
            {
                rImage = t.GetComponent <Image>();
            }
            //print("coresDisponiveis agora sao " + coresDisponiveis.Count);

            if (i < coresDisponiveis.Count)
            {
                //print(rImage.name);
                rImage.color = Colored.GetColor(coresDisponiveis[i]);
                //print("vou pintar o anel de nome " + rImage.name + "com cor " + rImage.color.ToString());
            }
            else
            {
                //print("deixei o anel de id " + i + " transparente");
                rImage.color = new Color(0, 0, 0, 0);
            }

            //print(r.name + " vai ter uma rotacao " + rotacao + " e vai preencher " + tamArco);

            //Euler angles sao graus de 0 ate 360
            //é para usar euler angles e nao rotation
            //rotation é um formato interno do unity e nao é muito facil de usar

            r.rectTransform.localEulerAngles = new Vector3(0, 0, rotacao);
            r.fillAmount = (float)tamArco;
            rotacao     += rotacaoArco;
        }
    }
Exemplo n.º 2
0
    /*
     * Troca a cor central para a cor desejada
     * Destaca o anel correspondente
     * Retorna os outros aneis para suas formas normais
     *
     *
     * Note que no unity é necessário usar um for para capturar o primeiro elemento filho, mesmo que ele seja o unico
     * Bem, isso é uma merda.
     */
    public void setCentralColor(Colored.Corenum cor)
    {
        _centralColor.color = Colored.GetColor(cor);

        Image rImage = null;

        foreach (Image r in _rings)
        {
            foreach (Transform t in r.transform)
            {
                rImage = t.GetComponent <Image>();
            }
            if (rImage.color == Colored.GetColor(cor))
            {
                r.sprite = anelSelecionado;
            }
            else
            {
                r.sprite = anel;
            }
        }
    }
Exemplo n.º 3
0
 /*
  * Troca a cor central para a cor desejada
  * Destaca o anel correspondente
  * Retorna os outros aneis para suas formas normais
  *
  *
  * Note que no unity é necessário usar um for para capturar o primeiro elemento filho, mesmo que ele seja o unico
  * Bem, isso é uma merda.
  */
 public void setCentralColor(Colored.Corenum cor)
 {
     _centralRock.color = Colored.GetColor(cor);
     _selectedRock      = _rocks[(int)cor];
 }