diff --git a/Qwilight/Assets/UI/@Default/@Default.zip b/Qwilight/Assets/UI/@Default/@Default.zip index 8d185b5..9815534 100644 --- a/Qwilight/Assets/UI/@Default/@Default.zip +++ b/Qwilight/Assets/UI/@Default/@Default.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44429a6881959259217f4d8f6edfcc4123359e0c51785314bce605408941c2d8 -size 80951694 +oid sha256:33f7a2a2b585b74edbed80cc8f3ab2af1744e895bfda07b4237c268630cc69da +size 80961703 diff --git a/Qwilight/Compiler/BaseCompiler.cs b/Qwilight/Compiler/BaseCompiler.cs index f96a538..3bb6a8a 100644 --- a/Qwilight/Compiler/BaseCompiler.cs +++ b/Qwilight/Compiler/BaseCompiler.cs @@ -484,7 +484,8 @@ bool WipeIfCollided(BaseNote note) { - if (labelledNotes.Any(labelledNote => labelledNote.LevyingInput == note.LevyingInput && labelledNote.IsCollided(note, inputFavorLabelledMillis))) + var waitMargin = note.HasStand ? inputFavorLabelledMillis : 0.0; + if (labelledNotes.Any(labelledNote => labelledNote.LevyingInput == note.LevyingInput && labelledNote.IsCollided(note, waitMargin))) { WipeNote(note); return true; @@ -972,7 +973,6 @@ break; // 단일 노트를 롱 노트로 만듭니다. case ModeComponent.NoteModifyMode.LongNote: - var waitBPMMap = new Queue>(defaultComputer.WaitBPMMap); var lowestLongNoteModify = defaultComputer.ModeComponentValue.LowestLongNoteModify; var highestLongNoteModify = defaultComputer.ModeComponentValue.HighestLongNoteModify; var distanceLongNoteModify = highestLongNoteModify - lowestLongNoteModify; @@ -985,7 +985,7 @@ var inputNote = inputNotes[j]; if (j < inputNotesLength - 1 && inputNote.LongWait == 0.0) { - var longNoteModify = lowestLongNoteModify + distanceLongNoteModify > 0.0 ? inputNote.Salt % distanceLongNoteModify : 0.0; + var longNoteModify = lowestLongNoteModify + (distanceLongNoteModify > 0.0 ? inputNote.Salt % distanceLongNoteModify : 0.0); var targetInputNote = inputNotes[j + 1]; var noteWait = inputNote.Wait; var targetWait = targetInputNote.Wait; @@ -994,6 +994,7 @@ { var lastBPMs = defaultComputer.WaitBPMMap.Where(pair => pair.Key <= loopingCounter).ToArray(); ComponentValue.SetBPM(lastBPMs.Length > 0 ? lastBPMs.Last().Value : defaultComputer.LevyingBPM); + var waitBPMMap = new Queue>(defaultComputer.WaitBPMMap.Where(pair => loopingCounter <= pair.Key)); var distance = Utility.GetDistance(ComponentValue, waitBPMMap, loopingCounter, targetWait, out _); Notes[Notes.IndexOf(inputNote)] = new LongNote(inputNote.LogicalY, noteWait, inputNote.AudioNotes, inputNote.LevyingInput, targetWait - noteWait - longNoteModify, inputNote.LogicalY - targetInputNote.LogicalY - distance); } diff --git a/Qwilight/Compute/DefaultCompute.cs b/Qwilight/Compute/DefaultCompute.cs index 327c5b8..d6e3e5f 100644 --- a/Qwilight/Compute/DefaultCompute.cs +++ b/Qwilight/Compute/DefaultCompute.cs @@ -2668,32 +2668,35 @@ } } break; - case Configure.InputAudioVariety.IIDX when Configure.Instance.HandleInputAudio: - foreach (var audioNote in _lastIIDXInputAudioNoteMap[absInput]) + case Configure.InputAudioVariety.IIDX: + if (Configure.Instance.HandleInputAudio) { - var audioItem = audioNote.AudioItem; - if (audioItem.HasValue) + foreach (var audioNote in _lastIIDXInputAudioNoteMap[absInput]) { - var audioItemValue = audioItem.Value; - var lastEventPosition = IsInEvents ? _eventPositions.Last() : LoopingCounter; - if (lastEventPosition < LoopingCounter + audioItemValue.Length) + var audioItem = audioNote.AudioItem; + if (audioItem.HasValue) { - var bmsID = audioItemValue.BMSID; - StopLastEqualAudioItem(bmsID); - lock (LoadedCSX) + var audioItemValue = audioItem.Value; + var lastEventPosition = IsInEvents ? _eventPositions.Last() : LoopingCounter; + if (lastEventPosition < LoopingCounter + audioItemValue.Length) { - if (HasContents) + var bmsID = audioItemValue.BMSID; + StopLastEqualAudioItem(bmsID); + lock (LoadedCSX) { - var audioChannel = AudioSystem.Instance.Handle(new() + if (HasContents) { - AudioItem = audioItem, - Length = audioNote.Length, - AudioLevyingPosition = (uint)(audioNote.AudioLevyingPosition + lastEventPosition - LoopingCounter), - Salt = audioNote.Salt - }, AudioSystem.InputAudio, AudioMultiplier, IsCounterWave, this, 0.0, inputPower); - if (!string.IsNullOrEmpty(bmsID)) - { - audioChannelMap[bmsID] = audioChannel; + var audioChannel = AudioSystem.Instance.Handle(new() + { + AudioItem = audioItem, + Length = audioNote.Length, + AudioLevyingPosition = (uint)(audioNote.AudioLevyingPosition + lastEventPosition - LoopingCounter), + Salt = audioNote.Salt + }, AudioSystem.InputAudio, AudioMultiplier, IsCounterWave, this, 0.0, inputPower); + if (!string.IsNullOrEmpty(bmsID)) + { + audioChannelMap[bmsID] = audioChannel; + } } } } @@ -2741,21 +2744,22 @@ } } } - HandleBanalAudio(); } + HandleBanalAudio(); } void HandleBanalAudio() { if (Configure.Instance.BanalAudio && AudioSystem.Instance.BanalAudio.HasValue) { - var audioItemValue = AudioSystem.Instance.BanalAudio.Value; + var banalAudioValue = AudioSystem.Instance.BanalAudio.Value; var lastEventPosition = IsInEvents ? _eventPositions.Last() : LoopingCounter; - if (lastEventPosition < LoopingCounter + audioItemValue.Length) + if (lastEventPosition < LoopingCounter + banalAudioValue.Length) { - AudioSystem.Instance.Handle(new() + StopLastEqualAudioItem(nameof(AudioSystem.Instance.BanalAudio)); + audioChannelMap[nameof(AudioSystem.Instance.BanalAudio)] = AudioSystem.Instance.Handle(new() { - AudioItem = audioItemValue + AudioItem = banalAudioValue }, AudioSystem.InputAudio, AudioMultiplier, IsCounterWave, this, 0.0, inputPower); } } diff --git a/Qwilight/System/Configure/Configure.cs b/Qwilight/System/Configure/Configure.cs index 72e6b87..3da55f7 100644 --- a/Qwilight/System/Configure/Configure.cs +++ b/Qwilight/System/Configure/Configure.cs @@ -425,7 +425,6 @@ { OnPropertyChanged(nameof(IsDInputXyzSensitivityVisible)); OnPropertyChanged(nameof(IsDInputIIDXSensitivityVisible)); - OnPropertyChanged(nameof(IsBanalAudioVisible)); if (_isLoaded) { ViewModels.Instance.ConfigureValue.NotifyCanGetDefaultText(); @@ -1610,7 +1609,6 @@ { OnPropertyChanged(nameof(HandleInputAudioPaint)); OnPropertyChanged(nameof(HandleInputAudioText)); - OnPropertyChanged(nameof(IsBanalAudioVisible)); if (_isLoaded) { var audioValueName = AudioSystem.Instance.AudioValue?.Name; @@ -1645,8 +1643,6 @@ public string BanalAudioText => BanalAudio ? LanguageSystem.Instance.BanalAudioText : LanguageSystem.Instance.NotBanalAudioText; - public bool IsBanalAudioVisible => DetailedConfigure && HandleInputAudio; - public bool BanalMedia { get => _banalMedia; diff --git a/Qwilight/UIComponent/FitMode.cs b/Qwilight/UIComponent/FitMode.cs index 257fd4e..7af4db7 100644 --- a/Qwilight/UIComponent/FitMode.cs +++ b/Qwilight/UIComponent/FitMode.cs @@ -110,7 +110,7 @@ return value; } - return x.Title.FitCaseless(y.Title); + return (x.NoteFiles.Length > 1 ? x.Title : x.NoteFile.Title).FitCaseless(y.NoteFiles.Length > 1 ? y.Title : y.NoteFile.Title); }); foreach (var entryItem in entryItems) diff --git a/Qwilight/View/ConfigureWindow/AudioConfigureWindow.xaml b/Qwilight/View/ConfigureWindow/AudioConfigureWindow.xaml index a670e62..74ec864 100644 --- a/Qwilight/View/ConfigureWindow/AudioConfigureWindow.xaml +++ b/Qwilight/View/ConfigureWindow/AudioConfigureWindow.xaml @@ -64,7 +64,7 @@ diff --git a/Qwilight/ViewModel/FavoriteEntryViewModel.cs b/Qwilight/ViewModel/FavoriteEntryViewModel.cs index 4ae3ef0..1ca5ece 100644 --- a/Qwilight/ViewModel/FavoriteEntryViewModel.cs +++ b/Qwilight/ViewModel/FavoriteEntryViewModel.cs @@ -35,13 +35,8 @@ public override void OnOpened() { base.OnOpened(); - Utility.SetUICollection(FavoriteEntryItemCollection, Configure.Instance.DefaultEntryItems.Where(defaultEntryItem => defaultEntryItem.DefaultEntryVarietyValue == DefaultEntryItem.DefaultEntryVariety.Favorite).ToArray()); - var favoriteEntryItems = new List(FavoriteEntryItemCollection); - FavoriteEntryItemCollection.Clear(); - foreach (var favoriteEntryItem in favoriteEntryItems.Order()) - { - FavoriteEntryItemCollection.Add(favoriteEntryItem); - } + var favoriteEntryItems = Configure.Instance.DefaultEntryItems.Where(defaultEntryItem => defaultEntryItem.DefaultEntryVarietyValue == DefaultEntryItem.DefaultEntryVariety.Favorite).ToArray(); + Utility.SetUICollection(FavoriteEntryItemCollection, favoriteEntryItems); switch (Mode) { case NoteFileMode: diff --git a/Qwilight/ViewModel/MainViewModel.cs b/Qwilight/ViewModel/MainViewModel.cs index 3150faf..6e0ec92 100644 --- a/Qwilight/ViewModel/MainViewModel.cs +++ b/Qwilight/ViewModel/MainViewModel.cs @@ -2245,8 +2245,8 @@ } if (wellNoteFiles.Count > 0) { - var highestLevelTextValue = double.MinValue; - var highestWantLevelID = string.Empty; + var levelTextValue = 0.0; + var wantLevelID = string.Empty; var highestInputCount = 0; var averageInputCount = 0.0; var totalNotes = 0; @@ -2267,37 +2267,35 @@ totalNotes = Math.Max(totalNotes, wellNoteFile.TotalNotes); highestInputCount = Math.Max(highestInputCount, wellNoteFile.HighestInputCount); averageInputCount = Math.Max(averageInputCount, wellNoteFile.AverageInputCount); + if (!double.IsNaN(wellNoteFile.LevelTextValue)) + { + levelTextValue = Math.Max(levelTextValue, wellNoteFile.LevelTextValue); + } if (!isEntryItemEventNote) { if ((latestDate ?? DateTime.MinValue) < (wellNoteFile.LatestDate ?? DateTime.MinValue)) { latestDate = wellNoteFile.LatestDate; } - var wantLevelID = wellNoteFile.WantLevelID; - if (string.IsNullOrEmpty(highestWantLevelID) || LevelSystem.Instance.WantLevelIDEquality.Compare(wantLevelID, highestWantLevelID) > 0) + if (string.IsNullOrEmpty(wantLevelID) || LevelSystem.Instance.WantLevelIDEquality.Compare(wellNoteFile.WantLevelID, wantLevelID) > 0) { - highestWantLevelID = wantLevelID; + wantLevelID = wellNoteFile.WantLevelID; } handledCount += wellNoteFile.HandledCount; } - var levelTextValue = wellNoteFile.LevelTextValue; - if (!double.IsNaN(levelTextValue) && highestLevelTextValue < levelTextValue) - { - highestLevelTextValue = levelTextValue; - } } entryItem.Artist = Utility.GetFavoriteItem(artists); entryItem.BPM = Utility.GetFavoriteItem(bpms); entryItem.Length = Utility.GetFavoriteItem(lengths); entryItem.TotalNotes = totalNotes; - entryItem.LevelTextValue = highestLevelTextValue; + entryItem.LevelTextValue = levelTextValue; entryItem.HighestInputCount = highestInputCount; if (!isEntryItemEventNote) { entryItem.Title = Utility.GetFavoriteItem(titles); entryItem.LatestDate = latestDate; entryItem.HandledCount = handledCount; - entryItem.WantLevelID = highestWantLevelID; + entryItem.WantLevelID = wantLevelID; } fitMode.SetFittedText(entryItem); } @@ -3473,6 +3471,7 @@ ModeComponentValue.ComputingValue = targetNoteFile; ModeComponentValue.Salt = salt; ModeComponentValue.SetAutoLowestLongNoteModify(); + ModeComponentValue.SetAutoHighestLongNoteModify(); ModeComponentValue.SetAutoSetNotePutMillis(); OnJudgmentMeterMillisModified(); targetNoteFile.NotifyModel();