コード例 #1
0
    public void Inicializar(
        Transform pai = null, int pos = 0, Transform paiRastro = null)
    {
        tipo           = Utilidade.GerarTipoBotao();
        valor          = Utilidade.PegarValor(tipo);
        cor            = Utilidade.CorPorTipo(tipo);
        this.paiRastro = paiRastro;

        //Utilidade.DebugMensagem ("Botão criado. Tipo: "+tipo+"; "+
        //           "Valor: "+valor+"; "+" Cor: "+cor);

        transform.SetParent(pai, false);
        posicaoGrade = pos;

        imagem   = GetComponent <Image>();
        txtValor =
            transform.FindChild(nomeTextoValor).GetComponent <Text>();
        txtSinal =
            transform.FindChild(nomeTextoSinal).GetComponent <Text>();
        brilho         = GetComponent <Outline>();
        brilho.enabled = false;

        rastrinho = Instantiate <GerRastro>(rastro);
        //rastrinho.Inicializar(transform, cor, paiRastro);

        Alterar();
    }
コード例 #2
0
    public void Zerou()
    {
        tipo  = Tipos.Botao.Zero;
        valor = 0;
        Alterar();

        sumir = true;
        tempo = Time.time + tempoSumir;
    }
コード例 #3
0
    /// <summary>
    /// Gera um valor aleatório, baseado no tipo.
    /// </summary>
    /// <returns>Valor em pontos</returns>
    /// <param name="tipo">Tipo</param>
    public static int PegarValor(Tipos.Botao tipo)
    {
        switch (tipo)
        {
        case Tipos.Botao.Positivo:
            return(ValorSomaSubtracao());

        case Tipos.Botao.Negativo:
            return(ValorSomaSubtracao() * -1);

        case Tipos.Botao.Multiplicador:
            return(ValorMultiplicador());
        }

        return(0);
    }
コード例 #4
0
    /// <summary>
    /// Retorna uma cor baseada no tipo do botão.
    /// </summary>
    /// <returns>Cor relativa ao tipo</returns>
    /// <param name="tipo">Tipo do botão</param>
    public static Color CorPorTipo(Tipos.Botao tipo)
    {
        switch (tipo)
        {
        case Tipos.Botao.Positivo:
            return(Constantes.corPositivo);

        case Tipos.Botao.Negativo:
            return(Constantes.corNegativo);

        case Tipos.Botao.Multiplicador:
            return(Constantes.corMultiplicador);
        }

        return(Constantes.corZero);
    }
コード例 #5
0
    /// <summary>
    /// Gera um tipo de botão aleatório, baseado na chance
    /// do multiplicador. Se não for multiplicador, tem 50%
    /// de chance de voltar positivo ou negativo.
    /// </summary>
    /// <returns>The botao.</returns>
    public static Tipos.Botao GerarTipoBotao()
    {
        Tipos.Botao tipo = Tipos.Botao.Multiplicador;

        if (Random.value < 1 - Dados.chanceMultiplicador)
        {
            if (MeiaChance())
            {
                tipo = Tipos.Botao.Positivo;
            }
            else
            {
                tipo = Tipos.Botao.Negativo;
            }
        }

        return(tipo);
    }
コード例 #6
0
    public void Mudar(long novoValor, bool mul = false)
    {
        valor = novoValor;
        if (mul)
        {
            tipo = Tipos.Botao.Multiplicador;
        }
        else if (valor > 0)
        {
            tipo = Tipos.Botao.Positivo;
        }
        else
        {
            tipo = Tipos.Botao.Negativo;
        }

        Alterar();
    }
