Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }