Exemple #1
0
        public void Update(GameTime gameTime, Nave jugador)
        {
            float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;

            spawnTimer += elapsed;



            if (spawnTimer >= spawnRate)
            {
                do
                {
                    posX = rand.Next(-100, 1300);
                } while (posX > 0 && posX < 1200);

                do
                {
                    posY = rand.Next(-100, 820);
                } while (posY > 0 && posY < 720);

                ListaPower.Add(new PowerUp(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(posX, posY)));
                spawnTimer = 0;
            }
            for (int i = 0; i < ListaPower.Count; i++)//Update each astroid
            {
                UpdatePower(ListaPower[i], elapsed);
                if (ListaPower[i].boundingBox.Intersects(jugador.recNave))
                {
                    ListaPower[i].esVisible = false;
                    jugador.spawnRate       = jugador.spawnRate / 2;
                }

                if (!ListaPower[i].esVisible)
                {
                    ListaPower.RemoveAt(i);
                }
            }


            //aumentar el timer en milisegundos
            timer += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
            //Funciono!!
            if (timer > interval)
            {
                //mostrar el proximo frame
                currentFrame++;
                timer = 0f;
            }

            //Si estamos en el ultimo frame, resetear al primero
            if (currentFrame == 8)
            {
                //isVisible = false;
                currentFrame = 0;
            }

            sourceRect = new Rectangle(currentFrame * spriteWidth, 0, spriteWidth, spriteHeight);
            origen     = new Vector2(sourceRect.Width / 2, sourceRect.Height / 2);
        }
        public void Update(GameTime gameTime, Nave jugador)
        {
            foreach (Explosion exe in ExplosionList)
            {
                exe.Update(gameTime);
            }

            float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;

            spawnTimer += elapsed;



            if (spawnTimer >= spawnRate)
            {
                do
                {
                    posX = rand.Next(-100, 1300);
                } while (posX > 0 && posX < 1200);

                do
                {
                    posY = rand.Next(-100, 820);
                } while (posY > 0 && posY < 720);

                ListaAster.Add(new Asteroid(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(posX, posY), rand.Next(30, 200)));
                spawnTimer = 0;
            }
            for (int i = 0; i < ListaAster.Count; i++)//Update each astroid
            {
                UpdateAsteroid(ListaAster[i], elapsed);
                if (ListaAster[i].boundingBox.Intersects(jugador.recNave))
                {
                    ListaAster[i].esVisible = false;
                    Murio = true;
                }
                for (int j = 0; j < jugador.listaBalas.Count; j++)
                {
                    if (ListaAster[i].boundingBox.Intersects(jugador.listaBalas[j].boundingBox) && ListaAster[i].Escala >= 1 && jugador.listaBalas[j].esVisible && ListaAster[i].esVisible)
                    {
                        ExplosionList.Add(new Explosion(texturaExplosion, new Vector2(ListaAster[i].Position.X, ListaAster[i].Position.Y), ListaAster[i].Escala));
                        ListaAster.Add(new Asteroid(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(ListaAster[i].Position.X + 2, ListaAster[i].Position.Y + 2), (float)rand.Next(30, 100)));
                        ListaAster.Add(new Asteroid(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(ListaAster[i].Position.X + 2, ListaAster[i].Position.Y + 2), (float)rand.Next(30, 100)));
                        ListaAster.RemoveAt(i);
                        jugador.listaBalas[j].esVisible = false;
                        jugador.sn.explosion.Play();
                    }
                    if (ListaAster[i].boundingBox.Intersects(jugador.listaBalas[j].boundingBox) && ListaAster[i].Escala < 1 && jugador.listaBalas[j].esVisible && ListaAster[i].esVisible)
                    {
                        ExplosionList.Add(new Explosion(texturaExplosion, new Vector2(ListaAster[i].Position.X, ListaAster[i].Position.Y), ListaAster[i].Escala));
                        ListaAster[i].esVisible         = false;
                        jugador.listaBalas[j].esVisible = false;
                        jugador.sn.explosion.Play();
                    }
                }
                if (!ListaAster[i].esVisible)
                {
                    ListaAster.RemoveAt(i);
                }
            }
        }