Esempio n. 1
0
        private void FixedUpdate(object sender, ElapsedEventArgs e)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                resourceManager.MediaFiles.TryGetValue(MediaType.Footsteps, out MediaPlayer soundFootSteps);
                resourceManager.MediaFiles.TryGetValue(MediaType.Eat, out MediaPlayer soundEatFruit);
                resourceManager.MediaFiles.TryGetValue(MediaType.Ouch, out MediaPlayer soundOuch);
                resourceManager.MediaFiles.TryGetValue(MediaType.ShowPortal, out MediaPlayer soundShowPortal);
                soundFootSteps.Volume  = mainMenuWindow.EffectsVolume;
                soundOuch.Volume       = mainMenuWindow.EffectsVolume;
                soundShowPortal.Volume = mainMenuWindow.EffectsVolume;
                soundEatFruit.Volume   = mainMenuWindow.EffectsVolume;

                if (FruitsCounter == 0 && !showPortalPlayed)
                {
                    levelCreator.SpawnFinishPoint(BlockType.FinishUnlocked);
                    soundShowPortal.Position = TimeSpan.Zero;
                    soundShowPortal.Play();
                    showPortalPlayed = true;
                }
                DoMovement();
                if (playerMovement.IsMoving)
                {
                    soundFootSteps.Play();
                }
                else
                {
                    soundFootSteps.Stop();
                }
                IGraphicsComponent fruit = collider.GetObjectUnder(player, FruitType.Apple, FruitType.Banana, FruitType.Pineapple, FruitType.Watermelone);
                if (fruit != null)
                {
                    soundEatFruit.Position = TimeSpan.Zero;
                    soundEatFruit.Play();

                    DeleteFruit(fruit);
                    animator.AnimationRescaling(player.RectangleBody, player.ObjectContext.Size, (player.ObjectContext.Size + player.ObjectContext.Size / 3), true, 200);
                }
                if (collider.GetObjectUnder(player, BlockType.FinishUnlocked) != null)
                {
                    LoadNewLevel(++numberOfFruits, ++numberOfEnemies);
                    showPortalPlayed = false;
                }
                if (collider.GetObjectUnder(player, CharacterType.Enemy) != null && !isRecentlyHit)
                {
                    isRecentlyHit = true;
                    recentlyHitTimer.Start();

                    animator.AnimationFlashing(player.RectangleBody, 200, 5, 1.0, 0.2, false);

                    Rectangle heart = gameUI.RemoveLife();
                    animator.AnimationFlashing(heart, 200, 5, 1.0, 0.2, true);
                    gameUI.RemoveLife();
                    soundOuch.Position = TimeSpan.Zero;
                    soundOuch.Play();
                    numberOfLives--;
                }
                if (numberOfLives == 0)
                {
                    PauseGame();
                    gameUI.ShowDeathMessage();
                }
            });
        }