1
0
mirror of synced 2024-12-01 02:27:21 +01:00

Add Sort by subtitle and Sort by displayed level sort options

This commit is contained in:
0auBSQ 2022-12-05 01:09:39 +09:00
parent c25c744cf1
commit 0e6870b955
11 changed files with 163 additions and 87 deletions

View File

@ -374,6 +374,12 @@ namespace TJAPlayer3
[9100] = "Search (Difficulty)", [9100] = "Search (Difficulty)",
[9101] = "Difficulty", [9101] = "Difficulty",
[9102] = "Level", [9102] = "Level",
[9200] = "Return",
[9201] = "Path",
[9202] = "Title",
[9203] = "Subtitle",
[9204] = "Displayed Level",
}; };
} }
} }

View File

@ -365,6 +365,12 @@ namespace TJAPlayer3
[9100] = "Rechercher (Difficulté)", [9100] = "Rechercher (Difficulté)",
[9101] = "Difficulté", [9101] = "Difficulté",
[9102] = "Niveau", [9102] = "Niveau",
[9200] = "Retour",
[9201] = "Chemin",
[9202] = "Titre",
[9203] = "Sous-titre",
[9204] = "Niveau",
}; };
} }
} }

View File

@ -428,6 +428,12 @@ namespace TJAPlayer3
[9100] = "検索 (難易度)", [9100] = "検索 (難易度)",
[9101] = "難易度", [9101] = "難易度",
[9102] = "レベル", [9102] = "レベル",
};
[9200] = "戻る",
[9201] = "絶対パス",
[9202] = "曲名",
[9203] = "作者名",
[9204] = "表示レベル",
};
} }
} }

View File

@ -1389,7 +1389,8 @@ namespace TJAPlayer3
var comparer = new ComparerChain<C曲リストード>( var comparer = new ComparerChain<C曲リストード>(
new C曲リストードComparerード種別(), new C曲リストードComparerード種別(),
new C曲リストードComparer絶対パス(order), new C曲リストードComparer絶対パス(order),
new C曲リストードComparerタイトル(order)); new C曲リストードComparerタイトル(order),
new C曲リストードComparerSubtitle(order));
.Sort( comparer ); .Sort( comparer );
} }
@ -1399,18 +1400,42 @@ namespace TJAPlayer3
var comparer = new ComparerChain<C曲リストード>( var comparer = new ComparerChain<C曲リストード>(
new C曲リストードComparerード種別(), new C曲リストードComparerード種別(),
new C曲リストードComparerタイトル(order), new C曲リストードComparerタイトル(order),
new C曲リストードComparer絶対パス(order)); new C曲リストードComparerSubtitle(order),
new C曲リストードComparer絶対パス(order));
.Sort( comparer ); .Sort( comparer );
} }
/// <summary> public static void tSongListSortBySubtitle(List<C曲リストード> , E楽器パート part, int order, params object[] p)
/// {
/// </summary> var comparer = new ComparerChain<C曲リストード>(
/// <param name="ノードリスト"></param> new C曲リストードComparerード種別(),
/// <param name="part"></param> new C曲リストードComparerSubtitle(order),
/// <param name="order">1=Ascend -1=Descend</param> new C曲リストードComparerタイトル(order),
public static void t曲リストのソート3_演奏回数の多い順( List<C曲リストード> , E楽器パート part, int order, params object[] p ) new C曲リストードComparer絶対パス(order));
.Sort(comparer);
}
public static void tSongListSortByLevel(List<C曲リストード> , E楽器パート part, int order, params object[] p)
{
var comparer = new ComparerChain<C曲リストード>(
new C曲リストードComparerード種別(),
new C曲リストードComparerLevel(order),
new C曲リストードComparerタイトル(order),
new C曲リストードComparerSubtitle(order),
new C曲リストードComparer絶対パス(order));
.Sort(comparer);
}
/// <summary>
///
/// </summary>
/// <param name="ノードリスト"></param>
/// <param name="part"></param>
/// <param name="order">1=Ascend -1=Descend</param>
public static void t曲リストのソート3_演奏回数の多い順( List<C曲リストード> , E楽器パート part, int order, params object[] p )
{ {
order = -order; order = -order;
int nL12345 = (int) p[ 0 ]; int nL12345 = (int) p[ 0 ];

View File

@ -0,0 +1,32 @@
using System.Collections.Generic;
namespace TJAPlayer3.C曲リストードComparers
{
internal sealed class C曲リストードComparerLevel : IComparer<C曲リストード>
{
private readonly int _order;
public C曲リストードComparerLevel(int order)
{
this._order = order;
}
public int Compare(C曲リストード n1, C曲リストード n2)
{
int _n1s = (n1.eード種別 != C曲リストード.Eード種別.SCORE) ? 0 : 1;
int _n2s = (n2.eード種別 != C曲リストード.Eード種別.SCORE) ? 0 : 1;
if (_n1s == 0 || _n2s == 0)
{
return 0;
}
return _order * _diffOf(n1).CompareTo(_diffOf(n2));
}
private int _diffOf(C曲リストード n1)
{
return n1.nLevel[TJAPlayer3.stage選曲.act曲リスト.tFetchDifficulty(n1)];
}
}
}

View File

@ -0,0 +1,19 @@
using System.Collections.Generic;
namespace TJAPlayer3.C曲リストードComparers
{
internal sealed class C曲リストードComparerSubtitle : IComparer<C曲リストード>
{
private readonly int _order;
public C曲リストードComparerSubtitle(int order)
{
this._order = order;
}
public int Compare(C曲リストード n1, C曲リストード n2)
{
return _order * n1.strサブタイトル.CompareTo(n2.strサブタイトル);
}
}
}

View File

@ -22,9 +22,9 @@ namespace TJAPlayer3.C曲リストードComparers
case C曲リストード.Eード種別.UNKNOWN: case C曲リストード.Eード種別.UNKNOWN:
return 2; return 2;
case C曲リストード.Eード種別.RANDOM: case C曲リストード.Eード種別.RANDOM:
return 3;
case C曲リストード.Eード種別.BACKBOX:
return 4; return 4;
case C曲リストード.Eード種別.BACKBOX:
return 3;
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }

View File

@ -3092,7 +3092,7 @@ namespace TJAPlayer3
} }
} }
private int tFetchDifficulty(C曲リストード song) public int tFetchDifficulty(C曲リストード song)
{ {
var closest = this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song); var closest = this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song);
int defaultTable = Math.Max(0, Math.Min((int)Difficulty.Edit + 1, TJAPlayer3.ConfigIni.nDefaultCourse)); int defaultTable = Math.Max(0, Math.Min((int)Difficulty.Edit + 1, TJAPlayer3.ConfigIni.nDefaultCourse));

