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(); } }); }