void LancarPassanteBaixo() { Passante p = ondasBaixo[atualBaixo].Lancar(); if (p != null) { Lancar(p); if (ondasBaixo[atualBaixo].Gritar()) { Gritar(); } } }
void LancarPassanteCima() { Passante p = ondasCima[atualCima].Lancar(); if (p != null) { Lancar(p); if (ondasCima[atualCima].Gritar()) { Gritar(); } } }
// Métodos estáticos public static void DerrubouPassante(Passante p, int pontos) { Dados.pontosUltimaFasePassantes += pontos; totalDerrubados++; if (p.ponte == Pontes.Cima) { derrubadosCima++; } else { derrubadosBaixo++; } }
Onda CriarNovaOndaSobrevivencia() { int dir = 1; if (Utilidade.MeiaChance()) { dir = -1; } List <Passante> listapassantes = new List <Passante>(); float vel = Random.Range(1.0f, 1.5f) * ((float)Dados.jogoRapidoDificuldade * dir); Passante passante = new Passante(vel, Pontes.Cima); listapassantes.Add(passante); if (podeLancarMaisDeUmSobrevivencia) { float changeVir1 = ((float)Dados.jogoRapidoDificuldadeMaxima - Dados.jogoRapidoDificuldade + 1); changeVir1 /= ((float)Dados.jogoRapidoDificuldadeMaxima); float chanceVir2 = 1f - changeVir1; float chanceVir3 = chanceVir2 * 0.333f; float aleatorio = Random.value; if (aleatorio < chanceVir2) { Passante passante2 = new Passante(vel * 0.8f, Pontes.Cima); listapassantes.Add(passante2); } if (aleatorio < chanceVir3) { Passante passante3 = new Passante(vel * 0.6f, Pontes.Cima); listapassantes.Add(passante3); } } Onda onda = new Onda(listapassantes); return(onda); }
void Lancar(Passante p) { float destino = ponteCimaDireita.position.x; Vector3 posicao = ponteCimaEsquerda.position; int indice = Random.Range(0, passantes.Length); GameObject prePass = passantes[indice]; if (p.ponte == Pontes.Cima) { if (p.direcao == Passante.Direcoes.ParaEsquerda) { destino = ponteCimaEsquerda.position.x; posicao = ponteCimaDireita.position; } } else { if (p.direcao == Passante.Direcoes.ParaEsquerda) { destino = ponteBaixoEsquerda.position.x; posicao = ponteBaixoDireita.position; } else { destino = ponteBaixoDireita.position.x; posicao = ponteBaixoEsquerda.position; } } GameObject passante = (GameObject)Instantiate( prePass, posicao, Quaternion.identity); if (p.direcao == Passante.Direcoes.ParaEsquerda) { passante.transform.localScale = new Vector3( -passante.transform.localScale.x, passante.transform.localScale.y, passante.transform.localScale.z); } passante.GetComponent <ControlePassante>() .Criar(p, destino); }
void SobrevivenciaLancarPassanteCima() { if (ondasCima.Count == 0 || ondasCima[0].Acabou()) { ondasCima.Clear(); ondasCima.Add(CriarNovaOndaSobrevivencia()); } Passante p = ondasCima[atualCima].Lancar(); if (p != null) { Lancar(p); if (ondasCima[atualCima].Gritar()) { Gritar(); } } }
// Métodos públicos public void Criar(Fase f, bool inicializar = true) { //Debug.Log(f.ParaString()); // Pega os passantes da ponte de cima ondasCima.Clear(); int patual = 0; foreach (int o in f.w) { List <Passante> passantes = new List <Passante>(); for (int i = 0; i < o; i++) { Passante passante = new Passante( f.s[patual + i], Pontes.Cima); passantes.Add(passante); } patual += passantes.Count; ondasCima.Add(new Onda(passantes)); } // Pega os passantes da ponte de baixo ondasBaixo.Clear(); Dados.ponteBaixo = false; if (f.sbridge) { Dados.ponteBaixo = true; patual = 0; foreach (int o in f.sw) { List <Passante> passantes = new List <Passante>(); for (int i = 0; i < o; i++) { Passante passante = new Passante( f.ss[patual + i], Pontes.Baixo); passantes.Add(passante); } patual += passantes.Count; ondasBaixo.Add(new Onda(passantes)); } } // Verifica o movimento do barco Dados.barcoMove = false; if (f.boat > 0) { Dados.barcoMove = true; switch (f.boat) { case 1: Dados.barcoVelocidade = Dados.BARCO_VELOCIDADE_LENTO; break; case 2: Dados.barcoVelocidade = Dados.BARCO_VELOCIDADE_NORMAL; break; case 3: Dados.barcoVelocidade = Dados.BARCO_VELOCIDADE_RAPIDO; break; } } // Verifica o vento controleVento.Desabilitar(); Dados.vento = false; if (f.wind > 0) { Dados.vento = true; switch (f.wind) { case 1: Dados.ventoVelocidade = Dados.VENTO_VELOCIDADE_LENTO; break; case 2: Dados.ventoVelocidade = Dados.VENTO_VELOCIDADE_NORMAL; break; case 3: Dados.ventoVelocidade = Dados.VENTO_VELOCIDADE_RAPIDO; break; case 4: Dados.ventoVelocidade = Dados.VENTO_VELOCIDADE_MAX; break; } switch (f.dir) { case 1: Dados.ventoDirecao = Dados.VENTO_DIRECAO_NORTE; break; case 2: Dados.ventoDirecao = Dados.VENTO_DIRECAO_NORDESTE; break; case 3: Dados.ventoDirecao = Dados.VENTO_DIRECAO_LESTE; break; case 4: Dados.ventoDirecao = Dados.VENTO_DIRECAO_SUDESTE; break; case 5: Dados.ventoDirecao = Dados.VENTO_DIRECAO_SUL; break; case 6: Dados.ventoDirecao = Dados.VENTO_DIRECAO_SUDOESTE; break; case 7: Dados.ventoDirecao = Dados.VENTO_DIRECAO_OESTE; break; case 8: Dados.ventoDirecao = Dados.VENTO_DIRECAO_NOROESTE; break; default: Dados.ventoDirecao = Dados.VENTO_DIRECAO_NORTE; break; } } // Verifica se o vento varia de velocidade if (f.wind < 0) { float [] velos = new float[f.v.Count]; for (int i = 0; i < velos.Length; i++) { switch (f.v[i]) { case 1: velos[i] = Dados.VENTO_VELOCIDADE_LENTO; break; case 2: velos[i] = Dados.VENTO_VELOCIDADE_NORMAL; break; case 3: velos[i] = Dados.VENTO_VELOCIDADE_RAPIDO; break; case 4: velos[i] = Dados.VENTO_VELOCIDADE_MAX; break; } } controleVento.Velocidades(f.wtime, velos); } // Verifica se o vento varia de direção if (f.dir < 0) { Vector2 [] dirs = new Vector2[f.d.Count]; for (int i = 0; i < dirs.Length; i++) { switch (f.d[i]) { case 1: dirs[i] = Dados.VENTO_DIRECAO_NORTE; break; case 2: dirs[i] = Dados.VENTO_DIRECAO_NORDESTE; break; case 3: dirs[i] = Dados.VENTO_DIRECAO_LESTE; break; case 4: dirs[i] = Dados.VENTO_DIRECAO_SUDESTE; break; case 5: dirs[i] = Dados.VENTO_DIRECAO_SUL; break; case 6: dirs[i] = Dados.VENTO_DIRECAO_SUDOESTE; break; case 7: dirs[i] = Dados.VENTO_DIRECAO_OESTE; break; case 8: dirs[i] = Dados.VENTO_DIRECAO_NOROESTE; break; default: dirs[i] = Dados.VENTO_DIRECAO_NORTE; break; } } controleVento.Direcoes(f.dtime, dirs); } // Habilita as coisas controleVento.Reiniciar(); rebatedores.RemoverRebatedores(); rebatedores.AdicionarTodos(f.bouncers); if (inicializar) { IniciarFase(); } }
// Métodos públicos public void Criar(Passante p, float d) { passante = p; destino = d; }