using FMOD; using Microsoft.Win32; using Qwilight.NoteFile; using Qwilight.UIComponent; using Qwilight.Utilities; using Qwilight.ViewModel; using System.Globalization; using System.IO; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Serialization; using System.Windows; using Windows.Gaming.Input; using Windows.System; using Windows.Win32; using Windows.Win32.Graphics.Gdi; using Brush = System.Windows.Media.Brush; using FontFamily = System.Windows.Media.FontFamily; using Typeface = System.Windows.Media.Typeface; namespace Qwilight { public sealed partial class Configure : Model { enum ReflexMode { eOff, eLowLatency, eLowLatencyWithBoost, } [LibraryImport("NVIDIA")] private static partial void SetNVLLConfigure(ReflexMode mode, uint frameLimitUs); public enum TutorialID { NetQuitMode, F1Assist, ModifyAutoMode, EnterAutoComputeConfigure, SetUndoModifySalt } public enum NVLLMode { Not, Standard, Unlimited } public enum InputAudioVariety { DJMAX, IIDX } public enum AudioVisualizerMode { AudioVisualizerMode0, AudioVisualizerMode1, AudioVisualizerMode2 } public enum WantBanned { Total, NotBanned } public enum DefaultSpinningMode { Unpause, Configure, Undo, Stop } public enum DefaultAudioVariety { Not, UI, Favor } public static readonly Configure Instance = QwilightComponent.GetBuiltInData<Configure>(nameof(Configure)); static readonly JsonSerializerOptions _defaultJSONConfigure = Utility.GetJSONConfigure(defaultJSONConfigure => { defaultJSONConfigure.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping; defaultJSONConfigure.IgnoreReadOnlyProperties = true; }); static readonly string _fileName = Path.Combine(QwilightComponent.QwilightEntryPath, "Configure.json"); static readonly string _faultFileName = Path.ChangeExtension(_fileName, ".json.$"); static readonly string _tmp0FileName = Path.ChangeExtension(_fileName, ".json.tmp.0"); static readonly string _tmp1FileName = Path.ChangeExtension(_fileName, ".json.tmp.1"); public Configure() { _aesCipher = SHA256.HashData(Encoding.UTF8.GetBytes(Environment.MachineName)); SystemEvents.DisplaySettingsChanged += (sender, e) => OnSetAutoNVLLFramerate(); } public void NotifyTutorial(TutorialID tutorialID) { if (PassedTutorialIDs.Add(tutorialID)) { NotifySystem.Instance.Notify(NotifySystem.NotifyVariety.Info, NotifySystem.NotifyConfigure.Default, typeof(LanguageSystem).GetProperties().Single(property => property.Name == $"TutorialID{(int)tutorialID}").GetValue(LanguageSystem.Instance) as string, true); } } public void Load() { Utility.WipeFile(_tmp0FileName); Utility.MoveFile(_tmp1FileName, _fileName); try { if (File.Exists(_fileName)) { var textConfigure = Utility.GetJSON<Configure>(File.ReadAllText(_fileName, Encoding.UTF8), _defaultJSONConfigure); foreach (var value in typeof(Configure).GetProperties().Where(value => value.GetCustomAttributes(typeof(JsonIgnoreAttribute), false).Length == 0 && value.CanWrite)) { value.SetValue(this, value.GetValue(textConfigure)); } Validate(false); } else { Validate(true); } } catch (Exception e) { ConfigureFault = $"Failed to Validate Configure ({e.Message})"; Validate(true); Utility.MoveFile(_fileName, _faultFileName); } finally { _isLoaded = true; OnSetMeterNoteColor(); OnSetLimiterColor(); OnSetAudioVisualizerMainColor(); OnSetAudioVisualizerInputColor(); OnSetInputNoteCountViewColor(); OnSetAutoableInputNoteCountViewColor(); var hwModeCollection = new List<HwMode>(); var rawHwMode = new DEVMODEW(); var i = 0U; while (PInvoke.EnumDisplaySettings(null, (ENUM_DISPLAY_SETTINGS_MODE)i++, ref rawHwMode)) { if (rawHwMode.Anonymous1.Anonymous2.dmDisplayFixedOutput == 0) { hwModeCollection.Add(new(rawHwMode.dmPelsWidth, rawHwMode.dmPelsHeight, rawHwMode.dmDisplayFrequency)); } } if (hwModeCollection.Contains(HwModeV2Value)) { OnSetHwModeValue(); } else { PInvoke.EnumDisplaySettings(null, ENUM_DISPLAY_SETTINGS_MODE.ENUM_CURRENT_SETTINGS, ref rawHwMode); HwModeV2Value = new HwMode(rawHwMode.dmPelsWidth, rawHwMode.dmPelsHeight, rawHwMode.dmDisplayFrequency); } OnSetAutoNVLLFramerate(); OnSetIsXwindow(); OnSetLastDefaultEntryItem(); } } readonly object _setSaveCSX = new(); readonly byte[] _aesCipher; readonly byte[] _aesIV = new byte[16]; readonly double[] _vibrations = new double[4]; readonly double[] _audioVolumes = new double[4]; readonly double[] _equalizers = new double[5]; bool _detailedConfigure; bool _isLoaded; double _valueVeilDrawingHeight; bool _totalLimiterVariety; bool _autoCompute; bool _windowedMode; bool _isXwindow; bool _bw; bool _ls; bool _aura; bool _valueK70; bool _valueGS; bool _wooting; bool _valueMSI; bool _valueCM; bool _mediaInput; bool _loadedMedia; bool _media; bool _banalAudio; bool _banalMedia; bool _banalFailedMedia; bool _waveIn; bool _wave; bool _audioInput; bool _valueUIPipelineLimiter; bool _valueUIPipelineMainDrawingPaint; bool _valueUIPipelineJudgmentMain; bool _valueUIPipelineJudgmentCount; bool _valueUIPipelineJudgmentVSVisualizer; bool _valueUIPipelineJudgmentMeter; bool _valueUIPipelineJudgmentVisualizer; bool _valueUIPipelineJudgmentPaint; bool _valueUIPipelineHitNotePaint; bool _valueUIPipelineBPM; bool _valueUIPipelineNet; bool _valueUIPipelineHunter; bool _valueUICommentNote; bool _valueUIPipelineMainJudgmentMeter; bool _valueUIPipelineJudgmentInputVisualizer; bool _flowVeilDrawing; bool _lowHitPointsFaintUI; bool _audioVisualizer; bool _lostPointAudio; bool _isMediaFill; bool _saltAuto; bool _isFailMode; WantBanned _wantBanned; bool _wantLevelTextValue; bool _wantBPM; bool _wantAverageInputCount; bool _wantHighestInputCount; ControllerSystem.InputAPI _valueControllerInputAPI; DefaultControllerSystem.InputAPI _defaultControllerInputAPI; bool _autoHighlight; bool _autoGetQwilight; bool _equalizer; bool _tube; bool _valueSFX; bool _flange; bool _averager; bool _audioMultiplierAtone; DefaultEntryItem _lastDefaultEntryItem; bool _autoLogIn; int _lowestWantLevelTextValue; int _highestWantLevelContensValue; int _lowestWantBPM; int _highestWantBPM; int _lowestWantAverageInputCount; int _highestWantAverageInputCount; int _lowestWantHighestInputCount; int _highestWantHighestInputCount; double _audioWait; double _mediaWait; ControllerSystem.VibrationMode _vibrationMode; UIItem _valueUIItem; UIItem _valueBaseUIItemValue; bool _alwaysNotP2Position; HunterVariety _hunterVariety; bool _netCommentFollow; bool _wantHellBPM; int _noteFormatID; int _commentViewTabPosition; int _hallViewTabPosition; int _hallViewTotalTabPosition; int _hallViewAtTabPosition; int _hallViewAbilityTabPosition; bool _autoInputFavorLabelledMillis; bool _autoLowestLongNoteModify; bool _autoHighestLongNoteModify; bool _autoSetNotePutMillis; double _autoInputFavorLabelledMillisValue; double _autoLowestLongNoteModifyValue; double _autoHighestLongNoteModifyValue; double _autoSetNotePutMillisValue; string _language; bool _setHwMode; HwMode _hwModeValue; ControllerSystem.DInputControllerVariety _dInputControllerVariety; int _windowLength; int _windowHeight; bool _vesa; bool _dataCount3; NVLLMode _valueNVLLMode; double _valueNVLLFramerate; bool _autoNVLLFramerate; bool _favorMediaInput; double _mainAreaFaint; uint _audioDataLength; bool _autoNoteWait; bool _stopLastEqualAudio; bool _autoJudgmentMeterMillis; double _judgmentMeterCriteria; double _judgmentMeterMillis; AutoJudgmentMeterMillisItem _autoJudgmentMeterMillisItem; bool _ubuntuNetItemTarget; DefaultAudioVariety _defaultAudioVariety; int _valueGASLevel; bool _wmPointer; bool _autoLazyGC; long _lazyGC; public bool[] SetUIItems { get; set; } public UIItem[] UIItems { get; set; } public bool[] JudgmentVSVisualizers { get; set; } public bool WMPointer { get => _wmPointer; set { if (SetProperty(ref _wmPointer, value) && _isLoaded) { OnPropertyChanged(nameof(WMPointerPaint)); OnPropertyChanged(nameof(WMPointerText)); } } } public Brush WMPointerPaint => Paints.PointPaints[WMPointer ? 1 : 0]; public string WMPointerText => WMPointer ? LanguageSystem.Instance.WMPointerText : LanguageSystem.Instance.NotWMPointerText; public bool AutoLazyGC { get => _autoLazyGC; set { if (SetProperty(ref _autoLazyGC, value, nameof(AutoLazyGC)) && _isLoaded) { LazyGCV2 = value ? Utility.GetLazyGC() : 0L; } } } public long LazyGCV2 { get => _lazyGC; set => SetProperty(ref _lazyGC, value, nameof(LazyGCV2)); } public int GASLevel { get => _valueGASLevel; set { if (SetProperty(ref _valueGASLevel, value, nameof(GASLevel)) && _isLoaded) { foreach (var modeComponentItem in ViewModels.Instance.ModifyModeComponentValue.ModifyModeComponentItems[ModifyModeComponentViewModel.HitPointsModeVariety]) { modeComponentItem.NotifyIsVConfigure(); } } } } public bool TVAssistConfigure { get; set; } public bool UbuntuNetItemTarget { get => _ubuntuNetItemTarget; set { if (SetProperty(ref _ubuntuNetItemTarget, value, nameof(UbuntuNetItemTarget)) && _isLoaded) { ViewModels.Instance.MainValue.LoadTwilightCommentItemCollection(); } } } public Dictionary<string, string> LevelTargetMap { get; set; } public Dictionary<string, AudioConfigure> AudioConfigureValues { get; set; } public bool AllowTwilightComment { get; set; } public double JudgmentMeterCriteria { get => _judgmentMeterCriteria; set => SetProperty(ref _judgmentMeterCriteria, value, nameof(JudgmentMeterCriteria)); } public double JudgmentMeterMillis { get => _judgmentMeterMillis; set => SetProperty(ref _judgmentMeterMillis, value, nameof(JudgmentMeterCriteria)); } public bool AutoJudgmentMeterMillis { get => _autoJudgmentMeterMillis; set => SetProperty(ref _autoJudgmentMeterMillis, value, nameof(AutoJudgmentMeterMillis)); } public AutoJudgmentMeterMillisItem AutoJudgmentMeterMillisItemValue { get => _autoJudgmentMeterMillisItem; set { if (SetProperty(ref _autoJudgmentMeterMillisItem, value) && _isLoaded) { ViewModels.Instance.MainValue.OnJudgmentMeterMillisModified(); } } } public bool DetailedConfigure { get => _detailedConfigure; set { if (SetProperty(ref _detailedConfigure, value, nameof(DetailedConfigure)) && _isLoaded) { OnPropertyChanged(nameof(IsDInputXyzSensitivityVisible)); OnPropertyChanged(nameof(IsDInputIIDXSensitivityVisible)); ViewModels.Instance.ConfigureValue.NotifyCanGetDefaultText(); } } } public bool FavorMediaInput { get => _favorMediaInput; set => SetProperty(ref _favorMediaInput, value, nameof(FavorMediaInput)); } public double MediaInputPosition0 { get; set; } public double MediaInputPosition1 { get; set; } public double MediaInputLength { get; set; } public double MediaInputHeight { get; set; } public double MediaInputFaint { get; set; } public void InitMediaInputArea() { MediaInputPosition0 = 0.0; MediaInputPosition1 = 0.0; MediaInputLength = 0.0; MediaInputHeight = 0.0; } public bool AutoNoteWait { get => _autoNoteWait; set => SetProperty(ref _autoNoteWait, value, nameof(AutoNoteWait)); } public bool StopLastEqualAudio { get => _stopLastEqualAudio; set { if (SetProperty(ref _stopLastEqualAudio, value) && _isLoaded) { OnPropertyChanged(nameof(StopLastEqualAudioText)); OnPropertyChanged(nameof(StopLastEqualAudioPaint)); } } } public string StopLastEqualAudioText => StopLastEqualAudio ? LanguageSystem.Instance.StopLastEqualAudioText : LanguageSystem.Instance.NotStopLastEqualAudioText; public Brush StopLastEqualAudioPaint => Paints.PointPaints[StopLastEqualAudio ? 1 : 0]; public bool VESAV2 { get => _vesa; set { if (SetProperty(ref _vesa, value) && _isLoaded) { OnPropertyChanged(nameof(VESAPaint)); OnPropertyChanged(nameof(VESAText)); OnSetAutoNVLLFramerate(); } } } public Brush VESAPaint => Paints.PointPaints[VESAV2 ? 1 : 0]; public string VESAText => VESAV2 ? LanguageSystem.Instance.VESAText : LanguageSystem.Instance.NotVESAText; public bool DataCount3 { get => _dataCount3; set { if (SetProperty(ref _dataCount3, value) && _isLoaded) { OnPropertyChanged(nameof(DataCount3Paint)); OnPropertyChanged(nameof(DataCount3Text)); } } } public Brush DataCount3Paint => Paints.PointPaints[DataCount3 ? 1 : 0]; public string DataCount3Text => DataCount3 ? LanguageSystem.Instance.DataCount3Text : LanguageSystem.Instance.NotDataCount3Text; public int DataCount => DataCount3 ? 3 : 2; public NVLLMode NVLLModeValue { get => _valueNVLLMode; set { if (SetProperty(ref _valueNVLLMode, value, nameof(NVLLModeValue)) && _isLoaded) { OnPropertyChanged(nameof(NVLLModePaint)); OnPropertyChanged(nameof(NVLLModeText)); SetNVLLConfigureImpl(); } } } public bool IsNVLL => NVLLModeValue != NVLLMode.Not; public Brush NVLLModePaint => Paints.PointPaints[IsNVLL ? 1 : 0]; public string NVLLModeText => NVLLModeValue switch { NVLLMode.Not => LanguageSystem.Instance.NVLLModeNotText, NVLLMode.Standard => LanguageSystem.Instance.NVLLModeOKText, NVLLMode.Unlimited => LanguageSystem.Instance.NVLLModeUnlimitedText, _ => throw new ArgumentException(NVLLModeValue.ToString()) }; public double NVLLFramerate { get => _valueNVLLFramerate; set { if (SetProperty(ref _valueNVLLFramerate, value, nameof(NVLLFramerate)) && _isLoaded) { SetNVLLConfigureImpl(); OnSetAutoNVLLFramerate(); } } } public void SetNVLLConfigureImpl() { #if X64 SetNVLLConfigure((ReflexMode)NVLLModeValue, NVLLFramerate > 0 ? (uint)(1000 * 1000 / NVLLFramerate) : 0); #endif } public bool AutoNVLLFramerate { get => _autoNVLLFramerate; set { if (SetProperty(ref _autoNVLLFramerate, value, nameof(AutoNVLLFramerate)) && _isLoaded) { OnSetAutoNVLLFramerate(); } } } void OnSetAutoNVLLFramerate() { if (AutoNVLLFramerate) { if (VESAV2) { NVLLFramerate = 0.0; } else { NVLLFramerate = Utility.GetMaxFramerate(); } } } public string DefaultDrawingFilePath { get; set; } public double VeilDrawingHeight { get => _valueVeilDrawingHeight; set { if (SetProperty(ref _valueVeilDrawingHeight, value, nameof(VeilDrawingHeight)) && _isLoaded) { ViewModels.Instance.MainValue.ModeComponentValue.NotifyIIDXMultiplierMillisText(); } } } public int NoteFormatID { get => _noteFormatID; set => SetProperty(ref _noteFormatID, value, nameof(NoteFormatID)); } public Dictionary<string, UIConfigure> UIConfigureValuesV2 { get; set; } [JsonIgnore] public UIConfigure UIConfigureValue => UIConfigureValuesV2[UIItemValue.Title]; public Dictionary<string, BaseUIConfigure> BaseUIConfigureValues { get; set; } [JsonIgnore] public BaseUIConfigure BaseUIConfigureValue => BaseUIConfigureValues[BaseUIItemValue.Title]; [JsonIgnore] public string ConfigureFault { get; set; } public bool AutoInputFavorLabelledMillis { get => _autoInputFavorLabelledMillis; set { if (SetProperty(ref _autoInputFavorLabelledMillis, value, nameof(AutoInputFavorLabelledMillis)) && _isLoaded) { ViewModels.Instance.MainValue.ModeComponentValue.SetAutoInputFavorLabelledMillis(); } } } public bool AutoLowestLongNoteModify { get => _autoLowestLongNoteModify; set { if (SetProperty(ref _autoLowestLongNoteModify, value, nameof(AutoLowestLongNoteModify)) && _isLoaded) { ViewModels.Instance.MainValue.ModeComponentValue.SetAutoLowestLongNoteModify(); } } } public double AutoInputFavorLabelledMillisValue { get => _autoInputFavorLabelledMillisValue; set { if (SetProperty(ref _autoInputFavorLabelledMillisValue, value, nameof(AutoInputFavorLabelledMillisValue)) && _isLoaded) { ViewModels.Instance.MainValue.ModeComponentValue.SetAutoInputFavorLabelledMillis(); } } } public bool AutoHighestLongNoteModify { get => _autoHighestLongNoteModify; set { if (SetProperty(ref _autoHighestLongNoteModify, value, nameof(AutoHighestLongNoteModify)) && _isLoaded) { ViewModels.Instance.MainValue.ModeComponentValue.SetAutoHighestLongNoteModify(); } } } public double AutoLowestLongNoteModifyValue { get => _autoLowestLongNoteModifyValue; set { if (SetProperty(ref _autoLowestLongNoteModifyValue, value, nameof(AutoLowestLongNoteModifyValue)) && _isLoaded) { ViewModels.Instance.MainValue.ModeComponentValue.SetAutoLowestLongNoteModify(); } } } public double AutoHighestLongNoteModifyValue { get => _autoHighestLongNoteModifyValue; set { if (SetProperty(ref _autoHighestLongNoteModifyValue, value, nameof(AutoHighestLongNoteModifyValue)) && _isLoaded) { ViewModels.Instance.MainValue.ModeComponentValue.SetAutoHighestLongNoteModify(); } } } public bool AutoSetNotePutMillis { get => _autoSetNotePutMillis; set => SetProperty(ref _autoSetNotePutMillis, value, nameof(AutoSetNotePutMillis)); } public double AutoSetNotePutMillisValue { get => _autoSetNotePutMillisValue; set => SetProperty(ref _autoSetNotePutMillisValue, value, nameof(AutoSetNotePutMillisValue)); } public string Language { get => _language; set { if (SetProperty(ref _language, value) && _isLoaded) { LanguageSystem.Instance.Init(value); TwilightSystem.Instance.SendParallel(Event.Types.EventID.SetLanguage, value); ViewModels.Instance.MainValue.NotifyModel(); } } } public int FavorHunterStand { get; set; } public Version Date { get; set; } public long DefaultNotesDate { get; set; } public long DefaultUIDate { get; set; } public bool AutoGetDefaultNote { get; set; } public bool AutoGetDefaultUI { get; set; } public byte[] Cipher { get; set; } public ModeComponent ModeComponentValue { get; set; } public ModeComponentBundle[] ModeComponentBundles { get; set; } public double FastInputMillis { get; set; } public List<FavorJudgment> FavorJudgments { get; set; } public List<FavorHitPoints> FavorHitPoints { get; set; } public OUTPUTTYPE AudioVariety { get; set; } public int LastASIOAudioValueID { get; set; } public int LastWASAPIAudioValueID { get; set; } public List<DefaultEntryItem> DefaultEntryItems { get; set; } public HashSet<TutorialID> PassedTutorialIDs { get; set; } public bool IsLoaded { get; set; } public Dictionary<string, int> LastEntryItemPositions { get; set; } public InputBundle<DefaultInput> DefaultInputBundlesV6 { get; set; } public string SetPostItemInputText => string.Format(LanguageSystem.Instance.SetPostItemInputText, DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.PostItem0], DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.PostItem1]); public void NotifySetPostItemInputText() { OnPropertyChanged(nameof(SetPostItemInputText)); } public InputBundle<HwDInput> DInputBundlesV4 { get; set; } public InputBundle<HwXInput> XInputBundlesV4 { get; set; } public InputBundle<WGI> WGIBundlesV3 { get; set; } public InputBundle<MIDI> MIDIBundlesV4 { get; set; } public double MIDIPBCSensitivity { get; set; } public int DInputXyzSensitivityV2 { get; set; } public bool IsDInputXyzSensitivityVisible => DetailedConfigure && DInputControllerVarietyValue == ControllerSystem.DInputControllerVariety.BMS; public double DInputIIDXSensitivity { get; set; } public bool IsDInputIIDXSensitivityVisible => DetailedConfigure && DInputControllerVarietyValue == ControllerSystem.DInputControllerVariety.IIDX; public bool SetHwMode { get => _setHwMode; set { if (SetProperty(ref _setHwMode, value, nameof(SetHwMode)) && _isLoaded) { OnSetHwModeValue(); } } } public HwMode HwModeV2Value { get => _hwModeValue; set { if (SetProperty(ref _hwModeValue, value) && _isLoaded) { OnSetHwModeValue(); } } } void OnSetHwModeValue() { Utility.ModifyHwMode(HwModeV2Value); } public ControllerSystem.DInputControllerVariety DInputControllerVarietyValue { get => _dInputControllerVariety; set { if (SetProperty(ref _dInputControllerVariety, value) && _isLoaded) { OnPropertyChanged(nameof(IsDInputXyzSensitivityVisible)); OnPropertyChanged(nameof(IsDInputIIDXSensitivityVisible)); } } } public bool SetSalt { get; set; } public int LoopUnit { get; set; } public Component.InputMapping InputMappingValue { get; set; } public AudioVisualizerMode AudioVisualizerModeValue { get; set; } public ViewItem HandleFailedAudio { get; set; } public ViewItem ViewFailedDrawing { get; set; } public ViewItem ViewLowestJudgment { get; set; } public int HandleFailedAudioCount { get; set; } public double FailedDrawingMillis { get; set; } public bool[] InputWantInputMode { get; set; } public bool[] InputWantNoteVariety { get; set; } public bool IsTotalWantNoteVariety => InputWantNoteVariety[(int)BaseNoteFile.NoteVariety.BMS] && InputWantNoteVariety[(int)BaseNoteFile.NoteVariety.BMSON] && InputWantNoteVariety[(int)BaseNoteFile.NoteVariety.EventNote]; public bool[] InputWantHandled { get; set; } public bool[] InputWantLevel { get; set; } public Brush InputWantWindowPaint => WantHellBPM || !IsTotalWantNoteVariety || InputWantHandled.Any(inputWantHandled => !inputWantHandled) || InputWantInputMode.Skip(1).Any(inputWantInputMode => !inputWantInputMode) || InputWantLevel.Any(inputWantLevel => !inputWantLevel) || WantLevelTextValue || WantBPM || WantHighestInputCount ? Paints.Paint1 : Paints.Paint4; public void NotifyInputWantWindowPaint() => OnPropertyChanged(nameof(InputWantWindowPaint)); public InputAudioVariety InputAudioVarietyValue { get; set; } public DefaultSpinningMode DefaultSpinningModeValue { get; set; } public AutoEnterSite AutoEnterDefaultSite { get; set; } public AutoEnterSite AutoEnterNotifySite { get; set; } public AutoEnterSite AutoEnterPlatformSite { get; set; } public double AudioInputValue { get; set; } public double Vibration0 { get => _vibrations[0]; set => SetProperty(ref _vibrations[0], value, nameof(Vibration0)); } public double Vibration1 { get => _vibrations[1]; set => SetProperty(ref _vibrations[1], value, nameof(Vibration1)); } public double Vibration2 { get => _vibrations[2]; set => SetProperty(ref _vibrations[2], value, nameof(Vibration2)); } public double Vibration3 { get => _vibrations[3]; set => SetProperty(ref _vibrations[3], value, nameof(Vibration3)); } public double TotalAudioVolume { get => _audioVolumes[AudioSystem.TotalAudio]; set => SetProperty(ref _audioVolumes[AudioSystem.TotalAudio], value, nameof(TotalAudioVolume)); } public double MainAudioVolume { get => _audioVolumes[AudioSystem.MainAudio]; set => SetProperty(ref _audioVolumes[AudioSystem.MainAudio], value, nameof(MainAudioVolume)); } public double InputAudioVolume { get => _audioVolumes[AudioSystem.InputAudio]; set => SetProperty(ref _audioVolumes[AudioSystem.InputAudio], value, nameof(InputAudioVolume)); } public double SEAudioVolume { get => _audioVolumes[AudioSystem.SEAudio]; set => SetProperty(ref _audioVolumes[AudioSystem.SEAudio], value, nameof(SEAudioVolume)); } public double WaveFadeVolume { get; set; } public double MainAreaFaint { get => _mainAreaFaint; set => SetProperty(ref _mainAreaFaint, value, nameof(MainAreaFaint)); } public int CompilingBin { get; set; } public int LoadingBin { get; set; } public int UIBin { get; set; } public int AudioVisualizerCount { get; set; } public double JudgmentVisualizerMillis { get; set; } public bool AutoCompute { get => _autoCompute; set { if (SetProperty(ref _autoCompute, value, nameof(AutoCompute)) && _isLoaded) { OnPropertyChanged(nameof(AutoComputePaint)); OnPropertyChanged(nameof(AutoComputeText)); OnPropertyChanged(nameof(AutoComputeContents)); } } } public Brush AutoComputePaint => Paints.PointPaints[AutoCompute ? 1 : 0]; public string AutoComputeText => AutoCompute ? LanguageSystem.Instance.AutoComputeText : LanguageSystem.Instance.NotAutoComputeText; public string AutoComputeContents => AutoCompute ? LanguageSystem.Instance.AutoComputeContents : LanguageSystem.Instance.NotAutoComputeContents; public bool WindowedMode { get => _windowedMode; set { if (SetProperty(ref _windowedMode, value, nameof(WindowedMode)) && _isLoaded) { OnPropertyChanged(nameof(WindowedModeText)); OnPropertyChanged(nameof(WindowedModeContents)); OnPropertyChanged(nameof(WindowEllipse)); } } } public string WindowedModeText => WindowedMode ? LanguageSystem.Instance.WindowedModeText : LanguageSystem.Instance.NotWindowedModeText; public string WindowedModeContents => WindowedMode ? LanguageSystem.Instance.WindowedModeContents : LanguageSystem.Instance.NotWindowedModeContents; public double WindowEllipse => WindowedMode && Environment.OSVersion.Version.Build >= 22000 ? Levels.WindowEllipse : 0.0; public string AvatarID { get; set; } public string BanalAudioFilePath { get; set; } public DefaultAudioFilePathItem[] DefaultAudioFilePathItems { get; set; } public DefaultAudioVariety DefaultAudioVarietyValue { get => _defaultAudioVariety; set { if (SetProperty(ref _defaultAudioVariety, value, nameof(DefaultAudioVarietyValue)) && _isLoaded) { OnPropertyChanged(nameof(DefaultAudioVarietyText)); OnPropertyChanged(nameof(DefaultAudioVarietyPaint)); } } } public string DefaultAudioVarietyText => DefaultAudioVarietyValue switch { DefaultAudioVariety.Not => LanguageSystem.Instance.NotDefaultAudioVarietyText, DefaultAudioVariety.UI => LanguageSystem.Instance.UIDefaultAudioVarietyText, DefaultAudioVariety.Favor => LanguageSystem.Instance.FavorDefaultAudioVarietyText, _ => throw new ArgumentException(DefaultAudioVarietyValue.ToString()) }; public Brush DefaultAudioVarietyPaint => Paints.PointPaints[DefaultAudioVarietyValue != DefaultAudioVariety.Not ? 1 : 0]; public VeilDrawingItem[] VeilDrawingItems { get; set; } public string BanalMediaFilePath { get; set; } public string BanalFailedMediaFilePath { get; set; } public string BMSEditorFilePath { get; set; } public string BMSONEditorFilePath { get; set; } public BPMVariety BPMVarietyValue { get; set; } public FontFamily[] FontFamilyValues { get; set; } public void SetFontFamily() { FontFamilyValue = new(string.Join(',', FontFamilyValues.SkipLast(1).Select(fontFamily => fontFamily?.ToString() ?? string.Empty))); OnPropertyChanged(nameof(FontFamilyValue)); OnPropertyChanged(nameof(FontFamilyValues)); FontFace = new(FontFamilyValue, FontStyles.Normal, FontWeights.Normal, FontStretches.Normal); DrawingSystem.Instance.SetFontFamily(); BaseUI.Instance.SetFontFamily(); UI.Instance.SetFontFamily(); } public int CommentViewTabPosition { get => _commentViewTabPosition; set { if (SetProperty(ref _commentViewTabPosition, value, nameof(CommentViewTabPosition)) && _isLoaded) { var mainViewModel = ViewModels.Instance.MainValue; mainViewModel.Computer?.InitNetComments(); mainViewModel.LoadCommentItemCollection(); } } } public int HallViewTabPosition { get => _hallViewTabPosition; set { if (SetProperty(ref _hallViewTabPosition, value, nameof(HallViewTabPosition)) && _isLoaded) { ViewModels.Instance.MainValue.CallHallAPI(); } } } public int HallViewTotalTabPosition { get => _hallViewTotalTabPosition; set { if (SetProperty(ref _hallViewTotalTabPosition, value, nameof(HallViewTotalTabPosition)) && _isLoaded) { ViewModels.Instance.MainValue.CallHallAPI(); } } } public int HallViewAtTabPosition { get => _hallViewAtTabPosition; set { if (SetProperty(ref _hallViewAtTabPosition, value, nameof(HallViewAtTabPosition)) && _isLoaded) { ViewModels.Instance.MainValue.CallHallAPI(); } } } public int HallViewAbilityTabPosition { get => _hallViewAbilityTabPosition; set { if (SetProperty(ref _hallViewAbilityTabPosition, value, nameof(HallViewAbilityTabPosition)) && _isLoaded) { ViewModels.Instance.MainValue.CallHallAPI(); } } } [JsonIgnore] public FontFamily FontFamilyValue { get; set; } = new(); [JsonIgnore] public Typeface FontFace { get; set; } public FitMode FitModeValue { get; set; } public bool Tube { get => _tube; set { if (SetProperty(ref _tube, value, nameof(Tube)) && _isLoaded) { OnPropertyChanged(nameof(TubePaint)); OnPropertyChanged(nameof(TubeText)); AudioSystem.Instance.SetTube(value); } } } public Brush TubePaint => Paints.PointPaints[Tube ? 1 : 0]; public string TubeText => Tube ? LanguageSystem.Instance.TubeText : LanguageSystem.Instance.NotTubeText; public bool AutoGetQwilight { get => !QwilightComponent.IsValve && _autoGetQwilight; set => _autoGetQwilight = value; } public bool SFX { get => _valueSFX; set { if (SetProperty(ref _valueSFX, value) && _isLoaded) { OnPropertyChanged(nameof(SFXPaint)); OnPropertyChanged(nameof(SFXText)); AudioSystem.Instance.SetSFX(value); } } } public Brush SFXPaint => Paints.PointPaints[SFX ? 1 : 0]; public string SFXText => SFX ? LanguageSystem.Instance.SFXText : LanguageSystem.Instance.NotSFXText; public bool Flange { get => _flange; set { if (SetProperty(ref _flange, value) && _isLoaded) { OnPropertyChanged(nameof(FlangePaint)); OnPropertyChanged(nameof(FlangeText)); AudioSystem.Instance.SetFlange(value); } } } public Brush FlangePaint => Paints.PointPaints[Flange ? 1 : 0]; public string FlangeText => Flange ? LanguageSystem.Instance.FlangeText : LanguageSystem.Instance.NotFlangeText; public bool Averager { get => _averager; set { if (SetProperty(ref _averager, value) && _isLoaded) { OnPropertyChanged(nameof(AveragerPaint)); OnPropertyChanged(nameof(AveragerText)); AudioSystem.Instance.SetAverager(value); } } } public Brush AveragerPaint => Paints.PointPaints[Averager ? 1 : 0]; public string AveragerText => Averager ? LanguageSystem.Instance.AveragerText : LanguageSystem.Instance.NotAveragerText; public bool AudioMultiplierAtone { get => _audioMultiplierAtone; set { if (SetProperty(ref _audioMultiplierAtone, value, nameof(AudioMultiplierAtone)) && _isLoaded) { AudioSystem.Instance.SetAudioMultiplierAtone(value, ViewModels.Instance.MainValue.ModeComponentValue.AudioMultiplier); } } } public double EqualizerHz0 { get; set; } public double EqualizerHz1 { get; set; } public double EqualizerHz2 { get; set; } public double EqualizerHz3 { get; set; } public double EqualizerHz4 { get; set; } public double Equalizer0 { get => _equalizers[0]; set => SetProperty(ref _equalizers[0], value, nameof(Equalizer0)); } public double Equalizer1 { get => _equalizers[1]; set => SetProperty(ref _equalizers[1], value, nameof(Equalizer1)); } public double Equalizer2 { get => _equalizers[2]; set => SetProperty(ref _equalizers[2], value, nameof(Equalizer2)); } public double Equalizer3 { get => _equalizers[3]; set => SetProperty(ref _equalizers[3], value, nameof(Equalizer3)); } public double Equalizer4 { get => _equalizers[4]; set => SetProperty(ref _equalizers[4], value, nameof(Equalizer4)); } public ControllerSystem.VibrationMode VibrationModeValue { get => _vibrationMode; set { if (SetProperty(ref _vibrationMode, value) && _isLoaded) { OnPropertyChanged(nameof(VibrationModeText)); OnPropertyChanged(nameof(IsVibrationMode)); } } } public bool IsVibrationMode => VibrationModeValue != ControllerSystem.VibrationMode.Not; public string VibrationModeText => VibrationModeValue switch { ControllerSystem.VibrationMode.Not => LanguageSystem.Instance.NotVibrationModeText, ControllerSystem.VibrationMode.Input => LanguageSystem.Instance.InputVibrationModeText, ControllerSystem.VibrationMode.Failed => LanguageSystem.Instance.FailedVibrationModeText, _ => throw new ArgumentException(VibrationModeValue.ToString()) }; public string GetCipher() { try { using var aes = Aes.Create(); aes.KeySize = 256; return Encoding.UTF8.GetString(aes.CreateDecryptor(_aesCipher, _aesIV).TransformFinalBlock(Cipher, 0, Cipher.Length)); } catch { return string.Empty; } } public void SetCipher(string valueCipher) { using var aes = Aes.Create(); aes.KeySize = 256; var data = Encoding.UTF8.GetBytes(valueCipher); Cipher = aes.CreateEncryptor(_aesCipher, _aesIV).TransformFinalBlock(data, 0, data.Length); } public ControllerSystem.InputAPI ControllerInputAPI { get => _valueControllerInputAPI; set { if (SetProperty(ref _valueControllerInputAPI, value) && _isLoaded) { OnPropertyChanged(nameof(ControllerInputAPIText)); OnPropertyChanged(nameof(ControllerInputAPIContents)); OnPropertyChanged(nameof(IsControllerInputAPIDInput)); OnPropertyChanged(nameof(IsControllerInputAPIWGI)); } } } public string ControllerInputAPIText => ControllerInputAPI switch { ControllerSystem.InputAPI.DInput => LanguageSystem.Instance.DInputText, ControllerSystem.InputAPI.XInput => LanguageSystem.Instance.XInputText, ControllerSystem.InputAPI.WGI => LanguageSystem.Instance.WGIText, _ => null }; public string ControllerInputAPIContents => ControllerInputAPI switch { ControllerSystem.InputAPI.DInput => LanguageSystem.Instance.DInputContents, ControllerSystem.InputAPI.XInput => LanguageSystem.Instance.XInputContents, ControllerSystem.InputAPI.WGI => LanguageSystem.Instance.WGIContents, _ => null }; public bool IsControllerInputAPIDInput => ControllerInputAPI == ControllerSystem.InputAPI.DInput; public bool IsControllerInputAPIWGI => ControllerInputAPI == ControllerSystem.InputAPI.WGI; public DefaultControllerSystem.InputAPI DefaultControllerInputAPI { get => _defaultControllerInputAPI; set { if (SetProperty(ref _defaultControllerInputAPI, value) && _isLoaded) { OnPropertyChanged(nameof(DefaultControllerInputAPIText)); OnPropertyChanged(nameof(DefaultControllerInputAPIContents)); } } } public string DefaultControllerInputAPIText => DefaultControllerInputAPI switch { DefaultControllerSystem.InputAPI.DefaultInput => LanguageSystem.Instance.DefaultControllerDefaultInputText, DefaultControllerSystem.InputAPI.DInput => LanguageSystem.Instance.DefaultControllerDInputText, _ => null }; public string DefaultControllerInputAPIContents => DefaultControllerInputAPI switch { DefaultControllerSystem.InputAPI.DefaultInput => LanguageSystem.Instance.DefaultControllerDefaultInputContents, DefaultControllerSystem.InputAPI.DInput => LanguageSystem.Instance.DefaultControllerDInputContents, _ => null }; public WantBanned WantBannedValue { get => _wantBanned; set => SetProperty(ref _wantBanned, value, nameof(WantBannedText)); } public string WantBannedText => WantBannedValue switch { WantBanned.Total => LanguageSystem.Instance.WantTotalBannedText, WantBanned.NotBanned => LanguageSystem.Instance.WantNotBannedText, _ => throw new ArgumentException(WantBannedValue.ToString()) }; public bool AutoHighlight { get => _autoHighlight; set { if (SetProperty(ref _autoHighlight, value) && _isLoaded) { OnPropertyChanged(nameof(AutoHighlightText)); OnPropertyChanged(nameof(AutoHighlightContents)); } } } public string AutoHighlightText => AutoHighlight ? LanguageSystem.Instance.AutoHighlightText : LanguageSystem.Instance.AutoLevyingText; public string AutoHighlightContents => AutoHighlight ? LanguageSystem.Instance.AutoHighlightContents : LanguageSystem.Instance.AutoLevyingContents; public bool IsXwindow { get => _isXwindow; set { if (SetProperty(ref _isXwindow, value) && _isLoaded) { OnPropertyChanged(nameof(IsXwindowPaint)); OnPropertyChanged(nameof(IsIsXwindowText)); OnSetIsXwindow(); } } } public Brush IsXwindowPaint => Paints.PointPaints[IsXwindow ? 1 : 0]; public string IsIsXwindowText => IsXwindow ? LanguageSystem.Instance.IsXwindowText : LanguageSystem.Instance.NotIsXwindowText; void OnSetIsXwindow() { if (IsXwindow) { XwindowSystem.Instance.HandleSystem(); } else { XwindowSystem.Instance.Stop(); } } public bool BW { get => _bw; set { if (SetProperty(ref _bw, value) && _isLoaded) { OnPropertyChanged(nameof(BWPaint)); OnPropertyChanged(nameof(BWText)); } } } public Brush BWPaint => BW ? BWSystem.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string BWText => BW ? LanguageSystem.Instance.BWText : LanguageSystem.Instance.NotBWText; public bool LS { get => _ls; set { if (SetProperty(ref _ls, value) && _isLoaded) { OnPropertyChanged(nameof(LSPaint)); OnPropertyChanged(nameof(LSText)); } } } public Brush LSPaint => LS ? LSSystem.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string LSText => LS ? LanguageSystem.Instance.LSText : LanguageSystem.Instance.NotLSText; public bool Aura { get => _aura; set { if (SetProperty(ref _aura, value) && _isLoaded) { OnPropertyChanged(nameof(AuraPaint)); OnPropertyChanged(nameof(AuraText)); } } } public Brush AuraPaint => Aura ? AuraSystem.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string AuraText => Aura ? LanguageSystem.Instance.AuraText : LanguageSystem.Instance.NotAuraText; public bool K70 { get => _valueK70; set { if (SetProperty(ref _valueK70, value) && _isLoaded) { OnPropertyChanged(nameof(K70Paint)); OnPropertyChanged(nameof(K70Text)); } } } public Brush K70Paint => K70 ? K70System.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string K70Text => K70 ? LanguageSystem.Instance.K70Text : LanguageSystem.Instance.NotK70Text; public bool GS { get => _valueGS; set { if (SetProperty(ref _valueGS, value) && _isLoaded) { OnPropertyChanged(nameof(GSPaint)); OnPropertyChanged(nameof(GSText)); } } } public Brush GSPaint => GS ? GSSystem.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string GSText => GS ? LanguageSystem.Instance.GSText : LanguageSystem.Instance.NotGSText; public bool Wooting { get => _wooting; set { if (SetProperty(ref _wooting, value) && _isLoaded) { OnPropertyChanged(nameof(WootingPaint)); OnPropertyChanged(nameof(WootingText)); } } } public Brush WootingPaint => Wooting ? WootingSystem.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string WootingText => Wooting ? LanguageSystem.Instance.WootingText : LanguageSystem.Instance.NotWootingText; public bool MSI { get => _valueMSI; set { if (SetProperty(ref _valueMSI, value) && _isLoaded) { OnPropertyChanged(nameof(MSIPaint)); OnPropertyChanged(nameof(MSIText)); } } } public Brush MSIPaint => MSI ? MSISystem.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string MSIText => MSI ? LanguageSystem.Instance.MSIText : LanguageSystem.Instance.NotMSIText; public bool CM { get => _valueCM; set { if (SetProperty(ref _valueCM, value) && _isLoaded) { OnPropertyChanged(nameof(CMPaint)); OnPropertyChanged(nameof(CMText)); } } } public Brush CMPaint => CM ? CMSystem.Instance.GroupPaint.Value : Paints.PointPaints[0]; public string CMText => CM ? LanguageSystem.Instance.CMText : LanguageSystem.Instance.NotCMText; public bool MediaInput { get => _mediaInput; set => SetProperty(ref _mediaInput, value, nameof(MediaInput)); } public bool LoadedMedia { get => _loadedMedia; set => SetProperty(ref _loadedMedia, value, nameof(LoadedMedia)); } public bool Media { get => _media; set { if (SetProperty(ref _media, value) && _isLoaded) { OnPropertyChanged(nameof(MediaPaint)); OnPropertyChanged(nameof(MediaText)); var handlingComputer = ViewModels.Instance.MainValue.GetHandlingComputer(); if (handlingComputer != null) { handlingComputer.SetWait(); MediaSystem.Instance.HandleDefaultIfAvailable(handlingComputer); MediaSystem.Instance.HandleIfAvailable(handlingComputer); } } } } public Brush MediaPaint => Paints.PointPaints[Media ? 1 : 0]; public string MediaText => Media ? LanguageSystem.Instance.MediaText : LanguageSystem.Instance.NotMediaText; [JsonIgnore] public bool HandleInputAudio { get => AudioConfigureValues[AudioSystem.Instance.AudioValue?.Name ?? string.Empty].HandleInputAudio; set { AudioConfigureValues[AudioSystem.Instance.AudioValue?.Name ?? string.Empty].HandleInputAudio = value; OnPropertyChanged(nameof(HandleInputAudio)); OnPropertyChanged(nameof(HandleInputAudioPaint)); OnPropertyChanged(nameof(HandleInputAudioText)); } } public Brush HandleInputAudioPaint => Paints.PointPaints[HandleInputAudio ? 1 : 0]; public string HandleInputAudioText => HandleInputAudio ? LanguageSystem.Instance.HandleInputAudioText : LanguageSystem.Instance.NotHandleInputAudioText; [JsonIgnore] public double BanalAudioWait { get => AudioConfigureValues[AudioSystem.Instance.AudioValue?.Name ?? string.Empty].AudioWait; set { AudioConfigureValues[AudioSystem.Instance.AudioValue?.Name ?? string.Empty].AudioWait = value; OnPropertyChanged(nameof(BanalAudioWait)); } } public bool BanalAudio { get => _banalAudio; set { if (SetProperty(ref _banalAudio, value) && _isLoaded) { OnPropertyChanged(nameof(BanalAudioPaint)); OnPropertyChanged(nameof(BanalAudioText)); } } } public Brush BanalAudioPaint => Paints.PointPaints[BanalAudio ? 1 : 0]; public string BanalAudioText => BanalAudio ? LanguageSystem.Instance.BanalAudioText : LanguageSystem.Instance.NotBanalAudioText; public bool BanalMedia { get => _banalMedia; set { if (SetProperty(ref _banalMedia, value, nameof(BanalMedia)) && _isLoaded) { OnPropertyChanged(nameof(BanalMediaPaint)); OnPropertyChanged(nameof(BanalMediaText)); } } } public Brush BanalMediaPaint => Paints.PointPaints[BanalMedia ? 1 : 0]; public string BanalMediaText => BanalMedia ? LanguageSystem.Instance.BanalMediaText : LanguageSystem.Instance.NotBanalMediaText; public bool AlwaysBanalMedia { get; set; } public bool BanalFailedMedia { get => _banalFailedMedia; set { if (SetProperty(ref _banalFailedMedia, value, nameof(BanalFailedMedia)) && _isLoaded) { OnPropertyChanged(nameof(BanalFailedMediaPaint)); OnPropertyChanged(nameof(BanalFailedMediaText)); } } } public Brush BanalFailedMediaPaint => Paints.PointPaints[BanalFailedMedia ? 1 : 0]; public string BanalFailedMediaText => BanalFailedMedia ? LanguageSystem.Instance.BanalFailedMediaText : LanguageSystem.Instance.NotBanalFailedMediaText; public bool AlwaysBanalFailedMedia { get; set; } public bool WaveIn { get => _waveIn; set => SetProperty(ref _waveIn, value, nameof(WaveIn)); } public bool Wave { get => _wave; set => SetProperty(ref _wave, value, nameof(Wave)); } public bool AudioInput { get => _audioInput; set { if (SetProperty(ref _audioInput, value, nameof(AudioInput)) && _isLoaded) { ViewModels.Instance.HandleSiteViewModels(siteViewModel => siteViewModel.NotifyIsSendingAudioInput()); } } } public bool UIPipelineLimiter { get => _valueUIPipelineLimiter; set { if (SetProperty(ref _valueUIPipelineLimiter, value, nameof(UIPipelineLimiter)) && _isLoaded) { OnPropertyChanged(nameof(UIPipelineLimiterPaint)); } } } public Brush UIPipelineLimiterPaint => Paints.PointPaints[UIPipelineLimiter ? 1 : 0]; public bool UIPipelineMainDrawingPaint { get => _valueUIPipelineMainDrawingPaint; set => SetProperty(ref _valueUIPipelineMainDrawingPaint, value, nameof(UIPipelineMainDrawingPaintPaint)); } public Brush UIPipelineMainDrawingPaintPaint => Paints.PointPaints[UIPipelineMainDrawingPaint ? 1 : 0]; public bool UIPipelineJudgmentMain { get => _valueUIPipelineJudgmentMain; set => SetProperty(ref _valueUIPipelineJudgmentMain, value, nameof(UIPipelineJudgmentMainPaint)); } public Brush UIPipelineJudgmentMainPaint => Paints.PointPaints[UIPipelineJudgmentMain ? 1 : 0]; public bool UIPipelineJudgmentCount { get => _valueUIPipelineJudgmentCount; set => SetProperty(ref _valueUIPipelineJudgmentCount, value, nameof(UIPipelineJudgmentCountPaint)); } public Brush UIPipelineJudgmentCountPaint => Paints.PointPaints[UIPipelineJudgmentCount ? 1 : 0]; public bool UIPipelineJudgmentVSVisualizer { get => _valueUIPipelineJudgmentVSVisualizer; set => SetProperty(ref _valueUIPipelineJudgmentVSVisualizer, value, nameof(UIPipelineJudgmentVSVisualizer)); } public Brush UIPipelineJudgmentVSVisualizerPaint => Paints.PointPaints[UIPipelineJudgmentVSVisualizer ? 1 : 0]; public bool UIPipelineJudgmentMeter { get => _valueUIPipelineJudgmentMeter; set { if (SetProperty(ref _valueUIPipelineJudgmentMeter, value, nameof(UIPipelineJudgmentMeter)) && _isLoaded) { OnPropertyChanged(nameof(UIPipelineJudgmentMeterPaint)); } } } public Brush UIPipelineJudgmentMeterPaint => Paints.PointPaints[UIPipelineJudgmentMeter ? 1 : 0]; public bool UIPipelineNet { get => _valueUIPipelineNet; set { if (SetProperty(ref _valueUIPipelineNet, value, nameof(UIPipelineNet)) && _isLoaded) { OnPropertyChanged(nameof(UIPipelineNetPaint)); } } } public Brush UIPipelineNetPaint => Paints.PointPaints[UIPipelineNet ? 1 : 0]; public bool UIPipelineHunter { get => _valueUIPipelineHunter; set { if (SetProperty(ref _valueUIPipelineHunter, value, nameof(UIPipelineHunter)) && _isLoaded) { OnPropertyChanged(nameof(UIPipelineHunterPaint)); } } } public Brush UIPipelineHunterPaint => Paints.PointPaints[UIPipelineHunter ? 1 : 0]; public bool UIPipelineJudgmentVisualizer { get => _valueUIPipelineJudgmentVisualizer; set { if (SetProperty(ref _valueUIPipelineJudgmentVisualizer, value, nameof(UIPipelineJudgmentVisualizer)) && _isLoaded) { OnPropertyChanged(nameof(UIPipelineJudgmentVisualizerPaint)); } } } public Brush UIPipelineJudgmentVisualizerPaint => Paints.PointPaints[UIPipelineJudgmentVisualizer ? 1 : 0]; public bool UIPipelineJudgmentPaint { get => _valueUIPipelineJudgmentPaint; set => SetProperty(ref _valueUIPipelineJudgmentPaint, value, nameof(UIPipelineJudgmentPaint)); } public Brush UIPipelineJudgmentPaintPaint => Paints.PointPaints[UIPipelineJudgmentPaint ? 1 : 0]; public bool UIPipelineHitNotePaint { get => _valueUIPipelineHitNotePaint; set => SetProperty(ref _valueUIPipelineHitNotePaint, value, nameof(UIPipelineHitNotePaintPaint)); } public Brush UIPipelineHitNotePaintPaint => Paints.PointPaints[UIPipelineHitNotePaint ? 1 : 0]; public bool UIPipelineBPM { get => _valueUIPipelineBPM; set { if (SetProperty(ref _valueUIPipelineBPM, value, nameof(UIPipelineBPM)) && _isLoaded) { OnPropertyChanged(nameof(UIPipelineBPMPaint)); } } } public Brush UIPipelineBPMPaint => Paints.PointPaints[UIPipelineBPM ? 1 : 0]; public bool UICommentNote { get => _valueUICommentNote; set => SetProperty(ref _valueUICommentNote, value, nameof(UICommentNotePaint)); } public Brush UICommentNotePaint => Paints.PointPaints[UICommentNote ? 1 : 0]; public bool UIPipelineMainJudgmentMeter { get => _valueUIPipelineMainJudgmentMeter; set => SetProperty(ref _valueUIPipelineMainJudgmentMeter, value, nameof(UIPipelineMainJudgmentMeterPaint)); } public Brush UIPipelineMainJudgmentMeterPaint => Paints.PointPaints[UIPipelineMainJudgmentMeter ? 1 : 0]; public bool UIPipelineJudgmentInputVisualizer { get => _valueUIPipelineJudgmentInputVisualizer; set { if (SetProperty(ref _valueUIPipelineJudgmentInputVisualizer, value, nameof(UIPipelineJudgmentInputVisualizer)) && _isLoaded) { OnPropertyChanged(nameof(UIPipelineJudgmentInputVisualizerPaint)); } } } public Brush UIPipelineJudgmentInputVisualizerPaint => Paints.PointPaints[UIPipelineJudgmentInputVisualizer ? 1 : 0]; public bool FlowVeilDrawing { get => _flowVeilDrawing; set { if (SetProperty(ref _flowVeilDrawing, value) && _isLoaded) { OnPropertyChanged(nameof(FlowVeilDrawingPaint)); OnPropertyChanged(nameof(FlowVeilDrawingText)); } } } public Brush FlowVeilDrawingPaint => Paints.PointPaints[FlowVeilDrawing ? 1 : 0]; public string FlowVeilDrawingText => FlowVeilDrawing ? LanguageSystem.Instance.FlowVeilDrawingText : LanguageSystem.Instance.NotFlowVeilDrawingText; public bool LowHitPointsFaintUI { get => _lowHitPointsFaintUI; set { if (SetProperty(ref _lowHitPointsFaintUI, value) && _isLoaded) { OnPropertyChanged(nameof(LowHitPointsFaintUIPaint)); OnPropertyChanged(nameof(LowHitPointsFaintUIText)); } } } public Brush LowHitPointsFaintUIPaint => LowHitPointsFaintUI ? Paints.Paint1 : Paints.Paint4; public string LowHitPointsFaintUIText => LowHitPointsFaintUI ? LanguageSystem.Instance.LowHitPointsFaintUIText : LanguageSystem.Instance.NotLowHitPointsFaintUIText; public bool AudioVisualizer { get => _audioVisualizer; set { if (SetProperty(ref _audioVisualizer, value, nameof(AudioVisualizer)) && _isLoaded) { AudioSystem.Instance.SetAudioVisualizer(value); } } } public bool Equalizer { get => _equalizer; set { if (SetProperty(ref _equalizer, value, nameof(Equalizer)) && _isLoaded) { OnPropertyChanged(nameof(EqualizerPaint)); AudioSystem.Instance.SetEqualizer(value); } } } public Brush EqualizerPaint => Paints.PointPaints[Equalizer ? 1 : 0]; public bool TotalLimiterVariety { get => _totalLimiterVariety; set => SetProperty(ref _totalLimiterVariety, value, nameof(TotalLimiterVariety)); } public bool AutoableLimiterVariety { get; set; } public bool CenterLimiterVariety { get; set; } public bool Limiter57Variety { get; set; } public bool IsMediaFill { get => _isMediaFill; set { if (SetProperty(ref _isMediaFill, value) && _isLoaded) { OnPropertyChanged(nameof(IsMediaFillText)); OnPropertyChanged(nameof(IsMediaFillContents)); } } } public string IsMediaFillText => IsMediaFill ? LanguageSystem.Instance.MediaFillText : LanguageSystem.Instance.NotMediaFillText; public string IsMediaFillContents => IsMediaFill ? LanguageSystem.Instance.MediaFillContents : LanguageSystem.Instance.NotMediaFillContents; public bool LostPointAudio { get => _lostPointAudio; set { if (SetProperty(ref _lostPointAudio, value) && _isLoaded) { OnPropertyChanged(nameof(LostPointAudioPaint)); OnPropertyChanged(nameof(LostPointAudioText)); } } } public Brush LostPointAudioPaint => Paints.PointPaints[LostPointAudio ? 1 : 0]; public string LostPointAudioText => LostPointAudio ? LanguageSystem.Instance.LostPointAudioText : LanguageSystem.Instance.NotLostPointAudioText; public Dictionary<string, string> LastInputWants { get; set; } [JsonIgnore] public string InputWant { get => LastInputWants.GetValueOrDefault(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, string.Empty); set => LastInputWants[LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty] = value; } public bool SaltAuto { get => _saltAuto; set => SetProperty(ref _saltAuto, value, nameof(SaltAuto)); } public bool IsFailMode { get => _isFailMode; set { if (SetProperty(ref _isFailMode, value) && _isLoaded) { OnPropertyChanged(nameof(IsFailModeText)); OnPropertyChanged(nameof(IsFailModeContents)); } } } public string IsFailModeText => IsFailMode ? LanguageSystem.Instance.IsFailModeText : LanguageSystem.Instance.NotIsFailModeText; public string IsFailModeContents => IsFailMode ? LanguageSystem.Instance.IsFailModeContents : LanguageSystem.Instance.NotIsFailModeContents; public Dictionary<string, WantLevelConfigure> LastWantLevelConfigures { get; set; } [JsonIgnore] public bool WantLevelSystem { get => LastWantLevelConfigures.GetValueOrDefault(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, new()).WantLevelSystem; set { if (LastWantLevelConfigures.TryGetValue(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, out var wantLevelConfigure)) { wantLevelConfigure.WantLevelSystem = value; } else { LastWantLevelConfigures[LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty] = new() { WantLevelSystem = value }; } OnPropertyChanged(nameof(WantLevelSystem)); OnPropertyChanged(nameof(WantLevelNameText)); } } [JsonIgnore] public string LastWantLevelName { get => LastWantLevelConfigures.GetValueOrDefault(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, new()).WantLevelName; set { if (LastWantLevelConfigures.TryGetValue(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, out var wantLevelConfigure)) { wantLevelConfigure.WantLevelName = value; } else { LastWantLevelConfigures[LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty] = new() { WantLevelName = value }; } OnPropertyChanged(nameof(LastWantLevelName)); OnPropertyChanged(nameof(WantLevelNameText)); } } public string WantLevelNameText => LastWantLevelConfigures.GetValueOrDefault(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, new()).WantLevelNameText; [JsonIgnore] public string[] LastWantLevelIDs { get => LastWantLevelConfigures.GetValueOrDefault(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, new()).WantLevelIDs; set { if (LastWantLevelConfigures.TryGetValue(LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty, out var wantLevelConfigure)) { wantLevelConfigure.WantLevelIDs = value; } else { LastWantLevelConfigures[LastDefaultEntryItem?.DefaultEntryPath ?? string.Empty] = new() { WantLevelIDs = value }; } } } public bool AutoLogIn { get => _autoLogIn; set => SetProperty(ref _autoLogIn, value, nameof(AutoLogIn)); } public uint AudioDataLength { get => _audioDataLength; set => SetProperty(ref _audioDataLength, value, nameof(AudioDataLength)); } public int LowestWantLevelTextValue { get => _lowestWantLevelTextValue; set => SetProperty(ref _lowestWantLevelTextValue, value, nameof(LowestWantLevelTextValue)); } public int HighestWantLevelTextValue { get => _highestWantLevelContensValue; set => SetProperty(ref _highestWantLevelContensValue, value, nameof(HighestWantLevelTextValue)); } public bool WantLevelTextValue { get => _wantLevelTextValue; set => SetProperty(ref _wantLevelTextValue, value, nameof(WantLevelTextValue)); } public int LowestWantBPM { get => _lowestWantBPM; set => SetProperty(ref _lowestWantBPM, value, nameof(LowestWantBPM)); } public int HighestWantBPM { get => _highestWantBPM; set => SetProperty(ref _highestWantBPM, value, nameof(HighestWantBPM)); } public bool WantBPM { get => _wantBPM; set => SetProperty(ref _wantBPM, value, nameof(WantBPM)); } public int LowestWantAverageInputCount { get => _lowestWantAverageInputCount; set => SetProperty(ref _lowestWantAverageInputCount, value, nameof(LowestWantAverageInputCount)); } public int HighestWantAverageInputCount { get => _highestWantAverageInputCount; set => SetProperty(ref _highestWantAverageInputCount, value, nameof(HighestWantAverageInputCount)); } public bool WantAverageInputCount { get => _wantAverageInputCount; set => SetProperty(ref _wantAverageInputCount, value, nameof(WantAverageInputCount)); } public int LowestWantHighestInputCount { get => _lowestWantHighestInputCount; set => SetProperty(ref _lowestWantHighestInputCount, value, nameof(LowestWantHighestInputCount)); } public int HighestWantHighestInputCount { get => _highestWantHighestInputCount; set => SetProperty(ref _highestWantHighestInputCount, value, nameof(HighestWantHighestInputCount)); } public bool WantHighestInputCount { get => _wantHighestInputCount; set => SetProperty(ref _wantHighestInputCount, value, nameof(WantHighestInputCount)); } public int WindowPosition0V2 { get; set; } public int WindowPosition1V2 { get; set; } public int WindowLengthV2 { get => _windowLength; set => SetProperty(ref _windowLength, value, nameof(WindowLengthV2)); } public int WindowHeightV2 { get => _windowHeight; set => SetProperty(ref _windowHeight, value, nameof(WindowHeightV2)); } public double AudioWait { get => _audioWait; set => SetProperty(ref _audioWait, value, nameof(AudioWait)); } public double MediaWait { get => _mediaWait; set => SetProperty(ref _mediaWait, value, nameof(MediaWait)); } public double BanalMediaWait { get; set; } public DefaultEntryItem LastDefaultEntryItem { get => _lastDefaultEntryItem; set { if (SetProperty(ref _lastDefaultEntryItem, value, nameof(LastDefaultEntryItem)) && _isLoaded) { OnPropertyChanged(nameof(InputWant)); OnPropertyChanged(nameof(WantLevelSystem)); OnPropertyChanged(nameof(LastWantLevelName)); OnPropertyChanged(nameof(WantLevelNameText)); OnSetLastDefaultEntryItem(); } } } void OnSetLastDefaultEntryItem() { LevelSystem.Instance.Load(false); } public UIItem UIItemValue { get => _valueUIItem; set { if (SetProperty(ref _valueUIItem, value, nameof(UIItemValue)) && _isLoaded) { OnPropertyChanged(nameof(UIConfigureValue)); } } } public UIItem BaseUIItemValue { get => _valueBaseUIItemValue; set => SetProperty(ref _valueBaseUIItemValue, value, nameof(BaseUIItemValue)); } public bool AlwaysNotP2Position { get => _alwaysNotP2Position; set { if (SetProperty(ref _alwaysNotP2Position, value) && _isLoaded) { OnPropertyChanged(nameof(AlwaysNotP2PositionText)); OnPropertyChanged(nameof(AlwaysNotP2PositionContents)); } } } public string AlwaysNotP2PositionText => AlwaysNotP2Position ? LanguageSystem.Instance.AlwaysNotP2PositionText : LanguageSystem.Instance.AlwaysP2PositionText; public string AlwaysNotP2PositionContents => AlwaysNotP2Position ? LanguageSystem.Instance.AlwaysNotP2PositionContents : LanguageSystem.Instance.AlwaysP2PositionContents; public bool GroupEntry { get; set; } public HunterVariety HunterVarietyV2Value { get => _hunterVariety; set => SetProperty(ref _hunterVariety, value, nameof(IsFavorHunterVariety)); } public bool IsFavorHunterVariety => HunterVarietyV2Value.Mode == HunterVariety.HunterVarietyFavor; public bool NetCommentFollow { get => _netCommentFollow; set { if (SetProperty(ref _netCommentFollow, value) && _isLoaded) { OnPropertyChanged(nameof(NetCommentFollowText)); OnPropertyChanged(nameof(NetCommentFollowContents)); } } } public string NetCommentFollowText => NetCommentFollow ? LanguageSystem.Instance.NetCommentFollowText : LanguageSystem.Instance.NetCommentNotFollowText; public string NetCommentFollowContents => NetCommentFollow ? LanguageSystem.Instance.NetCommentFollowContents : LanguageSystem.Instance.NetCommentNotFollowContents; public bool WantHellBPM { get => _wantHellBPM; set => SetProperty(ref _wantHellBPM, value, nameof(WantHellBPMText)); } public string WantHellBPMText => WantHellBPM ? LanguageSystem.Instance.HellBPMText : LanguageSystem.Instance.NotHellBPMText; public int NetItemCount { get; set; } public void Save(bool isParallel) { if (isParallel) { Task.Run(SaveImpl); } else { SaveImpl(); } void SaveImpl() { lock (_setSaveCSX) { ModeComponentValue = ViewModels.Instance.MainValue.ModeComponentValue; Utility.CopyFile(_fileName, _tmp0FileName); Utility.MoveFile(_tmp0FileName, _tmp1FileName); File.WriteAllText(_fileName, Utility.SetJSON(this, _defaultJSONConfigure), Encoding.UTF8); Utility.WipeFile(_tmp1FileName); } } } public void Validate(bool isInit) { if (isInit || LoadingBin == default) { LoadingBin = QwilightComponent.CPUCount; } if (isInit || CompilingBin == default) { CompilingBin = QwilightComponent.CPUCount; } if (isInit || AvatarID == default) { AvatarID = string.Empty; } if (isInit || Cipher == default) { Cipher = Array.Empty<byte>(); } if (isInit) { ControllerInputAPI = ControllerSystem.InputAPI.DInput; AutoLogIn = false; IsFailMode = true; LowHitPointsFaintUI = true; IsLoaded = false; AutoHighlight = true; InputMappingValue = Component.InputMapping.Mapping1; IsMediaFill = true; AudioWait = 0.0; SaltAuto = false; Equalizer = false; InitEqualizers(1); Vibration0 = 1.0; Vibration1 = 1.0; Vibration2 = 1.0; Vibration3 = 1.0; VibrationModeValue = ControllerSystem.VibrationMode.Input; NoteFormatID = -1; AlwaysNotP2Position = false; IsXwindow = false; } if (isInit || AudioVariety == default) { AudioVariety = OUTPUTTYPE.WASAPI; } if (isInit || Utility.IsLowerDate(Date, 1, 5, 8)) { DefaultEntryItems = new(); } if (isInit || Utility.IsLowerDate(Date, 1, 8, 7)) { UIBin = QwilightComponent.CPUCount; } if (isInit || Utility.IsLowerDate(Date, 1, 8, 12)) { AudioVisualizerCount = 80; AudioVisualizerModeValue = AudioVisualizerMode.AudioVisualizerMode2; JudgmentVisualizerMillis = 1000.0; UIPipelineJudgmentCount = true; UIPipelineJudgmentMeter = true; UIPipelineJudgmentVisualizer = true; UIPipelineJudgmentPaint = true; UIPipelineHitNotePaint = true; UIPipelineBPM = true; } if (isInit || Utility.IsLowerDate(Date, 1, 9, 0)) { UIPipelineMainDrawingPaint = true; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 0)) { AudioInput = false; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 2)) { WaveIn = true; Wave = true; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 9)) { MediaWait = 0.0; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 14)) { DefaultEntryItems.Add(new() { DefaultEntryVarietyValue = DefaultEntryItem.DefaultEntryVariety.Favorite, DefaultEntryPath = Guid.NewGuid().ToString(), FavoriteEntryName = "Favorites ⭐" }); } if (isInit || Utility.IsLowerDate(Date, 1, 10, 19)) { CommentViewTabPosition = 0; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 20)) { MainAudioVolume = 1.0; InputAudioVolume = 1.0; TotalAudioVolume = 1.0; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 23)) { WantBPM = false; LowestWantBPM = 60; HighestWantBPM = 240; WantHighestInputCount = false; LowestWantHighestInputCount = 8; HighestWantHighestInputCount = 16; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 30)) { AudioMultiplierAtone = false; } if (isInit || Utility.IsLowerDate(Date, 1, 10, 32)) { AutoCompute = true; UIPipelineLimiter = false; } if (isInit || Utility.IsLowerDate(Date, 1, 11, 1)) { WindowedMode = true; } if (isInit || Utility.IsLowerDate(Date, 1, 11, 4)) { UIItemValue = new() { UIEntry = "Default", YamlName = "Default" }; } if (isInit || Utility.IsLowerDate(Date, 1, 11, 5)) { NetItemCount = 8; UIPipelineNet = true; UIPipelineHunter = true; NetCommentFollow = true; } if (isInit || Utility.IsLowerDate(Date, 1, 11, 6)) { TotalLimiterVariety = true; AutoableLimiterVariety = false; CenterLimiterVariety = false; } if (isInit || Utility.IsLowerDate(Date, 1, 11, 9)) { BaseUIItemValue = new() { UIEntry = "@Default", YamlName = "@Default" }; } if (isInit || Utility.IsLowerDate(Date, 1, 11, 9)) { WantLevelTextValue = false; LowestWantLevelTextValue = 1; HighestWantLevelTextValue = 12; } if (isInit || Utility.IsLowerDate(Date, 1, 11, 36)) { GroupEntry = true; } if (isInit || Utility.IsLowerDate(Date, 1, 12, 0)) { MediaInput = false; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 25)) { InitColors(1); } if (isInit || Utility.IsLowerDate(Date, 1, 13, 32)) { InitEqualizers(2); SFX = false; Flange = false; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 38)) { Limiter57Variety = true; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 51)) { HandleFailedAudio = new() { Data = ViewItem.Always }; ViewFailedDrawing = new() { Data = ViewItem.Always }; ViewLowestJudgment = new() { Data = ViewItem.Always }; HandleFailedAudioCount = 5; FailedDrawingMillis = 500.0; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 54)) { AudioVisualizer = true; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 61)) { BPMVarietyValue = new() { Data = BPMVariety.AudioMultiplier }; HunterVarietyV2Value = new() { Mode = HunterVariety.HunterVarietyHigher }; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 65)) { LoopUnit = 1000; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 94)) { AutoEnterNotifySite = new() { Data = AutoEnterSite.AutoEnter }; AutoEnterDefaultSite = new() { Data = AutoEnterSite.AutoEnter }; AutoEnterPlatformSite = new() { Data = AutoEnterSite.AutoEnter }; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 101)) { Aura = false; K70 = false; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 110)) { MIDIPBCSensitivity = 100; BW = false; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 128)) { WindowPosition0V2 = 0; WindowPosition1V2 = 0; WindowLengthV2 = 1280; WindowHeightV2 = 720; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 133)) { SEAudioVolume = 1.0; AudioInputValue = 0.0; WaveFadeVolume = 50.0; } if (isInit || Utility.IsLowerDate(Date, 1, 13, 138)) { VESAV2 = false; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 0)) { FavorMediaInput = false; InitMediaInputArea(); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 5)) { DInputXyzSensitivityV2 = 100; LostPointAudio = true; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 6)) { InputAudioVarietyValue = InputAudioVariety.IIDX; FavorJudgments = new() { new() { Name = "LR2 EZ", Value = new double[6][] { [ -21.0, 21.0 ], [ -40.5, 40.5 ], [ -60.0, 60.0 ], [ -120.0, 120.0 ], [ -200.0, 200.0 ], [ -1000.0, 200.0 ] }, IsDefault = true }, new() { Name = "LR2 NM", Value = new double[6][] { [ -18.0, 18.0 ], [ -29.0, 29.0 ], [ -40.0, 40.0 ], [ -100.0, 100.0 ], [ -200.0, 200.0 ], [ -1000.0, 200.0 ] }, IsDefault = true }, new() { Name = "LR2 HD", Value = new double[6][] { [ -15.0, 15.0 ], [ -22.5, 22.5 ], [ -30.0, 30.0 ], [ -60.0, 60.0 ], [ -200.0, 200.0 ], [ -1000.0, 200.0 ] }, IsDefault = true }, new() { Name = "LR2 VHD", Value = new double[6][] { [ -8.0, 8.0 ], [ -16.0, 16.0 ], [ -24.0, 24.0 ], [ -40.0, 40.0 ], [ -200.0, 200.0 ], [ -1000.0, 200.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA EZ", Value = new double[6][] { [ -20.0, 20.0 ], [ -40.0, 40.0 ], [ -60.0, 60.0 ], [ -150.0, 150.0 ], [ -220.0, 280.0 ], [ -500.0, 280.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA NM", Value = new double[6][] { [ -15.0, 15.0 ], [ -30.0, 30.0 ], [ -45.0, 45.0 ], [ -112.5, 112.5 ], [ -275.0, 350.0 ], [ -500.0, 350.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA HD", Value = new double[6][] { [ -10.0, 10.0 ], [ -20.0, 20.0 ], [ -30.0, 30.0 ], [ -75.0, 75.0 ], [ -330.0, 420.0 ], [ -500.0, 420.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA VHD", Value = new double[6][] { [ -5.0, 5.0 ], [ -10.0, 10.0 ], [ -15.0, 15.0 ], [ -37.5, 37.5 ], [ -385.0, 490.0 ], [ -500.0, 490.0 ] }, IsDefault = true } }; FavorHitPoints = new() { new() { Name = "LR2 EZ", Value = new double[6][] { [ 120.0, 0.0 ], [ 120.0, 0.0 ], [ 120.0, 0.0 ], [ 60.0, 0.0 ], [ 0.0, -4.8 ], [ 0.0, -3.2 ] }, IsDefault = true }, new() { Name = "LR2 NM", Value = new double[6][] { [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 50.0, 0.0 ], [ 0.0, -6.0 ], [ 0.0, -4.0 ] }, IsDefault = true }, new() { Name = "LR2 HD", Value = new double[6][] { [ 0.0, 0.1 ], [ 0.0, 0.1 ], [ 0.0, 0.1 ], [ 0.0, 0.05 ], [ 0.0, -10.0 ], [ 0.0, -6.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA EZ", Value = new double[6][] { [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 50.0, 0.0 ], [ 0.0, -1.0 ], [ 0.0, -2.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA NM", Value = new double[6][] { [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 50.0, 0.0 ], [ 0.0, -1.0 ], [ 0.0, -3.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA HD", Value = new double[6][] { [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 100.0, 0.0 ], [ 50.0, 0.0 ], [ 0.0, -2.0 ], [ 0.0, -6.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA VHD", Value = new double[6][] { [ 0.0, 0.15 ], [ 0.0, 0.135 ], [ 0.0, 0.12 ], [ 0.0, 0.03 ], [ 0.0, -5.0 ], [ 0.0, -10.0 ] }, IsDefault = true }, new() { Name = "BEATORAJA UHD", Value = new double[6][] { [ 0.0, 0.15 ], [ 0.0, 0.105 ], [ 0.0, 0.06 ], [ 0.0, 0.0 ], [ 0.0, -10.0 ], [ 0.0, -15.0 ] }, IsDefault = true } }; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 7)) { InputWantLevel = new bool[6]; Array.Fill(InputWantLevel, true); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 13)) { AudioDataLength = 256; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 20)) { DInputControllerVarietyValue = ControllerSystem.DInputControllerVariety.BMS; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 26)) { SetSalt = false; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 32)) { DInputBundlesV4 = new(); DInputBundlesV4.SetInputs(); XInputBundlesV4 = new(); XInputBundlesV4.SetInputs(); XInputBundlesV4.Inputs[(int)Component.InputMode._4][1][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadLeft }; XInputBundlesV4.Inputs[(int)Component.InputMode._4][2][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadUp }; XInputBundlesV4.Inputs[(int)Component.InputMode._4][3][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.Y }; XInputBundlesV4.Inputs[(int)Component.InputMode._4][4][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.B }; XInputBundlesV4.Inputs[(int)Component.InputMode._5][1][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadLeft }; XInputBundlesV4.Inputs[(int)Component.InputMode._5][2][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadUp }; XInputBundlesV4.Inputs[(int)Component.InputMode._5][3][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadRight }; XInputBundlesV4.Inputs[(int)Component.InputMode._5][3][1].Data = new() { Buttons = Vortice.XInput.GamepadButtons.X }; XInputBundlesV4.Inputs[(int)Component.InputMode._5][4][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.Y }; XInputBundlesV4.Inputs[(int)Component.InputMode._5][5][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.B }; XInputBundlesV4.Inputs[(int)Component.InputMode._6][1][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadLeft }; XInputBundlesV4.Inputs[(int)Component.InputMode._6][2][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadUp }; XInputBundlesV4.Inputs[(int)Component.InputMode._6][3][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadRight }; XInputBundlesV4.Inputs[(int)Component.InputMode._6][4][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.X }; XInputBundlesV4.Inputs[(int)Component.InputMode._6][5][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.Y }; XInputBundlesV4.Inputs[(int)Component.InputMode._6][6][0].Data = new() { Buttons = Vortice.XInput.GamepadButtons.B }; WGIBundlesV3 = new(); WGIBundlesV3.SetInputs(); WGIBundlesV3.Inputs[(int)Component.InputMode._4][1][0].Data = new() { Buttons = GamepadButtons.DPadLeft }; WGIBundlesV3.Inputs[(int)Component.InputMode._4][2][0].Data = new() { Buttons = GamepadButtons.DPadUp }; WGIBundlesV3.Inputs[(int)Component.InputMode._4][3][0].Data = new() { Buttons = GamepadButtons.Y }; WGIBundlesV3.Inputs[(int)Component.InputMode._4][4][0].Data = new() { Buttons = GamepadButtons.B }; WGIBundlesV3.Inputs[(int)Component.InputMode._5][1][0].Data = new() { Buttons = GamepadButtons.DPadLeft }; WGIBundlesV3.Inputs[(int)Component.InputMode._5][2][0].Data = new() { Buttons = GamepadButtons.DPadUp }; WGIBundlesV3.Inputs[(int)Component.InputMode._5][3][0].Data = new() { Buttons = GamepadButtons.DPadRight }; WGIBundlesV3.Inputs[(int)Component.InputMode._5][3][1].Data = new() { Buttons = GamepadButtons.X }; WGIBundlesV3.Inputs[(int)Component.InputMode._5][4][0].Data = new() { Buttons = GamepadButtons.Y }; WGIBundlesV3.Inputs[(int)Component.InputMode._5][5][0].Data = new() { Buttons = GamepadButtons.B }; WGIBundlesV3.Inputs[(int)Component.InputMode._6][1][0].Data = new() { Buttons = GamepadButtons.DPadLeft }; WGIBundlesV3.Inputs[(int)Component.InputMode._6][2][0].Data = new() { Buttons = GamepadButtons.DPadUp }; WGIBundlesV3.Inputs[(int)Component.InputMode._6][3][0].Data = new() { Buttons = GamepadButtons.DPadRight }; WGIBundlesV3.Inputs[(int)Component.InputMode._6][4][0].Data = new() { Buttons = GamepadButtons.X }; WGIBundlesV3.Inputs[(int)Component.InputMode._6][5][0].Data = new() { Buttons = GamepadButtons.Y }; WGIBundlesV3.Inputs[(int)Component.InputMode._6][6][0].Data = new() { Buttons = GamepadButtons.B }; MIDIBundlesV4 = new(); MIDIBundlesV4.SetInputs(); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 49)) { UICommentNote = true; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 63)) { AutoNoteWait = false; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 64)) { StopLastEqualAudio = true; LevelTargetMap = new(); Language = Utility.GetLanguage(CultureInfo.CurrentUICulture.LCID); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 66)) { AutoGetQwilight = !QwilightComponent.IsVS; NVLLModeValue = NVLLMode.Not; NVLLFramerate = 0U; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 67)) { DefaultInputBundlesV6 = new(); DefaultInputBundlesV6.SetInputs(); DefaultInputBundlesV6.Inputs[(int)Component.InputMode._4][1][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._4][2][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._4][3][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._4][4][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5][1][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5][2][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5][3][0].Data = VirtualKey.Space; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5][4][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5][5][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._6][1][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._6][2][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._6][3][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._6][4][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._6][5][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._6][6][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7][1][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7][2][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7][3][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7][4][0].Data = VirtualKey.Space; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7][5][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7][6][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7][7][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][1][0].Data = VirtualKey.A; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][2][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][3][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][4][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][5][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][6][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][7][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._8][8][0].Data = (VirtualKey)186; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][1][0].Data = VirtualKey.A; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][2][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][3][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][4][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][5][0].Data = VirtualKey.Space; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][6][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][7][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][8][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][9][0].Data = (VirtualKey)186; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][1][1].Data = VirtualKey.NumberPad7; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][2][1].Data = VirtualKey.NumberPad8; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][3][1].Data = VirtualKey.NumberPad9; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][4][1].Data = VirtualKey.NumberPad4; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][5][1].Data = VirtualKey.NumberPad5; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][6][1].Data = VirtualKey.NumberPad6; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][7][1].Data = VirtualKey.NumberPad1; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][8][1].Data = VirtualKey.NumberPad2; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._9][9][1].Data = VirtualKey.NumberPad3; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5_1][1][0].Data = VirtualKey.LeftShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5_1][1][1].Data = VirtualKey.RightShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5_1][2][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5_1][3][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5_1][4][0].Data = VirtualKey.Space; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5_1][5][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._5_1][6][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][1][0].Data = VirtualKey.LeftShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][1][1].Data = VirtualKey.RightShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][2][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][3][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][4][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][5][0].Data = VirtualKey.Space; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][6][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][7][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._7_1][8][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][1][0].Data = VirtualKey.LeftShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][2][0].Data = VirtualKey.Z; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][3][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][4][0].Data = VirtualKey.X; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][5][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][6][0].Data = VirtualKey.C; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][7][0].Data = (VirtualKey)188; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][8][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][9][0].Data = (VirtualKey)190; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][10][0].Data = (VirtualKey)186; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][11][0].Data = (VirtualKey)191; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10_2][12][0].Data = VirtualKey.RightShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][1][0].Data = VirtualKey.LeftShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][2][0].Data = VirtualKey.Z; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][3][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][4][0].Data = VirtualKey.X; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][5][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][6][0].Data = VirtualKey.C; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][7][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][8][0].Data = VirtualKey.V; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][9][0].Data = VirtualKey.M; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][10][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][11][0].Data = (VirtualKey)188; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][12][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][13][0].Data = (VirtualKey)190; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][14][0].Data = (VirtualKey)186; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][15][0].Data = (VirtualKey)191; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._14_2][16][0].Data = VirtualKey.RightShift; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][1][0].Data = VirtualKey.A; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][2][0].Data = VirtualKey.S; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][3][0].Data = VirtualKey.D; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][4][0].Data = VirtualKey.F; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][5][0].Data = VirtualKey.G; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][6][0].Data = VirtualKey.H; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][7][0].Data = VirtualKey.J; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][8][0].Data = VirtualKey.K; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][9][0].Data = VirtualKey.L; DefaultInputBundlesV6.Inputs[(int)Component.InputMode._10][10][0].Data = (VirtualKey)186; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 69)) { DataCount3 = false; DetailedConfigure = false; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 72)) { UIPipelineJudgmentMain = true; UIPipelineMainJudgmentMeter = true; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 73)) { AutoJudgmentMeterMillis = true; AutoJudgmentMeterMillisItemValue = new() { Judged = Component.Judged.Highest }; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 75)) { AllowTwilightComment = !QwilightComponent.IsVS; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 78)) { DefaultControllerInputAPI = DefaultControllerSystem.InputAPI.DefaultInput; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 96)) { InputWantNoteVariety = new bool[7]; Array.Fill(InputWantNoteVariety, true); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 97)) { LastDefaultEntryItem = DefaultEntryItem.Total; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 101)) { LastEntryItemPositions = new(); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 103)) { PassedTutorialIDs = new(); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 104)) { Tube = false; FitModeValue = new() { Mode = FitMode.Title }; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 107)) { LastWASAPIAudioValueID = 0; LastASIOAudioValueID = 0; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 109)) { ModeComponentBundles = new ModeComponentBundle[] { new(), new(), new() { Name = "LR2 EZ", Value = new() { JudgmentModeValue = ModeComponent.JudgmentMode.Favor, HitPointsModeValue = ModeComponent.HitPointsMode.Favor, FavorJudgments = new double[6][] { new double[] { -21.0, 21.0 }, new double[] { -40.5, 40.5 }, new double[] { -60.0, 60.0 }, new double[] { -120.0, 120.0 }, new double[] { -200.0, 200.0 }, new double[] { -1000.0, 200.0 } }, FavorHitPoints = new double[6][] { new double[] { 120.0, 0.0 }, new double[] { 120.0, 0.0 }, new double[] { 120.0, 0.0 }, new double[] { 60.0, 0.0 }, new double[] { 0.0, -4.8 }, new double[] { 0.0, -3.2 } } } }, new() { Name = "LR2 NM", Value = new() { JudgmentModeValue = ModeComponent.JudgmentMode.Favor, HitPointsModeValue = ModeComponent.HitPointsMode.Favor, FavorJudgments = new double[6][] { new double[] { -18.0, 18.0 }, new double[] { -29.0, 29.0 }, new double[] { -40.0, 40.0 }, new double[] { -100.0, 100.0 }, new double[] { -200.0, 200.0 }, new double[] { -1000.0, 200.0 } }, FavorHitPoints = new double[6][] { new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 50.0, 0.0 }, new double[] { 0.0, -6.0 }, new double[] { 0.0, -4.0 } } } }, new() { Name = "LR2 HD", Value = new() { JudgmentModeValue = ModeComponent.JudgmentMode.Favor, HitPointsModeValue = ModeComponent.HitPointsMode.Favor, FavorJudgments = new double[6][] { new double[] { -15.0, 15.0 }, new double[] { -22.5, 22.5 }, new double[] { -30.0, 30.0 }, new double[] { -60.0, 60.0 }, new double[] { -200.0, 200.0 }, new double[] { -1000.0, 200.0 } }, FavorHitPoints = new double[6][] { new double[] { 0.0, 0.1 }, new double[] { 0.0, 0.1 }, new double[] { 0.0, 0.1 }, new double[] { 0.0, 0.05 }, new double[] { 0.0, -10.0 }, new double[] { 0.0, -6.0 } } } }, new() { Name = "BEATORAJA EZ", Value = new() { JudgmentModeValue = ModeComponent.JudgmentMode.Favor, HitPointsModeValue = ModeComponent.HitPointsMode.Favor, FavorJudgments = new double[6][] { new double[] { -20.0, 20.0 }, new double[] { -40.0, 40.0 }, new double[] { -60.0, 60.0 }, new double[] { -150.0, 150.0 }, new double[] { -220.0, 280.0 }, new double[] { -500.0, 280.0 } }, FavorHitPoints = new double[6][] { new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 50.0, 0.0 }, new double[] { 0.0, -1.0 }, new double[] { 0.0, -2.0 } } } }, new() { Name = "BEATORAJA NM", Value = new() { JudgmentModeValue = ModeComponent.JudgmentMode.Favor, HitPointsModeValue = ModeComponent.HitPointsMode.Favor, FavorJudgments = new double[6][] { new double[] { -15.0, 15.0 }, new double[] { -30.0, 30.0 }, new double[] { -45.0, 45.0 }, new double[] { -112.5, 112.5 }, new double[] { -275.0, 350.0 }, new double[] { -500.0, 350.0 } }, FavorHitPoints = new double[6][] { new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 50.0, 0.0 }, new double[] { 0.0, -1.0 }, new double[] { 0.0, -3.0 } } } }, new() { Name = "BEATORAJA HD", Value = new() { JudgmentModeValue = ModeComponent.JudgmentMode.Favor, HitPointsModeValue = ModeComponent.HitPointsMode.Favor, FavorJudgments = new double[6][] { new double[] { -10.0, 10.0 }, new double[] { -20.0, 20.0 }, new double[] { -30.0, 30.0 }, new double[] { -75.0, 75.0 }, new double[] { -330.0, 420.0 }, new double[] { -500.0, 420.0 } }, FavorHitPoints = new double[6][] { new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 100.0, 0.0 }, new double[] { 50.0, 0.0 }, new double[] { 0.0, -2.0 }, new double[] { 0.0, -6.0 } } } }, }; FastInputMillis = 0.0; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 115)) { SetHwMode = false; LS = false; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 116)) { BaseUIConfigureValues = new() { { BaseUIItemValue.Title, new BaseUIConfigure() } }; UIConfigureValuesV2 = new() { { UIItemValue.Title, new UIConfigure() } }; DInputIIDXSensitivity = 1000.0 / 7; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 117)) { WantBannedValue = WantBanned.NotBanned; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 119)) { var rawHwMode = new DEVMODEW(); PInvoke.EnumDisplaySettings(null, ENUM_DISPLAY_SETTINGS_MODE.ENUM_CURRENT_SETTINGS, ref rawHwMode); HwModeV2Value = new(rawHwMode.dmPelsWidth, rawHwMode.dmPelsHeight, rawHwMode.dmDisplayFrequency); } if (isInit || Utility.IsLowerDate(Date, 1, 14, 120)) { TVAssistConfigure = true; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 126)) { Averager = false; UbuntuNetItemTarget = false; } if (isInit || Utility.IsLowerDate(Date, 1, 15, 3)) { ModeComponentValue = new(); } if (isInit || Utility.IsLowerDate(Date, 1, 15, 5)) { DefaultAudioVarietyValue = DefaultAudioVariety.UI; DefaultDrawingFilePath = string.Empty; VeilDrawingHeight = 0.0; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 0)) { AutoNVLLFramerate = false; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 3)) { MainAreaFaint = 1.0; MediaInputFaint = 1.0; UIPipelineJudgmentInputVisualizer = true; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 5)) { InitColors(2); BanalFailedMedia = false; AlwaysBanalFailedMedia = false; BanalFailedMediaFilePath = string.Empty; BanalAudio = false; BanalMedia = false; AlwaysBanalMedia = false; BanalMediaFilePath = string.Empty; BanalAudioFilePath = Path.Combine(QwilightComponent.UIEntryPath, "Default.wav"); BanalMediaWait = 0.0; AutoGetDefaultNote = true; AutoGetDefaultUI = true; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 6)) { LoadedMedia = true; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 8)) { LastInputWants = new(); InputWantInputMode = new bool[17]; Array.Fill(InputWantInputMode, true); } if (isInit || Utility.IsLowerDate(Date, 1, 16, 9)) { FontFamilyValues = new FontFamily[4]; Array.Fill(FontFamilyValues, QwilightComponent.GetBuiltInData<FontFamily>("DefaultFontFamily")); } if (isInit || Utility.IsLowerDate(Date, 1, 16, 12)) { DefaultAudioFilePathItems = Array.Empty<DefaultAudioFilePathItem>(); } if (isInit || Utility.IsLowerDate(Date, 1, 16, 17)) { AutoInputFavorLabelledMillis = false; AutoLowestLongNoteModify = false; AutoHighestLongNoteModify = false; AutoSetNotePutMillis = false; AutoInputFavorLabelledMillisValue = 16.0; AutoLowestLongNoteModifyValue = 16.0; AutoHighestLongNoteModifyValue = 16.0; AutoSetNotePutMillisValue = 16.0; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 19)) { InputWantHandled = new bool[9]; Array.Fill(InputWantHandled, true); } if (isInit || Utility.IsLowerDate(Date, 1, 16, 20)) { FlowVeilDrawing = true; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 21)) { WMPointer = false; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 23)) { GASLevel = 4; LastWantLevelConfigures = new(); } if (isInit || Utility.IsLowerDate(Date, 1, 16, 24)) { DefaultInputBundlesV6.SetStandardInputs(); DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.LowerMultiplier].Data = VirtualKey.F3; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.HigherMultiplier].Data = VirtualKey.F4; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.ModifyAutoMode].Data = VirtualKey.F1; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.HandleUndo].Data = VirtualKey.Tab; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.MediaMode].Data = VirtualKey.F2; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.LowerAudioMultiplier].Data = (VirtualKey)189; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.HigherAudioMultiplier].Data = (VirtualKey)187; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.PostItem0].Data = VirtualKey.V; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.PostItem1].Data = VirtualKey.N; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.VeilDrawing].Data = (VirtualKey)192; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel.HalfMultiplier].Data = VirtualKey.None; DefaultInputBundlesV6.StandardInputs[InputStandardViewModel._2XMultiplier].Data = VirtualKey.None; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 25)) { DInputBundlesV4.SetStandardInputs(); XInputBundlesV4.SetStandardInputs(); XInputBundlesV4.StandardInputs[InputStandardControllerViewModel.LowerEntry].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadUp }; XInputBundlesV4.StandardInputs[InputStandardControllerViewModel.HigherEntry].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadDown }; XInputBundlesV4.StandardInputs[InputStandardControllerViewModel.LowerNoteFile].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadLeft }; XInputBundlesV4.StandardInputs[InputStandardControllerViewModel.HigherNoteFile].Data = new() { Buttons = Vortice.XInput.GamepadButtons.DPadRight }; XInputBundlesV4.StandardInputs[InputStandardControllerViewModel.LevyNoteFile].Data = new() { Buttons = Vortice.XInput.GamepadButtons.Start }; XInputBundlesV4.StandardInputs[InputStandardControllerViewModel.Wait].Data = new() { Buttons = Vortice.XInput.GamepadButtons.Back }; WGIBundlesV3.SetStandardInputs(); WGIBundlesV3.StandardInputs[InputStandardControllerViewModel.LowerEntry].Data = new() { Buttons = GamepadButtons.DPadUp }; WGIBundlesV3.StandardInputs[InputStandardControllerViewModel.HigherEntry].Data = new() { Buttons = GamepadButtons.DPadDown }; WGIBundlesV3.StandardInputs[InputStandardControllerViewModel.LowerNoteFile].Data = new() { Buttons = GamepadButtons.DPadLeft }; WGIBundlesV3.StandardInputs[InputStandardControllerViewModel.HigherNoteFile].Data = new() { Buttons = GamepadButtons.DPadRight }; WGIBundlesV3.StandardInputs[InputStandardControllerViewModel.LevyNoteFile].Data = new() { Buttons = GamepadButtons.View }; WGIBundlesV3.StandardInputs[InputStandardControllerViewModel.Wait].Data = new() { Buttons = GamepadButtons.Menu }; MIDIBundlesV4.SetStandardInputs(); } if (isInit || Utility.IsLowerDate(Date, 1, 16, 26)) { GS = false; Wooting = false; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 27)) { AudioConfigureValues ??= new() { { string.Empty, new() } }; foreach (var audioValueName in AudioConfigureValues.Keys) { AudioConfigureValues[audioValueName].Init(); } } if (isInit || Utility.IsLowerDate(Date, 1, 16, 29)) { MSI = false; CM = false; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 31)) { AutoLazyGC = false; LazyGCV2 = 0L; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 33)) { UIPipelineJudgmentVSVisualizer = true; JudgmentVSVisualizers = [true, false, false, false, false, false]; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 34)) { VeilDrawingItems = []; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 35)) { SetUIItems = new bool[17]; UIItems = new UIItem[17]; } if (isInit || Utility.IsLowerDate(Date, 1, 16, 36)) { JudgmentMeterCriteria = 0.0; JudgmentMeterMillis = 1000.0; } if (!UIConfigureValuesV2.ContainsKey(UIItemValue.Title)) { UIConfigureValuesV2[UIItemValue.Title] = new(); } if (!BaseUIConfigureValues.ContainsKey(BaseUIItemValue.Title)) { BaseUIConfigureValues[BaseUIItemValue.Title] = new(); } SetFontFamily(); Date = QwilightComponent.Date; if (isInit) { NotifyModel(); } } public void InitEqualizers(int level) { if ((level & 1) == 1) { Equalizer0 = 0F; Equalizer1 = 0F; Equalizer2 = 0F; Equalizer3 = 0F; Equalizer4 = 0F; } if ((level & 2) == 2) { EqualizerHz0 = 90F; EqualizerHz1 = 500F; EqualizerHz2 = 3000F; EqualizerHz3 = 5000F; EqualizerHz4 = 8000F; } } public double GetAudioVisualizerModifier(double audioVisualizerHeight, double value) => AudioVisualizerModeValue switch { AudioVisualizerMode.AudioVisualizerMode0 => 0.0, AudioVisualizerMode.AudioVisualizerMode1 => (audioVisualizerHeight - value) / 2, AudioVisualizerMode.AudioVisualizerMode2 => audioVisualizerHeight - value, _ => throw new ArgumentException(AudioVisualizerModeValue.ToString()) }; public override void NotifyModel() { base.NotifyModel(); UIConfigureValue.NotifyModel(); BaseUIConfigureValue.NotifyModel(); } public void NotifySetUIItems() { OnPropertyChanged(nameof(SetUIItems)); } public void NotifyUIItems() { OnPropertyChanged(nameof(UIItems)); } } }