Пример #1
0
        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);
                });
            }
        }
Пример #2
0
        /// <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);
            });
        }