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(); }
public void Zerou() { tipo = Tipos.Botao.Zero; valor = 0; Alterar(); sumir = true; tempo = Time.time + tempoSumir; }
/// <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); }
/// <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); }
/// <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); }
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(); }
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); }
//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(); } }