diff --git a/Qwilight/Assets/Language.json b/Qwilight/Assets/Language.json index 82c36ed..57bf7e7 100644 --- a/Qwilight/Assets/Language.json +++ b/Qwilight/Assets/Language.json @@ -1775,9 +1775,13 @@ "ko-KR": "판정선 위치", "en-US": "Judgment line position" }, - "JudgmentMeterMillisText": { + "JudgmentMeterCriteriaText": { "ko-KR": "판정 오차가 얼마 이상이면 보여줄지 설정합니다.", - "en-US": "Sets how much or more of a decision error is displayed." + "en-US": "Set how much the judgment error should be displayed." + }, + "JudgmentMeterMillisText": { + "ko-KR": "판정 오차가 얼마나 지속될지 설정합니다.", + "en-US": "Set how long the judgment error will last." }, "JudgmentModeAssist": { "ko-KR": "판정 난이도를 설정합니다.", @@ -1921,7 +1925,7 @@ }, "LongNoteModeAssist": { "ko-KR": "롱 노트의 떼는 판정을 설정합니다.", - "en-US": "Set the decision to remove the long note" + "en-US": "Set the long note's release judgment." }, "LongNoteModifyAssist": { "ko-KR": "만들어진 롱 노트와 다음 노트의 간격을 시작 간격과 끝 간격 사이로 설정합니다.", diff --git a/Qwilight/Compute/DefaultCompute.cs b/Qwilight/Compute/DefaultCompute.cs index b759a1c..5476d65 100644 --- a/Qwilight/Compute/DefaultCompute.cs +++ b/Qwilight/Compute/DefaultCompute.cs @@ -260,6 +260,8 @@ public double[] JudgmentMeters { get; } = new double[2]; + public double[] JudgmentMeterMillis { get; } = new double[2]; + public Queue[] JudgmentVisualizerValues { get; } = new Queue[2]; public Dictionary JudgmentPaints { get; } = new(); @@ -811,7 +813,7 @@ var average = judgmentMeters.Sum(judgmentMeter => judgmentMeter) / judgmentMetersLength; var absAverage = judgmentMeters.Sum(judgmentMeter => Math.Abs(judgmentMeter)) / judgmentMetersLength; JudgmentMeterText = $"AVG: {average:0.###} ms, |AVG|: {absAverage:0.###} ms, STD: {Math.Sqrt(judgmentMeters.Sum(judgmentMeter => Math.Pow(average - judgmentMeter, 2)) / judgmentMetersLength):0.###} ms"; - var lowJudgmentMeters = judgmentMeters.Where(judgmentMeter => Math.Abs(judgmentMeter) >= Configure.Instance.JudgmentMeterMillis).ToArray(); + var lowJudgmentMeters = judgmentMeters.Where(judgmentMeter => Math.Abs(judgmentMeter) >= Configure.Instance.JudgmentMeterCriteria).ToArray(); EarlyLateText = $"Early: {lowJudgmentMeters.Count(lowJudgmentMeter => lowJudgmentMeter < 0.0)}, Late: {lowJudgmentMeters.Count(lowJudgmentMeter => lowJudgmentMeter > 0.0)}"; } else @@ -3026,7 +3028,7 @@ Assist = (int)judgmentAssist }); - if (Math.Abs(judgmentMeter) >= Configure.Instance.JudgmentMeterMillis) + if (Math.Abs(judgmentMeter) >= Configure.Instance.JudgmentMeterCriteria) { if (judgmentMeter > 0.0) { @@ -3072,44 +3074,48 @@ switch (DrawingComponentValue.altJudgmentMeter) { case 0 when areValidJudgmentMeters[2]: - JudgmentMeters[0] = judgmentMeters[2].Millis; + var judgmentMeter = judgmentMeters[2].Millis; + var absJudgmentMeter = Math.Abs(judgmentMeter); + if (absJudgmentMeter >= Configure.Instance.JudgmentMeterCriteria) + { + JudgmentMeters[0] = judgmentMeter; + JudgmentMeterMillis[0] = 1000.0; + } break; case 3 when areValidJudgmentMeters[2]: - JudgmentMeters[1] = judgmentMeters[2].Millis; + judgmentMeter = judgmentMeters[2].Millis; + absJudgmentMeter = Math.Abs(judgmentMeter); + if (absJudgmentMeter >= Configure.Instance.JudgmentMeterCriteria) + { + JudgmentMeters[1] = judgmentMeter; + JudgmentMeterMillis[1] = 1000.0; + } break; case 2: if (areValidJudgmentMeters[0]) { - JudgmentMeters[0] = judgmentMeters[0].Millis; + judgmentMeter = judgmentMeters[0].Millis; + absJudgmentMeter = Math.Abs(judgmentMeter); + if (absJudgmentMeter >= Configure.Instance.JudgmentMeterCriteria) + { + JudgmentMeters[0] = judgmentMeter; + JudgmentMeterMillis[0] = 1000.0; + } } if (areValidJudgmentMeters[1]) { - JudgmentMeters[1] = judgmentMeters[1].Millis; + judgmentMeter = judgmentMeters[1].Millis; + absJudgmentMeter = Math.Abs(judgmentMeter); + if (absJudgmentMeter >= Configure.Instance.JudgmentMeterCriteria) + { + JudgmentMeters[1] = judgmentMeter; + JudgmentMeterMillis[1] = 1000.0; + } } break; } switch (DrawingComponentValue.altJudgmentVisualizer) { - case 2: - if (areValidJudgmentMeters[0]) - { - var judgmentMeter = judgmentMeters[0]; - var judgmentVisualizerValues = JudgmentVisualizerValues[0]; - lock (judgmentVisualizerValues) - { - judgmentVisualizerValues.Enqueue(new(Math.Clamp(0.5 + (judgmentMeter.Millis < 0.0 ? judgmentMeter.Millis / -LowestJudgmentMillis : judgmentMeter.Millis / HighestJudgmentMillis) / 2, 0.0, 1.0), judgmentMeter.Judged)); - } - } - if (areValidJudgmentMeters[1]) - { - var judgmentMeter = judgmentMeters[1]; - var judgmentVisualizerValues = JudgmentVisualizerValues[1]; - lock (judgmentVisualizerValues) - { - judgmentVisualizerValues.Enqueue(new(Math.Clamp(0.5 + (judgmentMeter.Millis < 0.0 ? judgmentMeter.Millis / -LowestJudgmentMillis : judgmentMeter.Millis / HighestJudgmentMillis) / 2, 0.0, 1.0), judgmentMeter.Judged)); - } - } - break; case 0: if (areValidJudgmentMeters[2]) { @@ -3132,9 +3138,34 @@ } } break; + case 2: + if (areValidJudgmentMeters[0]) + { + var judgmentMeter = judgmentMeters[0]; + var judgmentVisualizerValues = JudgmentVisualizerValues[0]; + lock (judgmentVisualizerValues) + { + judgmentVisualizerValues.Enqueue(new(Math.Clamp(0.5 + (judgmentMeter.Millis < 0.0 ? judgmentMeter.Millis / -LowestJudgmentMillis : judgmentMeter.Millis / HighestJudgmentMillis) / 2, 0.0, 1.0), judgmentMeter.Judged)); + } + } + if (areValidJudgmentMeters[1]) + { + var judgmentMeter = judgmentMeters[1]; + var judgmentVisualizerValues = JudgmentVisualizerValues[1]; + lock (judgmentVisualizerValues) + { + judgmentVisualizerValues.Enqueue(new(Math.Clamp(0.5 + (judgmentMeter.Millis < 0.0 ? judgmentMeter.Millis / -LowestJudgmentMillis : judgmentMeter.Millis / HighestJudgmentMillis) / 2, 0.0, 1.0), judgmentMeter.Judged)); + } + } + break; } Array.Fill(areValidJudgmentMeters, false); + for (var i = JudgmentMeterMillis.Length - 1; i >= 0; --i) + { + JudgmentMeterMillis[i] -= millisLoopUnit; + } + var noteFrame = DrawingComponentValue.noteFrame; if (noteFrame > 0) { @@ -4525,6 +4556,7 @@ netItem.LastPaintEventPosition = 0; } Array.Clear(JudgmentMeters, 0, JudgmentMeters.Length); + Array.Clear(JudgmentMeterMillis, 0, JudgmentMeterMillis.Length); Array.Clear(_targetMainFrames, 0, _targetMainFrames.Length); Array.Clear(_targetInputFrames, 0, _targetInputFrames.Length); foreach (var paintEventsGAS in _paintEventsGAS) diff --git a/Qwilight/Qwilight.csproj b/Qwilight/Qwilight.csproj index 4fbb856..5f630df 100644 --- a/Qwilight/Qwilight.csproj +++ b/Qwilight/Qwilight.csproj @@ -10,7 +10,7 @@ Qwilight.ico Taehui 불로그 - 1.16.35 + 1.16.36 true enable false diff --git a/Qwilight/System/Configure/Configure.cs b/Qwilight/System/Configure/Configure.cs index e7b2a6c..b61e01e 100644 --- a/Qwilight/System/Configure/Configure.cs +++ b/Qwilight/System/Configure/Configure.cs @@ -277,6 +277,7 @@ bool _autoNoteWait; bool _stopLastEqualAudio; bool _autoJudgmentMeterMillis; + double _judgmentMeterCriteria; double _judgmentMeterMillis; AutoJudgmentMeterMillisItem _autoJudgmentMeterMillisItem; bool _ubuntuNetItemTarget; @@ -367,11 +368,18 @@ 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(JudgmentMeterMillis)); + set => SetProperty(ref _judgmentMeterMillis, value, nameof(JudgmentMeterCriteria)); } public bool AutoJudgmentMeterMillis @@ -3095,7 +3103,6 @@ { Judged = Component.Judged.Highest }; - JudgmentMeterMillis = 0.0; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 75)) { @@ -3496,6 +3503,11 @@ 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(); diff --git a/Qwilight/System/DrawingSystem/DrawingSystem.cs b/Qwilight/System/DrawingSystem/DrawingSystem.cs index 08866a8..539c739 100644 --- a/Qwilight/System/DrawingSystem/DrawingSystem.cs +++ b/Qwilight/System/DrawingSystem/DrawingSystem.cs @@ -796,6 +796,7 @@ var judgmentMeterFrontDrawingLength = drawingComponent.judgmentMeterFrontDrawingLength; var judgmentMeterUnitDrawingLength = drawingComponent.judgmentMeterUnitDrawingLength; var judgmentMeters = defaultComputer.JudgmentMeters; + var judgmentMeterMillis = defaultComputer.JudgmentMeterMillis; var judgmentMeterSystem = drawingComponent.judgmentMeterSystem; var altJudgmentMeter = drawingComponent.altJudgmentMeter; var binJudgmentMeterMap = UI.Instance.BinJudgmentMeterMap; @@ -804,11 +805,12 @@ var drawingJudgmentMeterUnit = UI.Instance.JudgmentMeterUnitDrawing; for (var i = altJudgmentMeter >> 1; i >= altJudgmentMeter % 2; --i) { - var judgmentMeter = judgmentMeters[i]; - var judgmentMeterInt = (int)Math.Round(judgmentMeter); - var absJudgmentMeter = Math.Abs(judgmentMeterInt); - if (absJudgmentMeter >= Configure.Instance.JudgmentMeterMillis) + var judgmentMeterFaint = (float)(judgmentMeterMillis[i] / 1000.0); + if (judgmentMeterFaint > 0.0) { + var judgmentMeter = judgmentMeters[i]; + var judgmentMeterInt = (int)Math.Round(judgmentMeter); + var absJudgmentMeter = Math.Abs(judgmentMeterInt); var distanceJudgmentMeter = i == 1 && has2P ? distance2P : 0F; var judgmentMeterDigit = Utility.GetDigit(absJudgmentMeter); switch (judgmentMeterSystem) @@ -825,17 +827,17 @@ } if (absJudgmentMeter > 0) { - targetSession.PaintDrawing(ref r, judgmentMeter > 0 ? drawingJudgmentMeterHigher : drawingJudgmentMeterLower); + targetSession.PaintDrawing(ref r, judgmentMeter > 0 ? drawingJudgmentMeterHigher : drawingJudgmentMeterLower, judgmentMeterFaint); } r.Position0 += judgmentMeterFrontDrawingLength; r.Length = binJudgmentMeterLength; for (var j = judgmentMeterDigit - 1; j >= 0; --j) { - targetSession.PaintDrawing(ref r, binJudgmentMeterMap[(int)(absJudgmentMeter / Math.Pow(10, j) % 10)]); + targetSession.PaintDrawing(ref r, binJudgmentMeterMap[(int)(absJudgmentMeter / Math.Pow(10, j) % 10)], judgmentMeterFaint); r.Position0 += binJudgmentMeterLength; } r.Length = judgmentMeterUnitDrawingLength; - targetSession.PaintDrawing(ref r, drawingJudgmentMeterUnit); + targetSession.PaintDrawing(ref r, drawingJudgmentMeterUnit, judgmentMeterFaint); } } break; diff --git a/Qwilight/System/LanguageSystem/LanguageSystem.g.cs b/Qwilight/System/LanguageSystem/LanguageSystem.g.cs index 4139526..fb738b9 100644 --- a/Qwilight/System/LanguageSystem/LanguageSystem.g.cs +++ b/Qwilight/System/LanguageSystem/LanguageSystem.g.cs @@ -446,6 +446,7 @@ public string IsIsXwindowContents { get; set; } public string IsXwindowText { get; set; } public string JudgmentMainPosition1Contents { get; set; } + public string JudgmentMeterCriteriaText { get; set; } public string JudgmentMeterMillisText { get; set; } public string JudgmentModeAssist { get; set; } public string JudgmentPaintPositionContents { get; set; } diff --git a/Qwilight/View/ConfigureWindow/ComputingUIConfigureWindow.xaml b/Qwilight/View/ConfigureWindow/ComputingUIConfigureWindow.xaml index ebc1b45..659e37c 100644 --- a/Qwilight/View/ConfigureWindow/ComputingUIConfigureWindow.xaml +++ b/Qwilight/View/ConfigureWindow/ComputingUIConfigureWindow.xaml @@ -293,39 +293,49 @@ - - - - - - - + + + - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + diff --git a/Qwilight/View/EdgePanel.xaml.cs b/Qwilight/View/EdgePanel.xaml.cs index 99d27c0..eb2933a 100644 --- a/Qwilight/View/EdgePanel.xaml.cs +++ b/Qwilight/View/EdgePanel.xaml.cs @@ -42,16 +42,19 @@ public EdgePanel() { InitializeComponent(); - EdgeView.CoreWebView2InitializationCompleted += (sender, e) => (sender as WebView2).CoreWebView2.Profile.DefaultDownloadFolderPath = QwilightComponent.EdgeEntryPath; - EdgeView.NavigationStarting += (sender, e) => IsLoading = true; - EdgeView.NavigationCompleted += (sender, e) => IsLoading = false; - EdgeView.IsVisibleChanged += (sender, e) => + EdgeView.EnsureCoreWebView2Async().ContinueWith(t => { - if (!(bool)e.NewValue) + EdgeView.CoreWebView2.Profile.DefaultDownloadFolderPath = QwilightComponent.EdgeEntryPath; + EdgeView.NavigationStarting += (sender, e) => IsLoading = true; + EdgeView.NavigationCompleted += (sender, e) => IsLoading = false; + EdgeView.IsVisibleChanged += (sender, e) => { - OnStop(); - } - }; + if (!(bool)e.NewValue) + { + OnStop(); + } + }; + }); } void OnMove0(object sender, RoutedEventArgs e) @@ -81,13 +84,7 @@ [RelayCommand] void OnStop() { - try - { - EdgeView.Stop(); - } - catch - { - } + EdgeView.Stop(); } void OnInputLower(object sender, KeyEventArgs e) diff --git a/Qwilight/ViewModel/MainViewModel.cs b/Qwilight/ViewModel/MainViewModel.cs index c7e1db7..5bff10c 100644 --- a/Qwilight/ViewModel/MainViewModel.cs +++ b/Qwilight/ViewModel/MainViewModel.cs @@ -3629,7 +3629,7 @@ { if (Configure.Instance.AutoJudgmentMeterMillis) { - Configure.Instance.JudgmentMeterMillis = Math.Min + Configure.Instance.JudgmentMeterCriteria = Math.Min ( Math.Abs(Component.GetJudgmentMillis(Configure.Instance.AutoJudgmentMeterMillisItemValue.Judged, ModeComponentValue, noteFile.JudgmentStage, Component.LatestJudgmentModeDate, Component.LatestJudgmentMapDate, Component.LatestLongNoteAssistDate, 0)), Math.Abs(Component.GetJudgmentMillis(Configure.Instance.AutoJudgmentMeterMillisItemValue.Judged, ModeComponentValue, noteFile.JudgmentStage, Component.LatestJudgmentModeDate, Component.LatestJudgmentMapDate, Component.LatestLongNoteAssistDate, 1))