public static void Limpar(bool recriar = true) { for (int i = 0; i < objetos.Count; i++) { GerBotao gb = objetos[i]; //Utilidade.DebugMensagem ("Objeto: "+gb.posicaoGrade); if (gb != null) { gb.Destruir(); } } objetos.Clear(); //posicoesOcupadas.Clear(); //posicoesLivres.Clear(); //* if (recriar) { for (int i = 0; i < qtdMaxima; i++) { //posicoesLivres.Add(i); objetos.Add(null); } } //*/ }
public void Resetar() { for (int i = 0; i < objetos.Count; i++) { GerBotao gb = objetos[i]; //Utilidade.DebugMensagem ("Objeto: "+gb.posicaoGrade); if (gb != null) { gb.Destruir(); } } objetos.Clear(); //posicoesOcupadas.Clear(); //posicoesLivres.Clear(); Dados.pontosAtuais = 0; Dados.pontosTotaisReais = 0; Dados.quantidadeDeResets = 0; Dados.tempoTotalDeJogo = 0; Dados.tempoAtualDeJogo = 0; //if (posicoesLivres.Count == 0) //{ for (int i = 0; i < qtdMaxima; i++) { //posicoesLivres.Add(i); objetos.Add(null); } //} for (int i = 0; i < quantidadeInicial; i++) { AdicionarEmPosicaoAleatoria(); } foreach (Missao missao in Dados.missoes) { missao.Nivel(0); missao.AjeitarValores(); } foreach (Realizacao realizacao in Dados.realizacoes) { realizacao.completa = false; } AjeitarResets(); }
static void AjeitarGrade() { GameObject [] objs = GameObject. FindGameObjectsWithTag("Bloco"); //List<GerBotao> listanova = new List<GerBotao>(); foreach (GameObject obj in objs) { GerBotao bot = obj.GetComponent <GerBotao>(); if (!objetos.Contains(bot)) { bot.Destruir(); } //listanova.Add(bot); } }
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); }