diff --git a/Qwilight/Assets/Language.json b/Qwilight/Assets/Language.json index b38826e..899a207 100644 --- a/Qwilight/Assets/Language.json +++ b/Qwilight/Assets/Language.json @@ -11,6 +11,10 @@ "ko-KR": "{0}의 {1}를 방어함", "en-US": "Defends {1} of {0}" }, + "AlgorithmInputFavorFaultText": { + "ko-KR": "대상 간격이 올바르지 않습니다.", + "en-US": "Destination spacing is not valid." + }, "AllowEssentialInputs": { "ko-KR": "◀, ▶ 키 등을 키 설정에 허용", "en-US": "Allow key settings such as ◀, ▶ keys, etc" @@ -627,6 +631,10 @@ "ko-KR": "스킨 설정", "en-US": "Skin Settings" }, + "ConfigureAlgorithmInputFavorMillisContents": { + "ko-KR": "대상 간격", + "en-US": "Target Interval" + }, "ConfigureAssist": { "ko-KR": "게임 설정 열기", "en-US": "Open game settings" @@ -2759,6 +2767,9 @@ "ko-KR": "1P를 2P로 복사합니다. (⑤K, ⑦K만 적용)", "en-US": "Copy 1P to 2P. (⑤K, ⑦K only)" }, + "AlgorithmInputFavorAssist": { + "ko-KR": "대상 간격 이상 거리를 유지하여 자연스럽게 만듭니다." + }, "PutNoteSetAssist": { "ko-KR": "대상 비율 만큼의 BGM을 대상 간격 이상 거리를 유지하여 추가 노트로 만듭니다.", "en-US": "Make BGM as much as the target ratio into an additional note by maintaining a distance beyond the target interval." diff --git a/Qwilight/Compiler/BaseCompiler.cs b/Qwilight/Compiler/BaseCompiler.cs index eed0053..fb4400d 100644 --- a/Qwilight/Compiler/BaseCompiler.cs +++ b/Qwilight/Compiler/BaseCompiler.cs @@ -430,9 +430,10 @@ } } } - else if (ModeComponent.InputFavorMode.Fill4 <= inputFavorMode && inputFavorMode <= ModeComponent.InputFavorMode.Fill48_4) + else if (ModeComponent.InputFavorMode.Algorithm4 <= inputFavorMode && inputFavorMode <= ModeComponent.InputFavorMode.Algorithm48_4) { - var filledNotes = new List(); + var algorithmInputFavorMillis = defaultComputer.ModeComponentValue.AlgorithmInputFavorMillis; + var algorithmNotes = new List(); foreach (var note in Notes.ToArray()) { if (note.HasInput) @@ -448,36 +449,36 @@ } else { - var filledInput0 = (int)Math.Ceiling(GetFilledInput(input, 0.0)); - var filledInput1 = (int)Math.Floor(GetFilledInput(input, 1.0)); + var algorithmInput0 = (int)Math.Ceiling(GetAlgorithmInput(input, 0.0)); + var algorithmInput1 = (int)Math.Floor(GetAlgorithmInput(input, 1.0)); if (Component.DefaultInputCounts[(int)InputMode] < Component.DefaultInputCounts[(int)inputMode]) { - note.LevyingInput = filledInput0; + note.LevyingInput = algorithmInput0; WipeIfCollided(note); - for (var filledInput = filledInput0 + 1; filledInput <= filledInput1; ++filledInput) + for (var algorithmInput = algorithmInput0 + 1; algorithmInput <= algorithmInput1; ++algorithmInput) { - var filledNote = note switch + var algorithmNote = note switch { - TrapNote trapNote => new TrapNote(trapNote.LogicalY, trapNote.Wait, Array.Empty(), filledInput), - LongNote longNote => new LongNote(longNote.LogicalY, longNote.Wait, Array.Empty(), filledInput, longNote.LongWait, longNote.LongHeight), - VoidNote voidNote => new VoidNote(voidNote.LogicalY, voidNote.Wait, Array.Empty(), filledInput), - InputNote inputNote => new InputNote(inputNote.LogicalY, inputNote.Wait, Array.Empty(), filledInput), + TrapNote trapNote => new TrapNote(trapNote.LogicalY, trapNote.Wait, Array.Empty(), algorithmInput), + LongNote longNote => new LongNote(longNote.LogicalY, longNote.Wait, Array.Empty(), algorithmInput, longNote.LongWait, longNote.LongHeight), + VoidNote voidNote => new VoidNote(voidNote.LogicalY, voidNote.Wait, Array.Empty(), algorithmInput), + InputNote inputNote => new InputNote(inputNote.LogicalY, inputNote.Wait, Array.Empty(), algorithmInput), _ => null }; - if (!WipeIfCollided(filledNote)) + if (!WipeIfCollided(algorithmNote)) { - Notes.Add(filledNote); + Notes.Add(algorithmNote); } } } else { - note.LevyingInput = (int)Math.Round(GetFilledInput(input, (double)(input - defaultInputs.First()) / (defaultInputs.Last() - defaultInputs.First()))); + note.LevyingInput = (int)Math.Round(GetAlgorithmInput(input, (double)(input - defaultInputs.First()) / (defaultInputs.Last() - defaultInputs.First()))); WipeIfCollided(note); } - double GetFilledInput(int input, double random) + double GetAlgorithmInput(int input, double random) { var rate = (double)(Component.DefaultInputCounts[(int)Component.GetInputMode(inputFavorMode)] - 1) / Component.DefaultInputCounts[(int)InputMode]; return rate * (input - defaultInputs.First()) + Component.DefaultInputs[(int)Component.GetInputMode(inputFavorMode)].First() + rate * random; @@ -485,14 +486,14 @@ bool WipeIfCollided(BaseNote note) { - if (filledNotes.Any(filledNote => filledNote.LevyingInput == note.LevyingInput && filledNote.IsCollided(note))) + if (algorithmNotes.Any(algorithmNote => algorithmNote.LevyingInput == note.LevyingInput && algorithmNote.IsCollided(note, algorithmInputFavorMillis))) { WipeNote(note); return true; } else { - filledNotes.Add(note); + algorithmNotes.Add(note); return false; } } @@ -663,29 +664,30 @@ if (!autoableInputs.Contains(input)) { var levyingInput = defaultInputs.First(); - var lastInput = levyingInput + Component.DefaultInputCounts[(int)InputMode]; - var wait = inputNote.Wait; - var longWait = inputNote.LongWait; - var levyingSaltInput = inputNote.Salt % (lastInput - levyingInput) + levyingInput; - var saltInput = levyingSaltInput; - var loopCount = lastInput - levyingInput; + var defaultInputsLength = defaultInputs.Length; + var loopCount = defaultInputsLength; + var saltedPosition = inputNote.Salt % defaultInputsLength; do { - if (saltedNotes.Any(note => note != inputNote && note.LevyingInput == saltInput && note.IsCollided(inputNote))) + var saltedInput = defaultInputs[saltedPosition]; + if (saltedNotes.Any(note => note.LevyingInput == saltedInput && note.IsCollided(inputNote))) { - if (++saltInput >= lastInput) + if (++saltedPosition >= defaultInputsLength) { - saltInput = levyingInput; + saltedPosition = 0; } if (--loopCount > 0) { continue; } } + else + { + inputNote.LevyingInput = saltedInput; + } break; } while (true); saltedNotes.Add(inputNote); - inputNote.LevyingInput = saltInput; } } break; @@ -909,64 +911,47 @@ var setNoteModeValue = defaultComputer.ModeComponentValue.SetNoteModeValue; if (setNoteModeValue == ModeComponent.SetNoteMode.Put || setNoteModeValue == ModeComponent.SetNoteMode.VoidPut) { - var inputsVoid = Enumerable.Range(defaultInputs.First(), Component.DefaultInputCounts[(int)InputMode]).Where(i => !Notes.Any(note => note.LevyingInput == i)).ToArray(); - var putNoteSet = defaultComputer.ModeComponentValue.PutNoteSet; - var putNoteSetMillis = defaultComputer.ModeComponentValue.PutNoteSetMillis; - foreach (var (wait, audioNotes) in defaultComputer.WaitAudioNoteMap) + var putInputs = setNoteModeValue switch { - foreach (var audioNote in audioNotes.ToArray()) + ModeComponent.SetNoteMode.Put => Enumerable.Range(defaultInputs.First(), Component.DefaultInputCounts[(int)InputMode]).ToArray(), + ModeComponent.SetNoteMode.VoidPut => Enumerable.Range(defaultInputs.First(), Component.DefaultInputCounts[(int)InputMode]).Where(i => !Notes.Any(note => note.LevyingInput == i)).ToArray(), + _ => throw new ArgumentException(setNoteModeValue.ToString()) + }; + if (putInputs.Length > 0) + { + var putNoteSet = defaultComputer.ModeComponentValue.PutNoteSet; + var putNoteSetMillis = defaultComputer.ModeComponentValue.PutNoteSetMillis; + foreach (var (wait, audioNotes) in defaultComputer.WaitAudioNoteMap) { - if (audioNote.Salt % 100 < putNoteSet) + foreach (var audioNote in audioNotes.ToArray()) { - switch (setNoteModeValue) + if (audioNote.Salt % 100 < putNoteSet) { - case ModeComponent.SetNoteMode.Put: - NewNote(audioNote, GetInputs(defaultInputs.First(), defaultInputs.Last())); - break; - case ModeComponent.SetNoteMode.VoidPut: - NewNote(audioNote, inputsVoid); - break; - } - int[] GetInputs(int levyingInput, int lastInput) - { - var inputs = new int[lastInput - levyingInput + 1]; - for (var i = lastInput; i >= levyingInput; --i) + var levyingInput = putInputs.First(); + var putInputsLength = putInputs.Length; + var loopCount = putInputsLength; + var putPosition = audioNote.Salt % putInputsLength; + do { - inputs[i - levyingInput] = i; - } - return inputs; - } - void NewNote(AudioNote audioNote, int[] inputs) - { - if (inputs.Length > 0) - { - var levyingPutInput = audioNote.Salt % inputs.Length; - var putInput = levyingPutInput; - var targetInput = inputs[putInput]; - do + var inputNote = new InputNote(defaultComputer.WaitLogicalYMap[wait], wait, [audioNote], putInputs[putPosition]); + if (Notes.Any(note => note.LevyingInput == inputNote.LevyingInput && note.IsCollided(inputNote, putNoteSetMillis))) { - if (Notes.Any(note => + if (++putPosition >= putInputsLength) { - var noteWait = note.Wait; - return note.HasInput && note.LevyingInput == targetInput && noteWait - putNoteSetMillis <= wait && wait <= noteWait + putNoteSetMillis + note.LongWait; - })) + putPosition = 0; + } + if (--loopCount > 0) { - if (++putInput >= inputs.Length) - { - putInput = 0; - } - if (putInput == levyingPutInput) - { - break; - } - targetInput = inputs[putInput]; continue; } - Notes.Add(new InputNote(defaultComputer.WaitLogicalYMap[wait], wait, [audioNote], targetInput)); + } + else + { + Notes.Add(inputNote); audioNotes.Remove(audioNote); - break; - } while (true); - } + } + break; + } while (true); } } } diff --git a/Qwilight/Component.cs b/Qwilight/Component.cs index 3ca0217..474c634 100644 --- a/Qwilight/Component.cs +++ b/Qwilight/Component.cs @@ -131,43 +131,43 @@ switch (inputFavorMode) { case ModeComponent.InputFavorMode._4: - case ModeComponent.InputFavorMode.Fill4: + case ModeComponent.InputFavorMode.Algorithm4: return InputMode._4; case ModeComponent.InputFavorMode._5: - case ModeComponent.InputFavorMode.Fill5: + case ModeComponent.InputFavorMode.Algorithm5: return InputMode._5; case ModeComponent.InputFavorMode._6: - case ModeComponent.InputFavorMode.Fill6: + case ModeComponent.InputFavorMode.Algorithm6: return InputMode._6; case ModeComponent.InputFavorMode._7: - case ModeComponent.InputFavorMode.Fill7: + case ModeComponent.InputFavorMode.Algorithm7: return InputMode._7; case ModeComponent.InputFavorMode._8: - case ModeComponent.InputFavorMode.Fill8: + case ModeComponent.InputFavorMode.Algorithm8: return InputMode._8; case ModeComponent.InputFavorMode._9: - case ModeComponent.InputFavorMode.Fill9: + case ModeComponent.InputFavorMode.Algorithm9: return InputMode._9; case ModeComponent.InputFavorMode._10: - case ModeComponent.InputFavorMode.Fill10: + case ModeComponent.InputFavorMode.Algorithm10: return InputMode._10; case ModeComponent.InputFavorMode._5_1: - case ModeComponent.InputFavorMode.Fill5_1: + case ModeComponent.InputFavorMode.Algorithm5_1: return InputMode._5_1; case ModeComponent.InputFavorMode._7_1: - case ModeComponent.InputFavorMode.Fill7_1: + case ModeComponent.InputFavorMode.Algorithm7_1: return InputMode._7_1; case ModeComponent.InputFavorMode._10_2: - case ModeComponent.InputFavorMode.Fill10_2: + case ModeComponent.InputFavorMode.Algorithm10_2: return InputMode._10_2; case ModeComponent.InputFavorMode._14_2: - case ModeComponent.InputFavorMode.Fill14_2: + case ModeComponent.InputFavorMode.Algorithm14_2: return InputMode._14_2; case ModeComponent.InputFavorMode._24_2: - case ModeComponent.InputFavorMode.Fill24_2: + case ModeComponent.InputFavorMode.Algorithm24_2: return InputMode._24_2; case ModeComponent.InputFavorMode._48_4: - case ModeComponent.InputFavorMode.Fill48_4: + case ModeComponent.InputFavorMode.Algorithm48_4: return InputMode._48_4; default: throw new ArgumentException(inputFavorMode.ToString()); diff --git a/Qwilight/Compute/DefaultCompute.cs b/Qwilight/Compute/DefaultCompute.cs index 515fbf5..327c5b8 100644 --- a/Qwilight/Compute/DefaultCompute.cs +++ b/Qwilight/Compute/DefaultCompute.cs @@ -4529,7 +4529,7 @@ break; case 1: case 2: - var twilightWwwComment = await TwilightSystem.Instance.GetWwwParallel($"{QwilightComponent.QwilightAPI}/comment?noteID={NoteFile.GetNoteID512()}&avatarID={Configure.Instance.AvatarID}&target={Configure.Instance.UbuntuNetItemTarget}").ConfigureAwait(false); + var twilightWwwComment = await TwilightSystem.Instance.GetWwwParallel($"{QwilightComponent.QwilightAPI}/comment?noteID={NoteFile.GetNoteID512()}&avatarID={Configure.Instance.AvatarID}&isUbuntu={Configure.Instance.UbuntuNetItemTarget}").ConfigureAwait(false); if (twilightWwwComment.HasValue) { netItems.AddRange(GetNetItemsImpl(HandleTwilightNetItems(Utility.GetCommentItems(twilightWwwComment.Value.comments, NoteFile)))); diff --git a/Qwilight/ModeComponent.cs b/Qwilight/ModeComponent.cs index d054bc2..bad58ae 100644 --- a/Qwilight/ModeComponent.cs +++ b/Qwilight/ModeComponent.cs @@ -44,7 +44,7 @@ public enum InputFavorMode { Default, _4 = 4, _5, _6, _7, _8, _9, _5_1, _7_1, _10_2, _14_2, _10, _24_2, _48_4, - Fill4, Fill5, Fill6, Fill7, Fill8, Fill9, Fill10, Fill5_1, Fill7_1, Fill10_2, Fill14_2, Fill24_2, Fill48_4 + Algorithm4, Algorithm5, Algorithm6, Algorithm7, Algorithm8, Algorithm9, Algorithm10, Algorithm5_1, Algorithm7_1, Algorithm10_2, Algorithm14_2, Algorithm24_2, Algorithm48_4 } public enum NoteModifyMode @@ -99,6 +99,7 @@ LowestJudgmentConditionMode _lowestJudgmentConditionMode; PutCopyNotes _putCopyNotes; double _multiplierUnit = 0.01; + double _algorithmInputFavorMillis = 100.0; double _lowestLongNoteModify = 100.0; double _highestLongNoteModify = 100.0; double _putNoteSet = 25.0; @@ -186,7 +187,7 @@ public bool CanBeTwilightComment => JudgmentModeValue != JudgmentMode.Favor && HandlingHitPointsModeValue != HitPointsMode.Favor && HandlingHitPointsModeValue != HitPointsMode.Test && LongNoteModeValue != LongNoteMode.Input && - InputFavorModeValue != InputFavorMode.Fill4 && InputFavorModeValue != InputFavorMode.Fill5 && InputFavorModeValue != InputFavorMode.Fill6 && InputFavorModeValue != InputFavorMode.Fill7 && InputFavorModeValue != InputFavorMode.Fill8 && InputFavorModeValue != InputFavorMode.Fill9 && InputFavorModeValue != InputFavorMode.Fill10 && InputFavorModeValue != InputFavorMode.Fill5_1 && InputFavorModeValue != InputFavorMode.Fill7_1 && InputFavorModeValue != InputFavorMode.Fill10_2 && InputFavorModeValue != InputFavorMode.Fill14_2 && InputFavorModeValue != InputFavorMode.Fill24_2 && InputFavorModeValue != InputFavorMode.Fill48_4 && + InputFavorModeValue != InputFavorMode.Algorithm4 && InputFavorModeValue != InputFavorMode.Algorithm5 && InputFavorModeValue != InputFavorMode.Algorithm6 && InputFavorModeValue != InputFavorMode.Algorithm7 && InputFavorModeValue != InputFavorMode.Algorithm8 && InputFavorModeValue != InputFavorMode.Algorithm9 && InputFavorModeValue != InputFavorMode.Algorithm10 && InputFavorModeValue != InputFavorMode.Algorithm5_1 && InputFavorModeValue != InputFavorMode.Algorithm7_1 && InputFavorModeValue != InputFavorMode.Algorithm10_2 && InputFavorModeValue != InputFavorMode.Algorithm14_2 && InputFavorModeValue != InputFavorMode.Algorithm24_2 && InputFavorModeValue != InputFavorMode.Algorithm48_4 && NoteModifyModeValue != NoteModifyMode.LongNote && BPMModeValue == BPMMode.Default && WaveModeValue == WaveMode.Default && @@ -814,19 +815,27 @@ set => SetProperty(ref FavorHitPoints[(int)Component.Judged.Lowest][1], value, nameof(LowestHitPoints1)); } - public void SetLowestAutoLongNoteModify() + public void SetAutoAlgorithmInputFavorMillis() { - if (Configure.Instance.LowestAutoLongNoteModify) + if (Configure.Instance.AutoAlgorithmInputFavorMillis) { - LowestLongNoteModify = 1000.0 * 240.0 / (BPM * AudioMultiplier) / Configure.Instance.LowestAutoLongNoteModifyValue; + AlgorithmInputFavorMillis = 1000.0 * 240.0 / (BPM * AudioMultiplier) / Configure.Instance.AutoAlgorithmInputFavorMillisValue; } } - public void SetHighestAutoLongNoteModify() + public void SetAutoLowestLongNoteModify() + { + if (Configure.Instance.AutoLowestLongNoteModify) + { + LowestLongNoteModify = 1000.0 * 240.0 / (BPM * AudioMultiplier) / Configure.Instance.AutoLowestLongNoteModifyValue; + } + } + + public void SetAutoHighestLongNoteModify() { if (Configure.Instance.HighestAutoLongNoteModify) { - HighestLongNoteModify = 1000.0 * 240.0 / (BPM * AudioMultiplier) / Configure.Instance.HighestAutoLongNoteModifyValue; + HighestLongNoteModify = 1000.0 * 240.0 / (BPM * AudioMultiplier) / Configure.Instance.AutoHighestLongNoteModifyValue; } } @@ -838,6 +847,13 @@ } } + public double AlgorithmInputFavorMillis + { + get => _algorithmInputFavorMillis; + + set => SetProperty(ref _algorithmInputFavorMillis, value, nameof(AlgorithmInputFavorMillis)); + } + public double LowestLongNoteModify { get => _lowestLongNoteModify; diff --git a/Qwilight/Note/BaseNote.cs b/Qwilight/Note/BaseNote.cs index 6455f8f..510ca51 100644 --- a/Qwilight/Note/BaseNote.cs +++ b/Qwilight/Note/BaseNote.cs @@ -145,6 +145,6 @@ public abstract void Paint(CanvasDrawingSession targetSession, bool isValidNetDrawings, DefaultCompute defaultComputer, ref Bound r); - public bool IsCollided(BaseNote note) => (Wait <= note.Wait && note.Wait <= Wait + LongWait) || (note.Wait <= Wait && Wait <= note.Wait + note.LongWait); + public bool IsCollided(BaseNote note, double waitMargin = 0.0) => (Wait - waitMargin <= note.Wait && note.Wait <= Wait + LongWait + waitMargin) || (note.Wait - waitMargin <= Wait && Wait <= note.Wait + note.LongWait + waitMargin); } } \ No newline at end of file diff --git a/Qwilight/System/Configure/Configure.cs b/Qwilight/System/Configure/Configure.cs index 4cdaf73..54191e7 100644 --- a/Qwilight/System/Configure/Configure.cs +++ b/Qwilight/System/Configure/Configure.cs @@ -250,11 +250,13 @@ int _hofViewTotalTabPosition; int _hofViewAtTabPosition; int _hofViewAbilityTabPosition; - bool _lowestAutoLongNoteModify; + bool _autoAlgorithmInputFavorMillis; + bool _autoLowestLongNoteModify; bool _highestAutoLongNoteModify; bool _autoPutNoteSetMillis; - double _lowestAutoLongNoteModifyValue; - double _highestAutoLongNoteModifyValue; + double _autoAlgorithmInputFavorMillisValue; + double _autoLowestLongNoteModifyValue; + double _autoHighestLongNoteModifyValue; double _autoPutNoteSetMillisValue; string _language; bool _setHwMode; @@ -639,15 +641,41 @@ [JsonIgnore] public string ConfigureFault { get; set; } - public bool LowestAutoLongNoteModify + public bool AutoAlgorithmInputFavorMillis { - get => _lowestAutoLongNoteModify; + get => _autoAlgorithmInputFavorMillis; set { - if (SetProperty(ref _lowestAutoLongNoteModify, value, nameof(LowestAutoLongNoteModify)) && _isLoaded) + if (SetProperty(ref _autoAlgorithmInputFavorMillis, value, nameof(AutoAlgorithmInputFavorMillis)) && _isLoaded) { - ViewModels.Instance.MainValue.ModeComponentValue.SetLowestAutoLongNoteModify(); + ViewModels.Instance.MainValue.ModeComponentValue.SetAutoAlgorithmInputFavorMillis(); + } + } + } + + public bool AutoLowestLongNoteModify + { + get => _autoLowestLongNoteModify; + + set + { + if (SetProperty(ref _autoLowestLongNoteModify, value, nameof(AutoLowestLongNoteModify)) && _isLoaded) + { + ViewModels.Instance.MainValue.ModeComponentValue.SetAutoLowestLongNoteModify(); + } + } + } + + public double AutoAlgorithmInputFavorMillisValue + { + get => _autoAlgorithmInputFavorMillisValue; + + set + { + if (SetProperty(ref _autoAlgorithmInputFavorMillisValue, value, nameof(AutoAlgorithmInputFavorMillisValue)) && _isLoaded) + { + ViewModels.Instance.MainValue.ModeComponentValue.SetAutoAlgorithmInputFavorMillis(); } } } @@ -660,33 +688,33 @@ { if (SetProperty(ref _highestAutoLongNoteModify, value, nameof(HighestAutoLongNoteModify)) && _isLoaded) { - ViewModels.Instance.MainValue.ModeComponentValue.SetHighestAutoLongNoteModify(); + ViewModels.Instance.MainValue.ModeComponentValue.SetAutoHighestLongNoteModify(); } } } - public double LowestAutoLongNoteModifyValue + public double AutoLowestLongNoteModifyValue { - get => _lowestAutoLongNoteModifyValue; + get => _autoLowestLongNoteModifyValue; set { - if (SetProperty(ref _lowestAutoLongNoteModifyValue, value, nameof(LowestAutoLongNoteModifyValue)) && _isLoaded) + if (SetProperty(ref _autoLowestLongNoteModifyValue, value, nameof(AutoLowestLongNoteModifyValue)) && _isLoaded) { - ViewModels.Instance.MainValue.ModeComponentValue.SetLowestAutoLongNoteModify(); + ViewModels.Instance.MainValue.ModeComponentValue.SetAutoLowestLongNoteModify(); } } } - public double HighestAutoLongNoteModifyValue + public double AutoHighestLongNoteModifyValue { - get => _highestAutoLongNoteModifyValue; + get => _autoHighestLongNoteModifyValue; set { - if (SetProperty(ref _highestAutoLongNoteModifyValue, value, nameof(HighestAutoLongNoteModifyValue)) && _isLoaded) + if (SetProperty(ref _autoHighestLongNoteModifyValue, value, nameof(AutoHighestLongNoteModifyValue)) && _isLoaded) { - ViewModels.Instance.MainValue.ModeComponentValue.SetHighestAutoLongNoteModify(); + ViewModels.Instance.MainValue.ModeComponentValue.SetAutoHighestLongNoteModify(); } } } @@ -3057,10 +3085,10 @@ } if (isInit || Utility.IsLowerDate(Date, 1, 14, 105)) { - LowestAutoLongNoteModify = false; + AutoLowestLongNoteModify = false; HighestAutoLongNoteModify = false; - LowestAutoLongNoteModifyValue = 16.0; - HighestAutoLongNoteModifyValue = 16.0; + AutoLowestLongNoteModifyValue = 16.0; + AutoHighestLongNoteModifyValue = 16.0; } if (isInit || Utility.IsLowerDate(Date, 1, 14, 107)) { diff --git a/Qwilight/System/DB.cs b/Qwilight/System/DB.cs index 2bfe7bd..2666d53 100644 --- a/Qwilight/System/DB.cs +++ b/Qwilight/System/DB.cs @@ -15,7 +15,7 @@ { enum Date : long { - DB_1_0_0, DB_1_16_9, DB_1_16_15, Max + DB_1_0_0, DB_1_16_9, DB_1_16_15, DB_1_16_17, Max } const Date LatestDBDate = Date.Max - 1; @@ -87,7 +87,7 @@ #endregion #region 오프라인 기록 - if (date < Date.DB_1_16_15) + if (date < Date.DB_1_16_17) { using (var dbStatement = NewDBStatement(""" CREATE TABLE IF NOT EXISTS tmp_comment ( @@ -127,9 +127,10 @@ Low_Judgment_1 REAL DEFAULT 0.0, Lower_Judgment_1 REAL DEFAULT 0.0, Lowest_Judgment_1 REAL DEFAULT 0.0, - Lowest_Long_Note_Modify REAL DEFAULT 100.0, - Highest_Long_Note_Modify REAL DEFAULT 100.0, - Put_Note_Set INTEGER DEFAULT 25, + Lowest_Long_Note_Modify REAL DEFAULT 0.0, + Highest_Long_Note_Modify REAL DEFAULT 0.0, + Algorithm_Input_Favor_Millis REAL DEFAULT 0.0, + Put_Note_Set INTEGER DEFAULT 0, Put_Note_Set_Millis REAL DEFAULT 0.0, Highest_Hit_Points_0 REAL DEFAULT 0.0, Higher_Hit_Points_0 REAL DEFAULT 0.0, @@ -153,9 +154,10 @@ } if (HasTable("comment", ta)) { + // Algorithm_Input_Favor_Millis using (var dbStatement = NewDBStatement(""" INSERT - INTO tmp_comment + INTO tmp_comment(Date, Event_Note_ID, Comment, Name, Multiplier, Auto_Mode, Note_Salt_Mode, Audio_Multiplier, Faint_Note_Mode, Judgment_Mode, Hit_Points_Mode, Note_Mobility_Mode, Long_Note_Mode, Input_Favor_Mode, Note_Modify_Mode, BPM_Mode, Wave_Mode, Set_Note_Mode, Lowest_Judgment_Condition_Mode, Stand, Band, Is_P, Point, Salt, Highest_Judgment_0, Higher_Judgment_0, High_Judgment_0, Low_Judgment_0, Lower_Judgment_0, Lowest_Judgment_0, Highest_Judgment_1, Higher_Judgment_1, High_Judgment_1, Low_Judgment_1, Lower_Judgment_1, Lowest_Judgment_1, Lowest_Long_Note_Modify, Highest_Long_Note_Modify, Put_Note_Set, Put_Note_Set_Millis, Highest_Hit_Points_0, Higher_Hit_Points_0, High_Hit_Points_0, Low_Hit_Points_0, Lower_Hit_Points_0, Lowest_Hit_Points_0, Highest_Hit_Points_1, Higher_Hit_Points_1, High_Hit_Points_1, Low_Hit_Points_1, Lower_Hit_Points_1, Lowest_Hit_Points_1, Note_ID, Is_Paused, Input_Flags) SELECT * FROM comment """, ta)) @@ -541,7 +543,7 @@ { var commentItems = new List(); using var dbStatement = NewDBStatement($""" - SELECT Date, Comment, Name, Multiplier, Auto_Mode, Note_Salt_Mode, Audio_Multiplier, Faint_Note_Mode, Judgment_Mode, Hit_Points_Mode, Note_Mobility_Mode, Long_Note_Mode, Input_Favor_Mode, Note_Modify_Mode, BPM_Mode, Wave_Mode, Set_Note_Mode, Lowest_Judgment_Condition_Mode, Stand, Band, Is_P, Point, Salt, Highest_Judgment_0, Higher_Judgment_0, High_Judgment_0, Low_Judgment_0, Lower_Judgment_0, Lowest_Judgment_0, Highest_Judgment_1, Higher_Judgment_1, High_Judgment_1, Low_Judgment_1, Lower_Judgment_1, Lowest_Judgment_1, Lowest_Long_Note_Modify, Highest_Long_Note_Modify, Put_Note_Set, Put_Note_Set_Millis, Highest_Hit_Points_0, Higher_Hit_Points_0, High_Hit_Points_0, Low_Hit_Points_0, Lower_Hit_Points_0, Lowest_Hit_Points_0, Highest_Hit_Points_1, Higher_Hit_Points_1, High_Hit_Points_1, Low_Hit_Points_1, Lower_Hit_Points_1, Lowest_Hit_Points_1, Is_Paused, Input_Flags + SELECT Date, Comment, Name, Multiplier, Auto_Mode, Note_Salt_Mode, Audio_Multiplier, Faint_Note_Mode, Judgment_Mode, Hit_Points_Mode, Note_Mobility_Mode, Long_Note_Mode, Input_Favor_Mode, Note_Modify_Mode, BPM_Mode, Wave_Mode, Set_Note_Mode, Lowest_Judgment_Condition_Mode, Stand, Band, Is_P, Point, Salt, Highest_Judgment_0, Higher_Judgment_0, High_Judgment_0, Low_Judgment_0, Lower_Judgment_0, Lowest_Judgment_0, Highest_Judgment_1, Higher_Judgment_1, High_Judgment_1, Low_Judgment_1, Lower_Judgment_1, Lowest_Judgment_1, Algorithm_Input_Favor_Millis, Lowest_Long_Note_Modify, Highest_Long_Note_Modify, Put_Note_Set, Put_Note_Set_Millis, Highest_Hit_Points_0, Higher_Hit_Points_0, High_Hit_Points_0, Low_Hit_Points_0, Lower_Hit_Points_0, Lowest_Hit_Points_0, Highest_Hit_Points_1, Higher_Hit_Points_1, High_Hit_Points_1, Low_Hit_Points_1, Lower_Hit_Points_1, Lowest_Hit_Points_1, Is_Paused, Input_Flags FROM comment WHERE {(string.IsNullOrEmpty(eventNoteID) ? "Note_ID = @noteID" : "Event_Note_ID = @eventNoteID")} ORDER BY Stand DESC @@ -601,6 +603,7 @@ LowJudgment1 = rows.GetDouble("Low_Judgment_1"), LowerJudgment1 = rows.GetDouble("Lower_Judgment_1"), LowestJudgment1 = rows.GetDouble("Lowest_Judgment_1"), + AlgorithmInputFavorMillis = rows.GetDouble("Algorithm_Input_Favor_Millis"), LowestLongNoteModify = rows.GetDouble("Lowest_Long_Note_Modify"), HighestLongNoteModify = rows.GetDouble("Highest_Long_Note_Modify"), PutNoteSet = rows.GetInt32("Put_Note_Set"), @@ -932,7 +935,7 @@ using var dbStatement = NewDBStatement(""" INSERT INTO comment - VALUES(@date, @eventNoteID, @comment, @avatar, @multiplier, @autoMode, @noteSaltMode, @audioMultiplier, @faintNoteMode, @judgmentMode, @hitPointsMode, @noteMobilityMode, @longNoteMode, @inputFavorMode, @noteModifyMode, @bpmMode, @waveMode, @setNoteMode, @lowestJudgmentConditionMode, @stand, @band, @isP, @point, @salt, @highestJudgment0, @higherJudgment0, @highJudgment0, @lowJudgment0, @lowerJudgment0, @lowestJudgment0, @highestJudgment1, @higherJudgment1, @highJudgment1, @lowJudgment1, @lowerJudgment1, @lowestJudgment1, @lowestLongNoteModify, @highestLongNoteModify, @putNoteSet, @putNoteSetMillis, @highestHitPoints0, @higherHitPoints0, @highHitPoints0, @lowHitPoints0, @lowerHitPoints0, @lowestHitPoints0, @highestHitPoints1, @higherHitPoints1, @highHitPoints1, @lowHitPoints1, @lowerHitPoints1, @lowestHitPoints1, @noteID, @isPaused, @inputFlags) + VALUES(@date, @eventNoteID, @comment, @avatar, @multiplier, @autoMode, @noteSaltMode, @audioMultiplier, @faintNoteMode, @judgmentMode, @hitPointsMode, @noteMobilityMode, @longNoteMode, @inputFavorMode, @noteModifyMode, @bpmMode, @waveMode, @setNoteMode, @lowestJudgmentConditionMode, @stand, @band, @isP, @point, @salt, @highestJudgment0, @higherJudgment0, @highJudgment0, @lowJudgment0, @lowerJudgment0, @lowestJudgment0, @highestJudgment1, @higherJudgment1, @highJudgment1, @lowJudgment1, @lowerJudgment1, @lowestJudgment1, @algorithmInputFavorMillis, @lowestLongNoteModify, @highestLongNoteModify, @putNoteSet, @putNoteSetMillis, @highestHitPoints0, @higherHitPoints0, @highHitPoints0, @lowHitPoints0, @lowerHitPoints0, @lowestHitPoints0, @highestHitPoints1, @higherHitPoints1, @highHitPoints1, @lowHitPoints1, @lowerHitPoints1, @lowestHitPoints1, @noteID, @isPaused, @inputFlags) """); dbStatement.Parameters.AddWithValue("date", date); dbStatement.Parameters.AddWithValue("eventNoteID", eventNoteID ?? DBNull.Value as object); @@ -970,6 +973,7 @@ dbStatement.Parameters.AddWithValue("lowJudgment1", modeComponentValue.LowJudgment1); dbStatement.Parameters.AddWithValue("lowerJudgment1", modeComponentValue.LowerJudgment1); dbStatement.Parameters.AddWithValue("lowestJudgment1", modeComponentValue.LowestJudgment1); + dbStatement.Parameters.AddWithValue("algorithmInputFavorMillis", modeComponentValue.AlgorithmInputFavorMillis); dbStatement.Parameters.AddWithValue("lowestLongNoteModify", modeComponentValue.LowestLongNoteModify); dbStatement.Parameters.AddWithValue("highestLongNoteModify", modeComponentValue.HighestLongNoteModify); dbStatement.Parameters.AddWithValue("putNoteSet", modeComponentValue.PutNoteSet); diff --git a/Qwilight/System/LanguageSystem/LanguageSystem.cs b/Qwilight/System/LanguageSystem/LanguageSystem.cs index c3d7c0a..6cd3909 100644 --- a/Qwilight/System/LanguageSystem/LanguageSystem.cs +++ b/Qwilight/System/LanguageSystem/LanguageSystem.cs @@ -141,19 +141,19 @@ InputFavorModeTexts[(int)ModeComponent.InputFavorMode._14_2] = InputFavorMode142; InputFavorModeTexts[(int)ModeComponent.InputFavorMode._24_2] = InputFavorMode242; InputFavorModeTexts[(int)ModeComponent.InputFavorMode._48_4] = InputFavorMode484; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill4] = InputFavorModeFill4; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill5] = InputFavorModeFill5; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill6] = InputFavorModeFill6; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill7] = InputFavorModeFill7; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill8] = InputFavorModeFill8; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill9] = InputFavorModeFill9; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill10] = InputFavorModeFill10; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill5_1] = InputFavorModeFill51; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill7_1] = InputFavorModeFill71; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill10_2] = InputFavorModeFill102; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill14_2] = InputFavorModeFill142; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill24_2] = InputFavorModeFill242; - InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill48_4] = InputFavorModeFill484; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm4] = InputFavorModeFill4; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm5] = InputFavorModeFill5; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm6] = InputFavorModeFill6; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm7] = InputFavorModeFill7; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm8] = InputFavorModeFill8; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm9] = InputFavorModeFill9; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm10] = InputFavorModeFill10; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm5_1] = InputFavorModeFill51; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm7_1] = InputFavorModeFill71; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm10_2] = InputFavorModeFill102; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm14_2] = InputFavorModeFill142; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm24_2] = InputFavorModeFill242; + InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm48_4] = InputFavorModeFill484; NoteSaltModeTexts[(int)ModeComponent.NoteSaltMode.Default] = DefaultSaltModeContents; NoteSaltModeTexts[(int)ModeComponent.NoteSaltMode.Symmetric] = SymmetricModeContents; diff --git a/Qwilight/System/LanguageSystem/LanguageSystem.g.cs b/Qwilight/System/LanguageSystem/LanguageSystem.g.cs index 20c43d7..df232a6 100644 --- a/Qwilight/System/LanguageSystem/LanguageSystem.g.cs +++ b/Qwilight/System/LanguageSystem/LanguageSystem.g.cs @@ -5,6 +5,7 @@ public string _4DModeContents { get; set; } public string AbilityFittedText { get; set; } public string AegisPostedItemText { get; set; } + public string AlgorithmInputFavorFaultText { get; set; } public string AllowEssentialInputs { get; set; } public string AllowTotalLevyingText { get; set; } public string AllowTwilightCommentAssist { get; set; } @@ -159,6 +160,7 @@ public string ComputingGUIConfigure { get; set; } public string ComputingModeComponentConfigure { get; set; } public string ComputingUIConfigure { get; set; } + public string ConfigureAlgorithmInputFavorMillisContents { get; set; } public string ConfigureAssist { get; set; } public string ConfigureBaseUIContents { get; set; } public string ConfigureEtcUIContents { get; set; } diff --git a/Qwilight/View/AlgorithmInputFavorWindow.xaml b/Qwilight/View/AlgorithmInputFavorWindow.xaml new file mode 100644 index 0000000..281a48f --- /dev/null +++ b/Qwilight/View/AlgorithmInputFavorWindow.xaml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Qwilight/View/AlgorithmInputFavorWindow.xaml.cs b/Qwilight/View/AlgorithmInputFavorWindow.xaml.cs new file mode 100644 index 0000000..18805c1 --- /dev/null +++ b/Qwilight/View/AlgorithmInputFavorWindow.xaml.cs @@ -0,0 +1,14 @@ +using Qwilight.ViewModel; +using System.Windows; + +namespace Qwilight.View +{ + public sealed partial class AlgorithmInputFavorWindow + { + public AlgorithmInputFavorWindow() => InitializeComponent(); + + void OnMeterModified(object sender, RoutedPropertyChangedEventArgs e) => (DataContext as AlgorithmInputFavorViewModel).OnMeterModified(); + + void OnSetMeter(object sender, RoutedEventArgs e) => (DataContext as AlgorithmInputFavorViewModel).OnMeterModified(); + } +} \ No newline at end of file diff --git a/Qwilight/View/LongNoteModifyWindow.xaml b/Qwilight/View/LongNoteModifyWindow.xaml index a469709..48d82b7 100644 --- a/Qwilight/View/LongNoteModifyWindow.xaml +++ b/Qwilight/View/LongNoteModifyWindow.xaml @@ -27,10 +27,10 @@ - - - - + + + + @@ -43,8 +43,8 @@ - - + + diff --git a/Qwilight/View/MainWindow/WPFView.xaml b/Qwilight/View/MainWindow/WPFView.xaml index 841295c..0b37e96 100644 --- a/Qwilight/View/MainWindow/WPFView.xaml +++ b/Qwilight/View/MainWindow/WPFView.xaml @@ -40,6 +40,7 @@ + diff --git a/Qwilight/View/PutNoteSetWindow.xaml b/Qwilight/View/PutNoteSetWindow.xaml index 669a066..3d095aa 100644 --- a/Qwilight/View/PutNoteSetWindow.xaml +++ b/Qwilight/View/PutNoteSetWindow.xaml @@ -13,7 +13,6 @@ - diff --git a/Qwilight/ViewModel/AlgorithmInputFavorViewModel.cs b/Qwilight/ViewModel/AlgorithmInputFavorViewModel.cs new file mode 100644 index 0000000..69a8e71 --- /dev/null +++ b/Qwilight/ViewModel/AlgorithmInputFavorViewModel.cs @@ -0,0 +1,31 @@ +using System.Windows; + +namespace Qwilight.ViewModel +{ + public sealed class AlgorithmInputFavorViewModel : BaseViewModel + { + public override double TargetLength => double.NaN; + + public override double TargetHeight => double.NaN; + + public override VerticalAlignment HeightSystem => VerticalAlignment.Bottom; + + public void OnMeterModified() => ViewModels.Instance.MainValue.ModeComponentValue.SetAutoAlgorithmInputFavorMillis(); + + public override bool ClosingCondition + { + get + { + var modeComponentValue = ViewModels.Instance.MainValue.ModeComponentValue; + var algorithmInputFavorMillis = modeComponentValue.AlgorithmInputFavorMillis; + if (algorithmInputFavorMillis == 0.0) + { + NotifySystem.Instance.Notify(NotifySystem.NotifyVariety.Warning, NotifySystem.NotifyConfigure.Default, LanguageSystem.Instance.AlgorithmInputFavorFaultText); + return false; + } + + return base.ClosingCondition; + } + } + } +} \ No newline at end of file diff --git a/Qwilight/ViewModel/MainViewModel.cs b/Qwilight/ViewModel/MainViewModel.cs index d4de3a6..d7c4220 100644 --- a/Qwilight/ViewModel/MainViewModel.cs +++ b/Qwilight/ViewModel/MainViewModel.cs @@ -1450,7 +1450,7 @@ var noteID = EntryItemValue?.NoteFile?.GetNoteID512(); if (!string.IsNullOrEmpty(noteID)) { - var twilightWwwComment = await TwilightSystem.Instance.GetWwwParallel($"{QwilightComponent.QwilightAPI}/comment?noteID={noteID}&avatarID={(TwilightSystem.Instance.IsSignedIn ? TwilightSystem.Instance.AvatarID : string.Empty)}&language={Configure.Instance.Language}&target={Configure.Instance.UbuntuNetItemTarget}"); + var twilightWwwComment = await TwilightSystem.Instance.GetWwwParallel($"{QwilightComponent.QwilightAPI}/comment?noteID={noteID}&avatarID={(TwilightSystem.Instance.IsSignedIn ? TwilightSystem.Instance.AvatarID : string.Empty)}&language={Configure.Instance.Language}&isUbuntu={Configure.Instance.UbuntuNetItemTarget}"); var noteFile = EntryItemValue?.NoteFile; if (noteFile?.GetNoteID512() == noteID) { @@ -3472,7 +3472,7 @@ ViewModels.Instance.SiteContainerValue.CallSetNoteFile(); ModeComponentValue.ComputingValue = targetNoteFile; ModeComponentValue.Salt = salt; - ModeComponentValue.SetLowestAutoLongNoteModify(); + ModeComponentValue.SetAutoLowestLongNoteModify(); ModeComponentValue.SetAutoPutNoteSetMillis(); OnJudgmentMeterMillisModified(); targetNoteFile.NotifyModel(); diff --git a/Qwilight/ViewModel/ModifyModeComponentViewModel.cs b/Qwilight/ViewModel/ModifyModeComponentViewModel.cs index 4d410f1..843b705 100644 --- a/Qwilight/ViewModel/ModifyModeComponentViewModel.cs +++ b/Qwilight/ViewModel/ModifyModeComponentViewModel.cs @@ -437,10 +437,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill4, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill4], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill4]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm4, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm4], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm4]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm4); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -451,10 +457,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill5, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill5], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill5]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm5, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm5], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm5]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm5); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -465,10 +477,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill6, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill6], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill6]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm6, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm6], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm6]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm6); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -479,10 +497,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill7, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill7], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill7]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm7, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm7], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm7]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm7); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -493,10 +517,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill8, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill8], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill8]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm8, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm8], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm8]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm8); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -507,10 +537,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill9, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill9], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill9]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm9, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm9], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm9]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm9); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -521,10 +557,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill10, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill10], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill10]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm10, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm10], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm10]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm10); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -535,10 +577,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill5_1, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill5_1], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill5_1]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm5_1, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm5_1], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm5_1]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm5_1); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -549,10 +597,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill7_1, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill7_1], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill7_1]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm7_1, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm7_1], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm7_1]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm7_1); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -563,10 +617,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill10_2, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill10_2], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill10_2]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm10_2, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm10_2], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm10_2]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm10_2); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -577,10 +637,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill14_2, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill14_2], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill14_2]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm14_2, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm14_2], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm14_2]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm14_2); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -591,10 +657,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill24_2, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill24_2], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill24_2]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm24_2, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm24_2], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm24_2]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm24_2); + }) }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { @@ -605,10 +677,16 @@ }); ModifyModeComponentItems[InputFavorModeVariety].Add(new() { - Value = (int)ModeComponent.InputFavorMode.Fill48_4, - Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Fill48_4], - Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Fill48_4]?.DefaultDrawing, - PointedPaintID = 2 + Value = (int)ModeComponent.InputFavorMode.Algorithm48_4, + Data = LanguageSystem.Instance.InputFavorModeTexts[(int)ModeComponent.InputFavorMode.Algorithm48_4], + Drawing = BaseUI.Instance.ModeComponentDrawings[InputFavorModeVariety][(int)ModeComponent.InputFavorMode.Algorithm48_4]?.DefaultDrawing, + PointedPaintID = 2, + OnConfigure = new(() => + { + ViewModels.Instance.AlgorithmInputFavorValue.Open(); + ModeComponentVariety = InputFavorModeVariety; + ModeComponentItem = ModeComponentItems.Find(modeComponentItem => modeComponentItem.Value == (int)ModeComponent.InputFavorMode.Algorithm48_4); + }) }); ModifyModeComponentItems[NoteModifyModeVariety].Add(new() diff --git a/Qwilight/ViewModel/ViewModels.cs b/Qwilight/ViewModel/ViewModels.cs index 34a8d21..29e602e 100644 --- a/Qwilight/ViewModel/ViewModels.cs +++ b/Qwilight/ViewModel/ViewModels.cs @@ -70,6 +70,8 @@ public LevelViewModel LevelValue { get; } = new(); + public AlgorithmInputFavorViewModel AlgorithmInputFavorValue { get; } = new(); + public PutNoteSetViewModel PutNoteSetValue { get; } = new(); public InputTextViewModel InputTextValue { get; } = new(); @@ -127,6 +129,7 @@ ModifyModeComponentValue, FontFamilyValue, LevelValue, + AlgorithmInputFavorValue, PutNoteSetValue, InputTextValue, InputPwValue,