//***************************************************** // 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(); } }
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(); } }