コード例 #7
0
    static void JuntarObjetos(GerBotao parado, GerBotao juntado)
    {
        long novoValor = 0;
        long pontos    = 0;

        int pospar = PegarPosicao(parado);              //parado.posicaoGrade;
        int posjun = PegarPosicao(juntado);             //juntado.posicaoGrade;

        bool mul = false;

        if (juntado.multiplicou)
        {
            parado.multiplicou = true;
        }

        Tipos.Botao tipo = juntado.tipo;

        if (parado.tipo == Tipos.Botao.Multiplicador ||
            juntado.tipo == Tipos.Botao.Multiplicador)
        {
            novoValor = parado.valor * juntado.valor;
            if (novoValor > 0 && novoValor > Dados.blocoMaiorValor)
            {
                novoValor = Dados.blocoMaiorValor;
            }
            else if (novoValor < 0 && novoValor < -Dados.blocoMaiorValor)
            {
                novoValor = -Dados.blocoMaiorValor;
            }

            parado.multiplicou = true;

            if (parado.tipo == Tipos.Botao.Multiplicador &&
                juntado.tipo == Tipos.Botao.Multiplicador)
            {
                mul = true;
            }
        }
        else
        {
            novoValor = parado.valor + juntado.valor;
            if (novoValor > 0 && novoValor > Dados.blocoMaiorValor)
            {
                novoValor = Dados.blocoMaiorValor;
            }
            else if (novoValor < 0 && novoValor < -Dados.blocoMaiorValor)
            {
                novoValor = -Dados.blocoMaiorValor;
            }
        }

        long [] valores = new long[2];
        valores[0] = parado.valor;
        valores[1] = juntado.valor;
        VerificarRealizacoes(
            Realizacao.Tipo.Fundir, valores);
        VerificarRealizacoes(
            Realizacao.Tipo.FundirIndiferente, valores);

        LiberarPosicao(posjun);

        //objetos.Remove(juntado);
        juntado.Destruir();

        if (novoValor == 0)
        {
            EfeitosSonoros.Tocar(EfeitosSonoros.Tipos.Zerar);

            adicionarNovoBlocoAleatorio = true;
            //AdicionarEmPosicaoAleatoria();

            if (parado.valor < 0)
            {
                pontos = -parado.valor;
            }
            else
            {
                pontos = parado.valor;
            }
            //objetos.Remove(parado);
            parado.Zerou();
            LiberarPosicao(pospar);

            VerificarMissao(missaoZerar, pontos);
        }
        else
        {
            switch (tipo)
            {
            case Tipos.Botao.Positivo:
                EfeitosSonoros.Tocar(EfeitosSonoros.Tipos.Somar);
                break;

            case Tipos.Botao.Negativo:
                EfeitosSonoros.Tocar(EfeitosSonoros.Tipos.Subtrair);
                break;

            case Tipos.Botao.Multiplicador:
                EfeitosSonoros.Tocar(EfeitosSonoros.Tipos.Multiplicar);
                break;
            }


            valores    = new long[1];
            valores[0] = novoValor;

            long absNovoValor = novoValor;
            if (novoValor < 0)
            {
                absNovoValor = -novoValor;
            }

            if (mul)
            {
                VerificarMissao(
                    missaoMultiplicador, absNovoValor);
            }
            else
            {
                VerificarMissao(missaoBloco, absNovoValor);

                if (parado.multiplicou == false)
                {
                    VerificarRealizacoes(
                        Realizacao.Tipo.BlocoSemMultiplicar, valores);
                }
            }

            if (parado.tipo != Tipos.Botao.Multiplicador)
            {
                VerificarRealizacoes(
                    Realizacao.Tipo.BlocoNormal, valores);
                VerificarRealizacoes(
                    Realizacao.Tipo.BlocoMaiorQue, valores);
                VerificarRealizacoes(
                    Realizacao.Tipo.BlocoAbsoluto, valores);
            }

            parado.Mudar(novoValor, mul);
            parado.Brilhar();

            if (Random.value <= Dados.chanceCriarNovoBloco)
            {
                //AdicionarEmPosicaoAleatoria();
                adicionarNovoBlocoAleatorio = true;
            }
        }

        if (Dados.tutorialCompleto == false)
        {
            pontos = 0;
        }

        //Cria funçao para mostrar pontos ganhos.
        Dados.pontosAtuais += pontos;
        VerificarMissao(missaoPlacar, Dados.pontosAtuais);

        valores    = new long[1];
        valores[0] = Dados.pontosAtuais;
        VerificarRealizacoes(
            Realizacao.Tipo.PlacarExato, valores);

        /*
         * Utilidade.DebugMensagem(
         *      "Pontos recebidos: "+pontos +
         *      "; Nova pontuação: "+Dados.pontosAtuais+
         *      "; Resets: " + Dados.quantidadeDeResets +
         *      "; Pontos totais: "+Dados.pontosTotaisReais);
         * //*/

        VerificarReset(pontos);

        valores = new long[1];
        if (Dados.pontosTotaisReais < (ulong)Dados.pontosParaReset)
        {
            valores[0] = (long)Dados.pontosTotaisReais;
        }
        else
        {
            valores[0] = Dados.pontosParaReset;
        }
        VerificarRealizacoes(
            Realizacao.Tipo.Placar, valores);

        AjeitarResets();

        List <long> listaValores = new List <long>();
        string      vs           = "Valores:";

        foreach (GerBotao bloco in objetos)
        {
            if (bloco == null)
            {
                continue;
            }
            if (bloco.tipo != Tipos.Botao.Multiplicador &&
                bloco.tipo != Tipos.Botao.Zero)
            {
                vs += " " + bloco.valor;
                listaValores.Add(bloco.valor);
            }
        }
        VerificarRealizacoes(
            Realizacao.Tipo.VariosBlocos, listaValores.ToArray());
        //Utilidade.DebugMensagem (vs);

        valores    = new long[1];
        valores[0] = (long)Dados.quantidadeDeResets;
        VerificarRealizacoes(Realizacao.Tipo.Zerar, valores);

        valores    = new long[1];
        valores[0] = 1;
        foreach (Missao missao in Dados.missoes)
        {
            if (missao.Completa() == false)
            {
                valores[0] = 0;
                break;
            }
        }
        VerificarRealizacoes(
            Realizacao.Tipo.CompletarMissoes, valores);
    }