View File

@ -10,18 +10,19 @@ namespace TJAPlayer3
public CActSortSongs() public CActSortSongs()
{ {
List<CItemBase> lci = new List<CItemBase>(); List<CItemBase> lci = new List<CItemBase>();
lci.Add( new CItemList( "絶対パス", CItemBase.Eパネル種別., 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." } ) ); lci.Add( new CItemList( CLangManager.LangInstance.GetString(9201), CItemBase.Eパネル種別., 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." } ) );
lci.Add( new CItemList( "曲名", CItemBase.Eパネル種別., 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." } ) ); lci.Add( new CItemList(CLangManager.LangInstance.GetString(9202), CItemBase.Eパネル種別., 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." } ) );
//lci.Add( new CItemList( "Level", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "99,98,97,...", "1,2,3,..." } ) ); lci.Add(new CItemList(CLangManager.LangInstance.GetString(9203), CItemBase.Eパネル種別., 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." }));
lci.Add( new CItemList(CLangManager.LangInstance.GetString(9204), CItemBase.Eパネル種別., 0, "", "", new string[] { "13,12,11,...", "1,2,3,..." } ) );
//lci.Add( new CItemList( "Best Rank", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "E,D,C,...", "SS,S,A,..." } ) ); //lci.Add( new CItemList( "Best Rank", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "E,D,C,...", "SS,S,A,..." } ) );
//lci.Add( new CItemList( "PlayCount", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "10,9,8,...", "1,2,3,..." } ) ); //lci.Add( new CItemList( "PlayCount", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "10,9,8,...", "1,2,3,..." } ) );
//lci.Add( new CItemList( "Author", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." } ) );
//lci.Add( new CItemList( "SkillPoint", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "100,99,98,...", "1,2,3,..." } ) ); //lci.Add( new CItemList( "SkillPoint", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "100,99,98,...", "1,2,3,..." } ) );
#if TEST_SORTBGM #if TEST_SORTBGM
lci.Add( new CItemList( "BPM", CItemBase.Eパネル種別., 0, "", "", new string[] { "300,200,...", "70,80,90,..." } ) ); lci.Add( new CItemList( "BPM", CItemBase.Eパネル種別., 0, "", "", new string[] { "300,200,...", "70,80,90,..." } ) );
#endif #endif
lci.Add( new CItemList( "ジャンル", CItemBase.Eパネル種別., 0, "", "", new string[] { "AC15", "AC8-14" } ) ); //lci.Add( new CItemList( "ジャンル", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "AC15", "AC8-14" } ) );
lci.Add( new CItemList( "戻る", CItemBase.Eパネル種別., 0, "", "", new string[] { "", "" } ) ); lci.Add( new CItemList(CLangManager.LangInstance.GetString(9200), CItemBase.Eパネル種別., 0, "", "", new string[] { "", "" } ) );
base.Initialize( lci, false, "SORT MENU" ); base.Initialize( lci, false, "SORT MENU" );
} }
@ -57,41 +58,18 @@ namespace TJAPlayer3
); );
this.act曲リスト.t選択曲が変更された(true); this.act曲リスト.t選択曲が変更された(true);
break; break;
//case (int) EOrder.Level: case EOrder.Subtitle:
// this.act曲リスト.t曲リストのソート( this.act曲リスト.t曲リストのソート(
// CSongs管理.t曲リストのソート4_LEVEL順, eInst, nSortOrder, CSongs管理.tSongListSortBySubtitle, eInst, nSortOrder
// this.act曲リスト.n現在のアンカ難易度レベル );
// ); this.act曲リスト.t選択曲が変更された( true );
// this.act曲リスト.t選択曲が変更された( true ); break;
// break; case EOrder.Level:
//case (int) EOrder.BestRank: this.act曲リスト.t曲リストのソート(
// this.act曲リスト.t曲リストのソート( CSongs管理.tSongListSortByLevel, eInst, nSortOrder
// CSongs管理.t曲リストのソート5_BestRank順, eInst, nSortOrder, );
// this.act曲リスト.n現在のアンカ難易度レベル this.act曲リスト.t選択曲が変更された(true);
// ); break;
// break;
//case (int) EOrder.PlayCount:
// // this.act曲リスト.t曲リストのソート3_演奏回数の多い順( eInst, nSortOrder );
// this.act曲リスト.t曲リストのソート(
// CSongs管理.t曲リストのソート3_演奏回数の多い順, eInst, nSortOrder,
// this.act曲リスト.n現在のアンカ難易度レベル
// );
// this.act曲リスト.t選択曲が変更された( true );
// break;
//case (int) EOrder.Author:
// this.act曲リスト.t曲リストのソート(
// CSongs管理.t曲リストのソート8_アーティスト名順, eInst, nSortOrder,
// this.act曲リスト.n現在のアンカ難易度レベル
// );
// this.act曲リスト.t選択曲が変更された( true );
// break;
//case (int) EOrder.SkillPoint:
// this.act曲リスト.t曲リストのソート(
// CSongs管理.t曲リストのソート6_SkillPoint順, eInst, nSortOrder,
// this.act曲リスト.n現在のアンカ難易度レベル
// );
// this.act曲リスト.t選択曲が変更された( true );
// break;
#if TEST_SORTBGM #if TEST_SORTBGM
case (int) ESortItem.BPM: case (int) ESortItem.BPM:
this.act曲リスト.t曲リストのソート( this.act曲リスト.t曲リストのソート(
@ -101,16 +79,7 @@ namespace TJAPlayer3
this.act曲リスト.t選択曲が変更された(true); this.act曲リスト.t選択曲が変更された(true);
break; break;
#endif #endif
//ジャンル順 case EOrder.Return:
case EOrder.Genre:
this.act曲リスト.t曲リストのソート(
//CDTXMania.Songs管理.t曲リストのソート7_更新日時順, eInst, nSortOrder,
//this.act曲リスト.n現在のアンカ難易度レベル
CSongs管理.t曲リストのソート9_ジャンル順, eInst, nSortOrder, 0
);
this.act曲リスト.t選択曲が変更された( true );
break;
case EOrder.Return:
this.tDeativatePopupMenu(); this.tDeativatePopupMenu();
break; break;
default: default:
@ -153,8 +122,9 @@ namespace TJAPlayer3
{ {
Path = 0, Path = 0,
Title = 1, Title = 1,
Genre = 2, Subtitle = 2,
Return = 3 Level = 3,
Return = 4
} }
//----------------- //-----------------

View File

@ -149,6 +149,8 @@
<Compile Include="I18N\CLang_jp.cs" /> <Compile Include="I18N\CLang_jp.cs" />
<Compile Include="I18N\CLang_zh.cs" /> <Compile Include="I18N\CLang_zh.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Songs\C曲リストードComparers\C曲リストードComparerLevel.cs" />
<Compile Include="Songs\C曲リストードComparers\C曲リストードComparerSubtitle.cs" />
<Compile Include="Stages\01.StartUp\CCharacter.cs" /> <Compile Include="Stages\01.StartUp\CCharacter.cs" />
<Compile Include="Stages\01.StartUp\CPuchichara.cs" /> <Compile Include="Stages\01.StartUp\CPuchichara.cs" />
<Compile Include="Stages\07.Game\Taiko\NotesManager.cs" /> <Compile Include="Stages\07.Game\Taiko\NotesManager.cs" />

View File

@ -335,6 +335,16 @@
9101 : Difficulty 9101 : Difficulty
9102 : Level 9102 : Level
# Sort methods (092XX)
9200 : Return
9201 : Path
9202 : Title
9203 : Subtitle
9204 : Displayed difficulty
# Feature specific errors (9XXXX) # Feature specific errors (9XXXX)
90000 : "Invalid condition" error message 90000 : "Invalid condition" error message