public Missoes SelecionarUmaMissao() { Missoes M = new Missoes(); bool foi = false; float somaDasTaxas = 0; int i; for (i = 0; i < listaDeTaxas.Count; i++) { somaDasTaxas += listaDeTaxas[i].TaxaDeEscolha; } float sorteado = Random.Range(0, somaDasTaxas); somaDasTaxas = 0; for (i = 0; i < listaDeTaxas.Count; i++) { somaDasTaxas += listaDeTaxas[i].TaxaDeEscolha; if (sorteado <= somaDasTaxas && !foi) { foi = true; M = PegueUmaMissao.Missao(listaDeTaxas[i]); AtualizaListaDeTaxas(M, 1); } } return(M); }
public void AtualizaListaDeTaxas(Missoes aMissao, int tanto) { for (int i = 0; i < listaDeTaxas.Count; i++) { if (listaDeTaxas[i].Tipo == aMissao.Tipo) { listaDeTaxas[i] = new TaxaDeMissao() { Level = Mathf.Max(listaDeTaxas[i].Level + tanto, 1), Tipo = aMissao.Tipo, TaxaDeEscolha = Mathf.Max(0.01f, listaDeTaxas[i].TaxaDeEscolha - (TAXA_DE_VARIACAO * (listaDeTaxas.Count - 1)) ) }; } else { listaDeTaxas[i] = new TaxaDeMissao() { Level = listaDeTaxas[i].Level, Tipo = listaDeTaxas[i].Tipo, TaxaDeEscolha = listaDeTaxas[i].TaxaDeEscolha + TAXA_DE_VARIACAO }; } } }
public static Missoes Missao(TaxaDeMissao taxa) { Missoes M = new Missoes(); switch (taxa.Tipo) { case TipoMissao.coleteMoedas: M = new ColeteMoedas(taxa.Level); break; case TipoMissao.moedasEmUnicoJogo: M = new MoedasEmUnicoJogo(taxa.Level); break; case TipoMissao.coleteEstaminas: M = new ColeteEstaminas(taxa.Level); break; case TipoMissao.estaminasEmUnicoJogo: M = new EstaminasEmUnicoJogo(taxa.Level); break; case TipoMissao.coleteEsferas: M = new ColeteEsferas(taxa.Level); break; case TipoMissao.esferasEmUnicoJogo: M = new EsferasEmUnicoJogo(taxa.Level); break; case TipoMissao.coleteCheckCombos: M = new ColeteCheckCombos(taxa.Level); break; case TipoMissao.checkCombosEmUnicoJogo: M = new CheckCombosEmUnicoJogo(taxa.Level); break; case TipoMissao.derroteInimigos: M = new DerroteInimigos(taxa.Level); break; case TipoMissao.inimigosEmUnicoJogo: M = new InimigosEmUnicoJogo(taxa.Level); break; case TipoMissao.somePontuacao: M = new SomePontuacao(taxa.Level); break; case TipoMissao.pontuacaoEmUnicoJogo: M = new PontuacaoEmUnicoJogo(taxa.Level); break; case TipoMissao.passeDeNivel: M = new PasseDeNivel(taxa.Level); break; case TipoMissao.alcanceCombo: M = new AlcanceCombo(taxa.Level); break; case TipoMissao.alcanceNivel: M = new AlcanceNivel(taxa.Level); break; default: Debug.Log("tipo de missão não incluido ao case"); break; } return(M); }