コード例 #8
0
    //static int cont = 0;
    public static void AdicionarNaGrade(int tipo, int valor, int pos)
    {
        //cont++;
        //Debug.Log ("Entoru aqui pera "+cont+" vez!");
        //if (posicoesLivres.Count > 0)
        bool listaCheia = true;

        foreach (GerBotao b in objetos)
        {
            if (b == null)
            {
                listaCheia = false;
                break;
            }
        }

        if (listaCheia == false)
        {
            bool cheio       = false;
            int  posAnterior = pos;
            while (objetos[pos] != null)
            {
                pos++;
                if (pos >= qtdMaxima)
                {
                    pos = 0;
                }
                if (pos == posAnterior)
                {
                    cheio = true;
                    break;
                }
            }

            if (cheio == false)
            {
                Tipos.Botao tipoBloco = Tipos.Botao.Zero;
                switch (tipo)
                {
                case 0: tipoBloco = Tipos.Botao.Zero; break;

                case 1: tipoBloco = Tipos.Botao.Positivo; break;

                case 2: tipoBloco = Tipos.Botao.Negativo; break;

                case 3: tipoBloco = Tipos.Botao.Multiplicador; break;
                }

                GameObject botao = (GameObject)Instantiate(
                    botaoBaseEstatico, Vector3.zero, Quaternion.identity);

                botao.GetComponent <GerBotao>()
                .Inicializar(transformEstatico, pos,
                             painelRastrosEstatico);

                botao.GetComponent <GerBotao>().tipo  = tipoBloco;
                botao.GetComponent <GerBotao>().valor = valor;
                botao.GetComponent <GerBotao>().Alterar();

                if (tipoBloco == Tipos.Botao.Zero)
                {
                    botao.GetComponent <GerBotao>().Zerou();
                }

                botao.transform.localPosition = grade[pos % qtdMaxima];
                //Debug.Log ("Grade pos: "+(pos % qtdMaxima));

                //posicoesLivres.Remove(pos);
                //posicoesOcupadas.Add(pos);

                //objetos.Add(botao.GetComponent<GerBotao>());
                objetos[pos] = botao.GetComponent <GerBotao>();

                //RearranjarCenario();
            }
            else
            {
                MensagemListaCheia();
            }
        }
        else
        {
            MensagemListaCheia();
        }
    }