internal static void Bind(CConfigIni configIni, SoundGroupLevelController soundGroupLevelController)
        {
            soundGroupLevelController.SetLevel(ESoundGroup.SoundEffect, configIni.SoundEffectLevel);
            soundGroupLevelController.SetLevel(ESoundGroup.Voice, configIni.VoiceLevel);
            soundGroupLevelController.SetLevel(ESoundGroup.SongPreview, configIni.SongPreviewLevel);
            soundGroupLevelController.SetLevel(ESoundGroup.SongPlayback, configIni.SongPlaybackLevel);
            soundGroupLevelController.SetKeyboardSoundLevelIncrement(configIni.KeyboardSoundLevelIncrement);

            configIni.PropertyChanged += (sender, args) =>
            {
                switch (args.PropertyName)
                {
                case nameof(CConfigIni.SoundEffectLevel):
                    soundGroupLevelController.SetLevel(ESoundGroup.SoundEffect, configIni.SoundEffectLevel);
                    break;

                case nameof(CConfigIni.VoiceLevel):
                    soundGroupLevelController.SetLevel(ESoundGroup.Voice, configIni.VoiceLevel);
                    break;

                case nameof(CConfigIni.SongPreviewLevel):
                    soundGroupLevelController.SetLevel(ESoundGroup.SongPreview, configIni.SongPreviewLevel);
                    break;

                case nameof(CConfigIni.SongPlaybackLevel):
                    soundGroupLevelController.SetLevel(ESoundGroup.SongPlayback, configIni.SongPlaybackLevel);
                    break;

                case nameof(CConfigIni.KeyboardSoundLevelIncrement):
                    soundGroupLevelController.SetKeyboardSoundLevelIncrement(configIni.KeyboardSoundLevelIncrement);
                    break;
                }
            };

            soundGroupLevelController.LevelChanged += (sender, args) =>
            {
                switch (args.SoundGroup)
                {
                case ESoundGroup.SoundEffect:
                    configIni.SoundEffectLevel = args.Level;
                    break;

                case ESoundGroup.Voice:
                    configIni.VoiceLevel = args.Level;
                    break;

                case ESoundGroup.SongPreview:
                    configIni.SongPreviewLevel = args.Level;
                    break;

                case ESoundGroup.SongPlayback:
                    configIni.SongPlaybackLevel = args.Level;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            };
        }
Пример #2
0
        internal static void Handle(
            IInputDevice keyboard,
            SoundGroupLevelController soundGroupLevelController,
            CSkin skin,
            bool isSongPreview)
        {
            var isAdjustmentPositive = keyboard.bIsKeyPressed((int)SlimDXKeys.Key.RightBracket);

            if (!(isAdjustmentPositive || keyboard.bIsKeyPressed((int)SlimDXKeys.Key.LeftBracket)))
            {
                return;
            }

            ESoundGroup soundGroup;

            CSkin.Cシステムサウンド システムサウンド = null;

            if (keyboard.bIsKeyDown((int)SlimDXKeys.Key.LeftControl) ||
                keyboard.bIsKeyDown((int)SlimDXKeys.Key.RightControl))
            {
                soundGroup = ESoundGroup.SoundEffect;
                システムサウンド   = skin.sound決定音;
            }
            else if (keyboard.bIsKeyDown((int)SlimDXKeys.Key.LeftShift) ||
                     keyboard.bIsKeyDown((int)SlimDXKeys.Key.RightShift))
            {
                soundGroup = ESoundGroup.Voice;
                システムサウンド   = skin.soundゲーム開始音;
            }
            else if (isSongPreview)
            {
                soundGroup = ESoundGroup.SongPreview;
            }
            else
            {
                soundGroup = ESoundGroup.SongPlayback;
            }

            soundGroupLevelController.AdjustLevel(soundGroup, isAdjustmentPositive);
            システムサウンド?.t再生する();
        }