Example #1
0
        /// <summary>
        /// Updates the level.
        /// </summary>
        /// <param name="gameTime">The game's time</param>
        public void Update(GameTime gameTime)
        {
            //Updateing assets
            health.Update(gameTime);
            player.Update(gameTime);

            foreach (var enemy in enemiesH)
            {
                enemy.Update(gameTime);
            }
            foreach (var enemy in enemiesV)
            {
                enemy.Update(gameTime);
            }

            //resetting colors
            player.Color = Color.White;
            foreach (var enemy in enemiesH)
            {
                enemy.Color = Color.White;
            }
            foreach (var enemy in enemiesV)
            {
                enemy.Color = Color.White;
            }

            //Enemies collision
            foreach (var enemy in enemiesH)
            {
                enemy.Update(gameTime);

                switch (player.Attack)
                {
                case Attack.Up:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundUp))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.Right:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundRight))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.Down:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundDown))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.Left:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundLeft))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.None:
                    //Do nothing
                    break;
                }

                if (!enemy.Killed && enemy.Bounds.CollidesWith(player.Bounds))
                {
                    health.Lives--;
                    hp--;
                    player.Color    = Color.Red;
                    player.Position = new Vector2(100, 250);
                    playerHit.Play();
                    //_explosion.PlaceExplosion(player.Position);
                }
            }
            foreach (var enemy in enemiesV)
            {
                enemy.Update(gameTime);

                switch (player.Attack)
                {
                case Attack.Up:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundUp))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.Right:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundRight))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.Down:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundDown))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.Left:
                    if (!enemy.Killed && enemy.Bounds.CollidesWith(player.SwordBoundLeft))
                    {
                        enemy.Color = Color.Red;
                        numEnemies--;
                        enemy.Killed = true;
                        basicEnemyHit.Play();
                        lightBlood.PlaceFirework(enemy.Position);
                    }
                    break;

                case Attack.None:
                    //Do nothing
                    break;
                }

                if (!enemy.Killed && enemy.Bounds.CollidesWith(player.Bounds))
                {
                    health.Lives--;
                    hp--;
                    player.Color    = Color.Red;
                    player.Position = new Vector2(100, 250);
                    playerHit.Play();
                    //_explosion.PlaceExplosion(player.Position);
                }
            }

            //Checking ending conditions
            if (health.Lives <= 1)
            {
                player.Dead = true;
                lost        = true;
            }
            if (numEnemies <= 0)
            {
                won = true;
            }
        }