Example #1
0
    //*****************************************************
    // BOTAO: confirma investimento mensal
    //
    //*****************************************************

    public void BotaoInvesteMes()
    {
        //busca valor input !! (incluir investe valor vairado)
        float valor_investido = Info.meta_valor_mensal;

        //simula como real
        Info.total_investimentos += valor_investido;
        Info.atual_valor         += valor_investido;

        //desliga menu
        menu_investe_mes.SetActive(false);

        //atualiza mostrador 3d capital e textos UI
        AtualizaValorAtual();
        AtualizaTextosUI();

        //atualiza 3D mes atual
        parte_atual.GetComponent <Objeto>().AtualizaValor(Info.atual_valor);

        //POSICIONA CAMERA : mostra mes da acao
        Vector3 pos = Camera.main.transform.position + new Vector3(2, 2, -7);

        cam_script.MostrarMes(pos);

        //*******************************************************
        //CRIA OBJ3D - investimento mes
        //*******************************************************
        Vector3    nova_posicao = new Vector3(parte_atual.transform.position.x, 0, parte_atual.transform.position.z);
        GameObject investe      = Instantiate(investimento_prefab, nova_posicao, Quaternion.identity);

        //tamanho - mes atual e cresce
        investe.transform.localScale = new Vector3(1, 0, 1);
        investe.transform.position  += new Vector3(-0.5f, 0, -1.1f);

        //nome e cor
        investe.name = "Investido" + Info.atual_mes.ToString();
        investe.GetComponent <Renderer>().material.color = new Color(0, 0.6f, 0.1f, 1);

        //acessa script do objeto novo
        Objeto script = investe.GetComponent <Objeto>();

        if (script)
        {
            script.info = "Investido (mês " + Info.atual_mes.ToString() + ")";
            script.AtualizaValor(valor_investido);
        }


        //FIM > se nao atingiu meta
        if (Info.atual_valor >= Info.meta_valor_total)
        {
            MenuFimMeta();
        }
    }
Example #2
0
    IEnumerator SimulaMesTempo()
    {
        //MOSTRA INFO DA SIMULACAO - acesso textos UI
        Text texto_log_dias = GameObject.Find("TextLogDias").GetComponent <Text>();

        texto_log_dias.text = "";

        Text texto_saldos = GameObject.Find("TextSaldos").GetComponent <Text>();

        texto_saldos.text = "Saldo inicial: $ " + Info.atual_valor.ToString("0.00");

        //POSICAO para grafico = referencia ultima parte
        posicao_inicia_grafico   = parte_atual.transform.position + new Vector3(0, parte_atual.transform.localScale.y, -0.6f);
        posicao_inicia_grafico.y = 0;

        //POSICIONA CAMERA : mostra mes da acao
        Vector3 pos = posicao_inicia_grafico + new Vector3(0, parte_atual.transform.localScale.y, -5);

        cam_script.MostrarMes(pos);

        //espera movimento camera
        yield return(new WaitForSeconds(1f));

        //cria obj3d - representa grafico linha
        GameObject   gra           = Instantiate(grafico1_prefab, Vector3.zero, Quaternion.identity);
        LineRenderer grafico_atual = gra.GetComponent <LineRenderer>();

        //precisa inicializar todos pontos grafico (evita erro grafico)
        for (int i = 0; i < grafico_atual.positionCount; i++)
        {
            grafico_atual.SetPosition(i, posicao_inicia_grafico);
        }

        //rendimento simulado randomico (buscar valor real) apenas simulação para visualização
        float rende            = 0;
        float rende_mes        = 0;
        float valor_provisorio = Info.atual_valor;
        float altura_calculada = 0;

        //simula 20 dias uteis (nao real)
        for (int dia = 0; dia < 20; dia++)
        {
            //VALOR ALEATORIO / DIA
            rende = Random.Range(-0.01f, 0.025f);
            //rendimento acumulado mes
            rende_mes += rende;
            //calcula valor + rende
            valor_provisorio = valor_provisorio + (valor_provisorio * rende);
            //escala para grafico
            altura_calculada = 10 * (valor_provisorio / Info.meta_valor_total);

            //desenha grafico linha
            Vector3 posicao = posicao_inicia_grafico + new Vector3(dia * 0.055f, altura_calculada, 0);
            grafico_atual.positionCount++;
            grafico_atual.SetPosition(dia, posicao);

            //mostra info UI
            texto_log_dias.text += "Dia " + dia.ToString() + ": " + rende.ToString("0.000") + "\n";

            yield return(new WaitForSeconds(0.1f));
        }

        //APURA TOTAIS SIMULACAO
        float valor_rende_mes = valor_provisorio - Info.atual_valor;

        //USA VALORES COMO ATUAL - registra
        Info.atual_valor        = valor_provisorio;
        Info.total_rendimentos += valor_rende_mes;

        //INFO na tela UI
        texto_saldos.text += "\nRendimentos mês: $ " + valor_rende_mes.ToString("0.00");
        texto_saldos.text += "\nSaldo final: $ " + Info.atual_valor.ToString("0.00");

        //*******************************************************
        //CRIA OBJ3D : representa ganho investimento mes
        //*******************************************************
        Vector3 nova_posicao = posicao_inicia_grafico;

        nova_posicao += new Vector3(0.5f, 0, -2f);
        GameObject recebe_mes = Instantiate(investimento_prefab, nova_posicao, Quaternion.identity);

        //nome e cor
        recebe_mes.GetComponent <Renderer>().material.color = Color.yellow;
        recebe_mes.name = "RendeMes" + Info.atual_mes;
        //inicia pequeno - efeito cresce
        recebe_mes.transform.localScale = new Vector3(1, 0, 1);

        //acessa script do objeto novo
        Objeto script = recebe_mes.GetComponent <Objeto>();

        if (script)
        {
            script.info = "Rendimento (mês " + Info.atual_mes.ToString() + ")";
            script.AtualizaValor(valor_rende_mes);
        }

        //*******************************************************
        //CRIA OBJ3D - proximo mes
        //*******************************************************
        GameObject novo_mes = Instantiate(investimento_prefab, nova_posicao, Quaternion.identity);

        //tamanho - mes atual e cresce
        novo_mes.transform.localScale = parte_atual.transform.localScale;
        novo_mes.transform.position   = parte_atual.transform.position + new Vector3(1.1f, 0, 0);

        //nome e cor
        novo_mes.name = "Mes" + Info.atual_mes.ToString();
        novo_mes.GetComponent <Renderer>().material.color = Color.green;

        //acessa script do objeto novo
        script = novo_mes.GetComponent <Objeto>();
        if (script)
        {
            script.info = "Saldo (mês " + Info.atual_mes.ToString() + ")";
            script.AtualizaValor(Info.atual_valor);
        }

        //define novo mes como atual
        parte_atual = novo_mes;

        //atualiza mostrador 3d capital e textos UI
        AtualizaValorAtual();
        AtualizaTextosUI();

        //AGUARDA ANIMACOES
        yield return(new WaitForSeconds(2f));

        //menu investimento mes
        //se nao atingiu meta
        if (Info.atual_valor < Info.meta_valor_total)
        {
            MenuInvestimentoMensal();
        }
        //atingiu meta = fim
        else
        {
            MenuFimMeta();
        }
    }