public int UpdateDefinicao(Heroi hero) { int count = 0; Vector2 posicaoToque; //Add an enemy at 100m and every 50 after //Should an additional enemy be added? if (hero.PosicaoX / 20 > adicionaDistanciaInimigo) { InimigoPatrulha inimigo = SpawnInimigos(); listaInimigos.Add(inimigo); adicionaDistanciaInimigo += 50; } // destroy and respawn, update and collide with bubbles for (int i = listaInimigos.Count - 1; i >= 0; i--) { if (listaInimigos[i].DestroiFlag) { listaInimigos.Remove(listaInimigos[i]); listaInimigos.Add(SpawnInimigos()); continue; } //if(listaInimigos[i].UpdatePatrulha(hero, out posicaoToque)) //{ // efeitoColisao.AdiconaAt(CriaParticulaVermelha, posicaoToque); // count++; //} //List<Shooter> todosDiparos = hero.TodosDisparos(); //int numDisparos = todosDiparos.Count; //for(int j=numDisparos-1;j>=0;j--) //{ // if(todosDiparos[j].ToquePixeis(listaInimigos[i], out posicaoToque)) // { // listaInimigos[i].DefineParaEstadoStunned(); // todosDiparos.RemoveAt(j); // //efeitoColisao.AddEmissor(criaParticulavermelha, posicaoToque); // } //} } //efeitoColisao.UpdatePariculas(); RespawnInimigos(); return(count); }
public bool UpdatePatrulha(Heroi hero, out Vector2 posicaoApanhado) { bool apanhado = false; posicaoApanhado = Vector2.Zero; timerEmEstado--; //Comum a todos os estados if (estadoActual != EstadoPatrulha.Stunned) { base.Update(); Vector2 paraHeroi = hero.Posicao - Posicao; paraHeroi.Normalize(); Vector2 paraAlvo = posicaoAlvo - Posicao; float distanciaAlvo = paraAlvo.Length(); paraAlvo.Normalize();//Diferente do codigo CalculoNovaDireccao(paraAlvo, paraHeroi); switch (estadoActual) { case EstadoPatrulha.Patrulha: UpdatePatrulhaEstado(hero, distanciaAlvo); break; case EstadoPatrulha.Perseguicao: apanhado = UpdateEstadoPerseguicao(hero, distanciaAlvo, out posicaoApanhado); break; } } else { UpdateEstadoStunned(hero); } return(apanhado); }