private void OnLevelUp(object sender, EventArgsLevelUp e) { if (_showLevelUpAnimation) { switch (e.Type) { case EventArgsLevelUp.LevelType.Combat: _levelUpIconRectangle.X = 120; break; case EventArgsLevelUp.LevelType.Farming: _levelUpIconRectangle.X = 10; break; case EventArgsLevelUp.LevelType.Fishing: _levelUpIconRectangle.X = 20; break; case EventArgsLevelUp.LevelType.Foraging: _levelUpIconRectangle.X = 60; break; case EventArgsLevelUp.LevelType.Mining: _levelUpIconRectangle.X = 30; break; } _shouldDrawLevelUp = true; _timeToDisappear.Interval = _timeBeforeExperienceBarFades.TotalMilliseconds; _timeToDisappear.Start(); _experienceBarShouldBeVisible = true; float previousAmbientVolume = Game1.options.ambientVolumeLevel; float previousMusicVolume = Game1.options.musicVolumeLevel; //if (_soundEffect != null) // _soundEffect.Volume = previousMusicVolume <= 0.01f ? 0 : Math.Min(1, previousMusicVolume + 0.3f); //Task.Factory.StartNew(() => //{ // Thread.Sleep(100); // Game1.musicCategory.SetVolume((float)Math.Max(0, Game1.options.musicVolumeLevel - 0.3)); // Game1.ambientCategory.SetVolume((float)Math.Max(0, Game1.options.ambientVolumeLevel - 0.3)); // if (_soundEffect != null) // _soundEffect.Play(); //}); Task.Factory.StartNew(() => { Thread.Sleep(100); _player.Play(); }); Task.Factory.StartNew(() => { Thread.Sleep(_levelUpPauseTime); _shouldDrawLevelUp = false; //Game1.musicCategory.SetVolume(previousMusicVolume); //Game1.ambientCategory.SetVolume(previousAmbientVolume); }); } }
/// <summary> /// Pauses the game, shows Level Up text and plays a chime, and unpauses after some time; /// </summary> internal void onLevelUp(object sender, EventArgsLevelUp e) { // Fix firing on new day. Exp can never be gained in FarmHouse if (Game1.currentLocation.name == "FarmHouse") { return; } if (displayGainOption.IsOn == false) { return; } switch (e.Type) { case EventArgsLevelUp.LevelType.Combat: levelUpIconRectangle = new Rectangle(120, 428, 10, 10); break; case EventArgsLevelUp.LevelType.Farming: levelUpIconRectangle = new Rectangle(10, 428, 10, 10); break; case EventArgsLevelUp.LevelType.Fishing: levelUpIconRectangle = new Rectangle(20, 428, 10, 10); break; case EventArgsLevelUp.LevelType.Foraging: levelUpIconRectangle = new Rectangle(60, 428, 10, 10); break; case EventArgsLevelUp.LevelType.Mining: levelUpIconRectangle = new Rectangle(30, 428, 10, 10); break; } shouldDrawLevelUp = true; timerToDissapear.Interval = TIME_BEFORE_EXPERIENCE_BAR_FADE; timerToDissapear.Start(); shouldDrawExperienceBar = true; float prevAmbientVolume = Game1.options.ambientVolumeLevel; float prevMusicVolume = Game1.options.musicVolumeLevel; // Play sound if loaded if (se != null) { if (prevMusicVolume > 0.01f) { se.Volume = Math.Min(1, (prevMusicVolume + 0.3f)); } else { se.Volume = 0; } } Task.Factory.StartNew(() => { System.Threading.Thread.Sleep(100); Game1.musicCategory.SetVolume(Math.Max(0, Game1.options.musicVolumeLevel - 0.3f)); Game1.ambientCategory.SetVolume(Math.Max(0, Game1.options.ambientVolumeLevel - 0.3f)); if (se != null) { se.Play(); } }); Task.Factory.StartNew(() => { System.Threading.Thread.Sleep(lengthOfLevelUpPause); shouldDrawLevelUp = false; Game1.musicCategory.SetVolume(prevMusicVolume); Game1.ambientCategory.SetVolume(prevAmbientVolume); }); }