1
0
mirror of synced 2024-11-30 18:24:32 +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)",
[9101] = "Difficulty",
[9102] = "Level",
[9200] = "Return",
[9201] = "Path",
[9202] = "Title",
[9203] = "Subtitle",
[9204] = "Displayed Level",
};
}
}

View File

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

View File

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

View File

@ -1389,7 +1389,8 @@ namespace TJAPlayer3
var comparer = new ComparerChain<C曲リストード>(
new C曲リストードComparerード種別(),
new C曲リストードComparer絶対パス(order),
new C曲リストードComparerタイトル(order));
new C曲リストードComparerタイトル(order),
new C曲リストードComparerSubtitle(order));
.Sort( comparer );
}
@ -1399,18 +1400,42 @@ namespace TJAPlayer3
var comparer = new ComparerChain<C曲リストード>(
new C曲リストードComparerード種別(),
new C曲リストードComparerタイトル(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 )
public static void tSongListSortBySubtitle(List<C曲リストード> , E楽器パート part, int order, params object[] p)
{
var comparer = new ComparerChain<C曲リストード>(
new C曲リストードComparerード種別(),
new C曲リストードComparerSubtitle(order),
new C曲リストードComparerタイトル(order),
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;
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:
return 2;
case C曲リストード.Eード種別.RANDOM:
return 3;
case C曲リストード.Eード種別.BACKBOX:
return 4;
case C曲リストード.Eード種別.BACKBOX:
return 3;
default:
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);
int defaultTable = Math.Max(0, Math.Min((int)Difficulty.Edit + 1, TJAPlayer3.ConfigIni.nDefaultCourse));

View File

@ -10,18 +10,19 @@ namespace TJAPlayer3
public CActSortSongs()
{
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( "曲名", 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(9201), 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(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( "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,..." } ) );
#if TEST_SORTBGM
lci.Add( new CItemList( "BPM", CItemBase.Eパネル種別., 0, "", "", new string[] { "300,200,...", "70,80,90,..." } ) );
#endif
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( "ジャンル", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "AC15", "AC8-14" } ) );
lci.Add( new CItemList(CLangManager.LangInstance.GetString(9200), CItemBase.Eパネル種別., 0, "", "", new string[] { "", "" } ) );
base.Initialize( lci, false, "SORT MENU" );
}
@ -57,41 +58,18 @@ namespace TJAPlayer3
);
this.act曲リスト.t選択曲が変更された(true);
break;
//case (int) EOrder.Level:
// this.act曲リスト.t曲リストのソート(
// CSongs管理.t曲リストのソート4_LEVEL順, eInst, nSortOrder,
// this.act曲リスト.n現在のアンカ難易度レベル
// );
// this.act曲リスト.t選択曲が変更された( true );
// break;
//case (int) EOrder.BestRank:
// this.act曲リスト.t曲リストのソート(
// CSongs管理.t曲リストのソート5_BestRank順, eInst, nSortOrder,
// this.act曲リスト.n現在のアンカ難易度レベル
// );
// 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;
case EOrder.Subtitle:
this.act曲リスト.t曲リストのソート(
CSongs管理.tSongListSortBySubtitle, eInst, nSortOrder
);
this.act曲リスト.t選択曲が変更された( true );
break;
case EOrder.Level:
this.act曲リスト.t曲リストのソート(
CSongs管理.tSongListSortByLevel, eInst, nSortOrder
);
this.act曲リスト.t選択曲が変更された(true);
break;
#if TEST_SORTBGM
case (int) ESortItem.BPM:
this.act曲リスト.t曲リストのソート(
@ -101,16 +79,7 @@ namespace TJAPlayer3
this.act曲リスト.t選択曲が変更された(true);
break;
#endif
//ジャンル順
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:
case EOrder.Return:
this.tDeativatePopupMenu();
break;
default:
@ -153,8 +122,9 @@ namespace TJAPlayer3
{
Path = 0,
Title = 1,
Genre = 2,
Return = 3
Subtitle = 2,
Level = 3,
Return = 4
}
//-----------------

View File

@ -149,6 +149,8 @@
<Compile Include="I18N\CLang_jp.cs" />
<Compile Include="I18N\CLang_zh.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\CPuchichara.cs" />
<Compile Include="Stages\07.Game\Taiko\NotesManager.cs" />

View File

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