From de9bcda48d4fb6cdf93c5bc04b6b7e3be2e47b0f Mon Sep 17 00:00:00 2001 From: akanyan Date: Fri, 5 Jul 2024 19:49:45 +0900 Subject: [PATCH] feat(SortByInternal): add sort2 --- .../MU3.DB/patch_MusicSort1ID.cs | 3 +-- .../MU3.DB/patch_MusicSort2IDEnum.cs | 15 +++++++++++++++ .../patch_MusicSelectViewDataList.cs | 16 ++++++++++++---- .../patch_Scene_32_PrePlayMusic_MusicSelect.cs | 15 ++++++++++++++- 4 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs index cb5e5e4..4ad2c0d 100644 --- a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs @@ -2,8 +2,7 @@ namespace MU3.DB; -[MonoModPatch("global::MU3.DB.MusicSort1ID")] -[MonoModEnumReplace()] +[MonoModEnumReplace] public enum patch_MusicSort1ID { Genre = 0, All = 1, diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs new file mode 100644 index 0000000..752bf39 --- /dev/null +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs @@ -0,0 +1,15 @@ +using MonoMod; + +namespace MU3.DB; + +[MonoModPatch("global::MU3.DB.MusicSort2IDEnum")] +public static class patch_MusicSort2IDEnum { + private static MusicSort2TableRecord[] records; + public static extern bool orig_loadFromFile(string filename); + + public static bool loadFromFile(string filename) { + var rv = orig_loadFromFile(filename); + records[4].Name = "インターナル"; + return rv; + } +} diff --git a/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs index 2d3e101..74c1f17 100644 --- a/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs +++ b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs @@ -1,5 +1,4 @@ using MU3.DB; -using MU3.SceneObject.MusicSelect; using MU3.Util; using System; using System.Collections.Generic; @@ -12,10 +11,11 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { private delegate string GetCategoryNameProc(MusicSelectViewData d); private MusicSort1ID __sort1; private CompareProc _compareProc1; + private CompareProc _compareProc2; private GetCategoryNameProc _getCategoryNameProc; - private ListList _minorCategoryDataList; private extern void orig_set__sort1(MusicSort1ID value); + private extern void orig_set__sort2(MusicSort2ID value); private void set__sort1(MusicSort1ID value) { if(value == (MusicSort1ID)patch_MusicSort1ID.InternalLevel) { @@ -26,6 +26,14 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { orig_set__sort1(value); } } + + private void set__sort2(MusicSort2ID value) { + orig_set__sort2(value); + if(value == MusicSort2ID.Level) { + _compareProc2 = compareByInternalLevel; + } + } + private string getCategoryNameByInternalLevel(MusicSelectViewData d) { StringBuilder stringBuilder = Singleton.instance.getStringBuilder(); Data.FumenData fumenData = ((d.musicViewData.data == null) ? null : d.musicViewData.data.fumenData[(int)d.difficulty]); @@ -34,12 +42,12 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { return stringBuilder.ToString(); } - private int getSortKeyByInternalLevel(MusicSelectViewData d, bool forSort1) { + private int getSortKeyByInternalLevel(MusicSelectViewData d) { return (int)Math.Round(d.musicViewData.data.fumenData[(int)d.difficulty].fumenConst * 10.0); } private int compareByInternalLevel(MusicSelectViewData d1, MusicSelectViewData d2, bool forSort1) { - return getSortKeyByInternalLevel(d1, forSort1) - getSortKeyByInternalLevel(d2, forSort1); + return getSortKeyByInternalLevel(d1) - getSortKeyByInternalLevel(d2); } private extern bool orig_isDifferentMyListSet(patch_MusicSort1ID oldSort1, patch_MusicSort1ID nowSort1); diff --git a/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs b/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs index 8a8369c..f980d5b 100644 --- a/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs +++ b/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs @@ -4,9 +4,10 @@ namespace MU3; public class patch_Scene_32_PrePlayMusic_MusicSelect: Scene_32_PrePlayMusic_MusicSelect { private static patch_MusicSort1ID[] _sort1SettingList; + private static MusicSort2ID[] _sort2SettingList; private extern void orig_Awake(); - private void Awake() { + private new void Awake() { _sort1SettingList = new[] { patch_MusicSort1ID.Genre, patch_MusicSort1ID.All, @@ -18,6 +19,18 @@ public class patch_Scene_32_PrePlayMusic_MusicSelect: Scene_32_PrePlayMusic_Musi patch_MusicSort1ID.InternalLevel }; + _sort2SettingList = new[] { + MusicSort2ID.Recommend, + MusicSort2ID.BattlePoint, + MusicSort2ID.TechnicalScore, + MusicSort2ID.BossLevel, + MusicSort2ID.Name, + MusicSort2ID.AddDate, + MusicSort2ID.Chapter, + MusicSort2ID.Level + //, MusicSort2ID.Lamp + }; + orig_Awake(); }