Example #1
0
        protected override void Update(GameTime gameTime)
        {
            deadLinkSpin.Update(gameTime);
            float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;

            if (player.Health > 0)
            {
                player.Update(gameTime);
            }
            //bat.Update(gameTime,player.Position);
            dragon.Update(gameTime);
            monster.Update(gameTime);
            hand.Update(gameTime);
            knight.Update(gameTime);

            foreach (Item it in Item.items)
            {
                it.Update(gameTime);
            }
            foreach (explosion ex in explosion.exp)
            {
                ex.Update(gameTime);
            }
            foreach (Bat bat in Bat.bats)
            {
                bat.Update(gameTime, player.position);
                int sum = player.Radius + bat.Radius;
                if (Vector2.Distance(player.Position, bat.location) < sum && player.HealthTimer <= 0)
                {
                    player.Health--;
                    Vector2 moveDir = player.Position - bat.location;
                    moveDir.Normalize();

                    player.Pcolor    = Color.Red;
                    player.Position += moveDir * player.Damagedspeed * dt * 15;

                    player.HealthTimer = 1.0f;
                }
                if (player.HealthTimer <= 0)
                {
                    player.Pcolor = Color.White;
                }
            }

            foreach (ArrowProj arrow in ArrowProj.arrowLeft)
            {
                foreach (Bat bat in Bat.bats)
                {
                    int sum = arrow.Radius + bat.Radius;
                    if (Vector2.Distance(arrow.Position, bat.location) < sum)
                    {
                        arrow.Collided = true;
                        bat.Health--;
                        if (bat.Health <= 0)
                        {
                            explosion.exp.Add(new explosion(bat.location));
                        }
                    }
                }
            }
            foreach (ArrowProj arrow in ArrowProj.arrowRight)
            {
                foreach (Bat bat in Bat.bats)
                {
                    int sum = arrow.Radius + bat.Radius;
                    if (Vector2.Distance(arrow.Position, bat.location) < sum)
                    {
                        arrow.Collided = true;
                        bat.Health--;
                        if (bat.Health <= 0)
                        {
                            explosion.exp.Add(new explosion(bat.location));
                        }
                    }
                }
            }
            foreach (ArrowProj arrow in ArrowProj.arrowUp)
            {
                foreach (Bat bat in Bat.bats)
                {
                    int sum = arrow.Radius + bat.Radius;
                    if (Vector2.Distance(arrow.Position, bat.location) < sum)
                    {
                        arrow.Collided = true;
                        bat.Health--;
                        if (bat.Health <= 0)
                        {
                            explosion.exp.Add(new explosion(bat.location));
                        }
                    }
                }
            }
            foreach (ArrowProj arrow in ArrowProj.arrowDown)
            {
                foreach (Bat bat in Bat.bats)
                {
                    int sum = arrow.Radius + bat.Radius;
                    if (Vector2.Distance(arrow.Position, bat.location) < sum)
                    {
                        arrow.Collided = true;
                        bat.Health--;
                        if (bat.Health <= 0)
                        {
                            explosion.exp.Add(new explosion(bat.location));
                        }
                    }
                }
            }


            ArrowProj.arrowLeft.RemoveAll(p => p.Collided == true);
            ArrowProj.arrowRight.RemoveAll(p => p.Collided == true);
            ArrowProj.arrowUp.RemoveAll(p => p.Collided == true);
            ArrowProj.arrowDown.RemoveAll(p => p.Collided == true);
            Bat.bats.RemoveAll(e => e.Health <= 0);
            explosion.exp.RemoveAll(ex => ex.Timer <= 0);
            CollisionHandler collisionHandler = new CollisionHandler();

            collisionHandler.CollisionHandle(player, myHUD);

            bombHandler.Update(gameTime);
            arrowHandler.Update(gameTime);
            boomerangHandler.Update(gameTime);
            //cam.LookAt(player.camPosition);
            cam.LookAt(player.position);

            base.Update(gameTime);
        }