diff --git a/FDK19/コード/04.グラフィック/CTexture.cs b/FDK19/コード/04.グラフィック/CTexture.cs index 540635ba..6fd51186 100644 --- a/FDK19/コード/04.グラフィック/CTexture.cs +++ b/FDK19/コード/04.グラフィック/CTexture.cs @@ -471,6 +471,10 @@ namespace FDK { this.t2D描画(device, x - (rc.Width / 2 * this.vc拡大縮小倍率.X), y, 1f, rc); } + public void t2D_DisplayImage_AnchorUpRight(Device device, int x, int y, RectangleF rc) + { + this.t2D描画(device, x - (rc.Width * this.vc拡大縮小倍率.X), y, 1f, rc); + } public void t2D拡大率考慮上中央基準描画(Device device, int x, int y) { this.t2D描画(device, x - (rc全画像.Width / 2 * this.vc拡大縮小倍率.X), y, 1f, rc全画像); diff --git a/TJAPlayer3/Common/CSkin.cs b/TJAPlayer3/Common/CSkin.cs index 8fa20aad..0025ed2c 100644 --- a/TJAPlayer3/Common/CSkin.cs +++ b/TJAPlayer3/Common/CSkin.cs @@ -2405,6 +2405,22 @@ namespace TJAPlayer3 SongSelect_Difficulty_Bar_X[i] = int.Parse(strSplit[i]); } } + else if (strCommand == "SongSelect_Branch_Text_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_Branch_Text_Offset[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_Branch_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_Branch_Offset[i] = int.Parse(strSplit[i]); + } + } else if (strCommand == "SongSelect_Difficulty_Bar_Y") { string[] strSplit = strParam.Split(','); @@ -8124,6 +8140,8 @@ namespace TJAPlayer3 public int[] SongSelect_Difficulty_Bar_X = new int[] { 255, 341, 426, 569, 712, 855, 855 }; public int[] SongSelect_Difficulty_Bar_Y = new int[] { 270, 270, 270, 270, 270, 270, 270 }; + public int[] SongSelect_Branch_Text_Offset = new int[] { 276, 6 }; + public int[] SongSelect_Branch_Offset = new int[] { 6, 6 }; public int[][] SongSelect_Difficulty_Bar_Rect = new int[][] { new int[] { 0, 0, 86, 236 }, diff --git a/TJAPlayer3/Common/Discord.cs b/TJAPlayer3/Common/Discord.cs index 50640619..006cac3c 100644 --- a/TJAPlayer3/Common/Discord.cs +++ b/TJAPlayer3/Common/Discord.cs @@ -90,10 +90,17 @@ namespace TJAPlayer3 " Tower ", " Dan " }; + string[] diffArrIcon = + { + "-", + "", + "+" + }; int level = TJAPlayer3.stage選曲.r確定された曲.nLevel[diff]; + CDTX.ELevelIcon levelIcon = TJAPlayer3.stage選曲.r確定された曲.nLevelIcon[diff]; - return (diffArr[Math.Min(diff, 6)] + "Lv." + level); + return (diffArr[Math.Min(diff, 6)] + "Lv." + level + diffArrIcon[(int)levelIcon]); } diff --git a/TJAPlayer3/Songs/CDTX.cs b/TJAPlayer3/Songs/CDTX.cs index 08f5169d..79d14e1e 100644 --- a/TJAPlayer3/Songs/CDTX.cs +++ b/TJAPlayer3/Songs/CDTX.cs @@ -1137,6 +1137,13 @@ namespace TJAPlayer3 eExpert, eMaster } + + public enum ELevelIcon + { + eMinus, + eNone, + ePlus + } public class CLine { public int n小節番号; @@ -1197,6 +1204,7 @@ namespace TJAPlayer3 public STDGBVALUE LEVEL; public bool bLyrics; public int[] LEVELtaiko = new int[(int)Difficulty.Total] { -1, -1, -1, -1, -1, -1, -1 }; + public ELevelIcon[] LEVELtaikoIcon = new ELevelIcon[(int)Difficulty.Total] { ELevelIcon.eNone, ELevelIcon.eNone, ELevelIcon.eNone, ELevelIcon.eNone, ELevelIcon.eNone, ELevelIcon.eNone, ELevelIcon.eNone }; public CSongUniqueID uniqueID; // Tower lifes @@ -5090,10 +5098,16 @@ namespace TJAPlayer3 } else if (strCommandName.Equals("LEVEL")) { - var level = (int)Convert.ToDouble(strCommandParam); - this.LEVEL.Drums = level; - this.LEVEL.Taiko = level; - this.LEVELtaiko[this.n参照中の難易度] = level; + var level_dec = Convert.ToDouble(strCommandParam); + var level = (int)level_dec; + if (strCommandParam != level.ToString()) + { + int frac_part = Int32.Parse(level_dec.ToString("0.0", CultureInfo.InvariantCulture).Split('.')[1]); + this.LEVELtaikoIcon[this.n参照中の難易度] = (frac_part > 5) ? ELevelIcon.ePlus : ELevelIcon.eMinus; + } + this.LEVEL.Drums = (int)level; + this.LEVEL.Taiko = (int)level; + this.LEVELtaiko[this.n参照中の難易度] = (int)level; } else if (strCommandName.Equals("LIFE")) { diff --git a/TJAPlayer3/Songs/CSong管理.cs b/TJAPlayer3/Songs/CSong管理.cs index 81708a89..b572c43e 100644 --- a/TJAPlayer3/Songs/CSong管理.cs +++ b/TJAPlayer3/Songs/CSong管理.cs @@ -230,9 +230,10 @@ namespace TJAPlayer3 c曲リストノード.strSelectBGPath = $@"{fileinfo.FullName}\..\{dtx.SELECTBG}"; if (!File.Exists(c曲リストノード.strSelectBGPath)) c曲リストノード.strSelectBGPath = null; c曲リストノード.nLevel = dtx.LEVELtaiko; + c曲リストノード.nLevelIcon = dtx.LEVELtaikoIcon; - // LIFE here - c曲リストノード.nLife = dtx.LIFE; + // LIFE here + c曲リストノード.nLife = dtx.LIFE; c曲リストノード.nTowerType = dtx.TOWERTYPE; @@ -461,8 +462,9 @@ namespace TJAPlayer3 } - c曲リストノード.nLevel = dtx.LEVELtaiko; - c曲リストノード.uniqueId = dtx.uniqueID; + c曲リストノード.nLevel = dtx.LEVELtaiko; + c曲リストノード.nLevelIcon = dtx.LEVELtaikoIcon; + c曲リストノード.uniqueId = dtx.uniqueID; CSongDict.tAddSongNode(c曲リストノード.uniqueId, c曲リストノード); @@ -912,24 +914,16 @@ namespace TJAPlayer3 c曲リストノード.arスコア[ i ].譜面情報.SongVol = cdtx.SongVol; c曲リストノード.arスコア[ i ].譜面情報.SongLoudnessMetadata = cdtx.SongLoudnessMetadata; c曲リストノード.arスコア[ i ].譜面情報.nデモBGMオフセット = cdtx.nデモBGMオフセット; - c曲リストノード.arスコア[ i ].譜面情報.b譜面分岐[0] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[ 0 ]; - c曲リストノード.arスコア[ i ].譜面情報.b譜面分岐[1] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[ 1 ]; - c曲リストノード.arスコア[ i ].譜面情報.b譜面分岐[2] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[ 2 ]; - c曲リストノード.arスコア[ i ].譜面情報.b譜面分岐[3] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[ 3 ]; - c曲リストノード.arスコア[i].譜面情報.b譜面分岐[4] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[4]; - c曲リストノード.arスコア[i].譜面情報.b譜面分岐[5] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[5]; - c曲リストノード.arスコア[i].譜面情報.b譜面分岐[6] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[6]; c曲リストノード.arスコア[ i ].譜面情報.strサブタイトル = cdtx.SUBTITLE; - c曲リストノード.arスコア[ i ].譜面情報.nレベル[0] = cdtx.LEVELtaiko[0]; - c曲リストノード.arスコア[ i ].譜面情報.nレベル[1] = cdtx.LEVELtaiko[1]; - c曲リストノード.arスコア[ i ].譜面情報.nレベル[2] = cdtx.LEVELtaiko[2]; - c曲リストノード.arスコア[ i ].譜面情報.nレベル[3] = cdtx.LEVELtaiko[3]; - c曲リストノード.arスコア[ i ].譜面情報.nレベル[4] = cdtx.LEVELtaiko[4]; - c曲リストノード.arスコア[i].譜面情報.nレベル[5] = cdtx.LEVELtaiko[5]; - c曲リストノード.arスコア[i].譜面情報.nレベル[6] = cdtx.LEVELtaiko[6]; - - // Tower Lives - c曲リストノード.arスコア[i].譜面情報.nLife = cdtx.LIFE; + for (int k = 0; k < (int)Difficulty.Total; k++) + { + c曲リストノード.arスコア[i].譜面情報.b譜面分岐[k] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[k]; + c曲リストノード.arスコア[i].譜面情報.nレベル[k] = cdtx.LEVELtaiko[k]; + c曲リストノード.arスコア[i].譜面情報.nLevelIcon[k] = cdtx.LEVELtaikoIcon[k]; + } + + // Tower Lives + c曲リストノード.arスコア[i].譜面情報.nLife = cdtx.LIFE; c曲リストノード.arスコア[i].譜面情報.nTowerType = cdtx.TOWERTYPE; @@ -1445,264 +1439,13 @@ namespace TJAPlayer3 var comparer = new ComparerChain( new C曲リストノードComparerノード種別(), new C曲リストノードComparerLevel(order), + new C曲リストノードComparerLevelIcon(order), new C曲リストノードComparerタイトル(order), new C曲リストノードComparerSubtitle(order), new C曲リストノードComparer絶対パス(order)); ノードリスト.Sort(comparer); } - - /// - /// - /// - /// - /// - /// 1=Ascend -1=Descend - public static void t曲リストのソート3_演奏回数の多い順( List ノードリスト, E楽器パート part, int order, params object[] p ) - { - order = -order; - int nL12345 = (int) p[ 0 ]; - if ( part != E楽器パート.UNKNOWN ) - { - ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 ) - { - #region [ 共通処理 ] - if( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) ) - { - return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス ); - } - #endregion - int nSumPlayCountN1 = 0, nSumPlayCountN2 = 0; -// for( int i = 0; i <(int)Difficulty.Total; i++ ) -// { - if( n1.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 += n1.arスコア[ nL12345 ].譜面情報.演奏回数[ (int) part ]; - } - if( n2.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN2 += n2.arスコア[ nL12345 ].譜面情報.演奏回数[ (int) part ]; - } -// } - var num = nSumPlayCountN2 - nSumPlayCountN1; - if( num != 0 ) - { - return order * num; - } - return order * n1.strタイトル.CompareTo( n2.strタイトル ); - } ); - foreach ( C曲リストノード c曲リストノード in ノードリスト ) - { - int nSumPlayCountN1 = 0; -// for ( int i = 0; i < 5; i++ ) -// { - if ( c曲リストノード.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 += c曲リストノード.arスコア[ nL12345 ].譜面情報.演奏回数[ (int) part ]; - } -// } -// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル ); - } - } - } - public static void t曲リストのソート4_LEVEL順( List ノードリスト, E楽器パート part, int order, params object[] p ) - { - order = -order; - int nL12345 = (int)p[ 0 ]; - if ( part != E楽器パート.UNKNOWN ) - { - ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 ) - { - #region [ 共通処理 ] - if ( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) ) - { - return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス ); - } - #endregion - int nSumPlayCountN1 = 0, nSumPlayCountN2 = 0; - if ( n1.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 = n1.nLevel[ nL12345 ]; - } - if ( n2.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN2 = n2.nLevel[ nL12345 ]; - } - var num = nSumPlayCountN2 - nSumPlayCountN1; - if ( num != 0 ) - { - return order * num; - } - return order * n1.strタイトル.CompareTo( n2.strタイトル ); - } ); - foreach ( C曲リストノード c曲リストノード in ノードリスト ) - { - int nSumPlayCountN1 = 0; - if ( c曲リストノード.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 = c曲リストノード.nLevel[ nL12345 ]; - } -// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル ); - } - } - } - public static void t曲リストのソート5_BestRank順( List ノードリスト, E楽器パート part, int order, params object[] p ) - { - order = -order; - int nL12345 = (int) p[ 0 ]; - if ( part != E楽器パート.UNKNOWN ) - { - ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 ) - { - #region [ 共通処理 ] - if ( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) ) - { - return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス ); - } - #endregion - int nSumPlayCountN1 = 0, nSumPlayCountN2 = 0; - bool isFullCombo1 = false, isFullCombo2 = false; - if ( n1.arスコア[ nL12345 ] != null ) - { - isFullCombo1 = n1.arスコア[ nL12345 ].譜面情報.フルコンボ[ (int) part ]; - nSumPlayCountN1 = n1.arスコア[ nL12345 ].譜面情報.最大ランク[ (int) part ]; - } - if ( n2.arスコア[ nL12345 ] != null ) - { - isFullCombo2 = n2.arスコア[ nL12345 ].譜面情報.フルコンボ[ (int) part ]; - nSumPlayCountN2 = n2.arスコア[ nL12345 ].譜面情報.最大ランク[ (int) part ]; - } - if ( isFullCombo1 ^ isFullCombo2 ) - { - if ( isFullCombo1 ) return order; else return -order; - } - var num = nSumPlayCountN2 - nSumPlayCountN1; - if ( num != 0 ) - { - return order * num; - } - return order * n1.strタイトル.CompareTo( n2.strタイトル ); - } ); - foreach ( C曲リストノード c曲リストノード in ノードリスト ) - { - int nSumPlayCountN1 = 0; - if ( c曲リストノード.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.最大ランク[ (int) part ]; - } -// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル ); - } - } - } - public static void t曲リストのソート6_SkillPoint順( List ノードリスト, E楽器パート part, int order, params object[] p ) - { - order = -order; - int nL12345 = (int) p[ 0 ]; - if ( part != E楽器パート.UNKNOWN ) - { - ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 ) - { - #region [ 共通処理 ] - if ( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) ) - { - return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス ); - } - #endregion - double nSumPlayCountN1 = 0, nSumPlayCountN2 = 0; - if ( n1.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 = n1.arスコア[ nL12345 ].譜面情報.最大スキル[ (int) part ]; - } - if ( n2.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN2 = n2.arスコア[ nL12345 ].譜面情報.最大スキル[ (int) part ]; - } - double d = nSumPlayCountN2 - nSumPlayCountN1; - if ( d != 0 ) - { - return order * System.Math.Sign(d); - } - return order * n1.strタイトル.CompareTo( n2.strタイトル ); - } ); - foreach ( C曲リストノード c曲リストノード in ノードリスト ) - { - double nSumPlayCountN1 = 0; - if ( c曲リストノード.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.最大スキル[ (int) part ]; - } -// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル ); - } - } - } - public static void t曲リストのソート7_更新日時順( List ノードリスト, E楽器パート part, int order, params object[] p ) - { - int nL12345 = (int) p[ 0 ]; - if ( part != E楽器パート.UNKNOWN ) - { - ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 ) - { - #region [ 共通処理 ] - if ( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) ) - { - return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス ); - } - #endregion - DateTime nSumPlayCountN1 = DateTime.Parse("0001/01/01 12:00:01.000"); - DateTime nSumPlayCountN2 = DateTime.Parse("0001/01/01 12:00:01.000"); - if ( n1.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 = n1.arスコア[ nL12345 ].ファイル情報.最終更新日時; - } - if ( n2.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN2 = n2.arスコア[ nL12345 ].ファイル情報.最終更新日時; - } - int d = nSumPlayCountN1.CompareTo(nSumPlayCountN2); - if ( d != 0 ) - { - return order * System.Math.Sign( d ); - } - return order * n1.strタイトル.CompareTo( n2.strタイトル ); - } ); - foreach ( C曲リストノード c曲リストノード in ノードリスト ) - { - DateTime nSumPlayCountN1 = DateTime.Parse( "0001/01/01 12:00:01.000" ); - if ( c曲リストノード.arスコア[ nL12345 ] != null ) - { - nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].ファイル情報.最終更新日時; - } -// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル ); - } - } - } - public static void t曲リストのソート8_アーティスト名順( List ノードリスト, E楽器パート part, int order, params object[] p ) - { - int nL12345 = (int) p[ 0 ]; - ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 ) - { - string strAuthorN1 = ""; - string strAuthorN2 = ""; - if (n1.arスコア[ nL12345 ] != null ) { - strAuthorN1 = n1.arスコア[ nL12345 ].譜面情報.アーティスト名; - } - if ( n2.arスコア[ nL12345 ] != null ) - { - strAuthorN2 = n2.arスコア[ nL12345 ].譜面情報.アーティスト名; - } - - return order * strAuthorN1.CompareTo( strAuthorN2 ); - } ); - foreach ( C曲リストノード c曲リストノード in ノードリスト ) - { - string s = ""; - if ( c曲リストノード.arスコア[ nL12345 ] != null ) - { - s = c曲リストノード.arスコア[ nL12345 ].譜面情報.アーティスト名; - } -Debug.WriteLine( s + ":" + c曲リストノード.strタイトル ); - } - } public static void t曲リストのソート9_ジャンル順(List ノードリスト, E楽器パート part, int order, params object[] p) { diff --git a/TJAPlayer3/Songs/Cスコア.cs b/TJAPlayer3/Songs/Cスコア.cs index ecbedd84..9572c7cd 100644 --- a/TJAPlayer3/Songs/Cスコア.cs +++ b/TJAPlayer3/Songs/Cスコア.cs @@ -97,6 +97,7 @@ namespace TJAPlayer3 public int[] nレベル; public int[] nクリア; //0:未クリア 1:クリア 2:フルコンボ 3:ドンダフルコンボ public int[] nスコアランク; //0:未取得 1:白粋 2:銅粋 3:銀粋 4:金雅 5:桃雅 6:紫雅 7:虹極 + public CDTX.ELevelIcon[] nLevelIcon; // Tower lifes public int nLife; @@ -336,8 +337,9 @@ namespace TJAPlayer3 this.譜面情報.ハイスコア = 0; this.譜面情報.nハイスコア = new int[(int)Difficulty.Total]; this.譜面情報.strサブタイトル = ""; - this.譜面情報.nレベル = new int[(int)Difficulty.Total] { -1, -1, -1, -1, -1, -1, -1}; - this.譜面情報.nクリア = new int[5]; + this.譜面情報.nレベル = new int[(int)Difficulty.Total] { -1, -1, -1, -1, -1, -1, -1}; + this.譜面情報.nLevelIcon = new CDTX.ELevelIcon[(int)Difficulty.Total] { CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone }; + this.譜面情報.nクリア = new int[5]; this.譜面情報.nスコアランク = new int[5]; for (int i = 0; i < 5; i++) diff --git a/TJAPlayer3/Songs/C曲リストノード.cs b/TJAPlayer3/Songs/C曲リストノード.cs index 07c2791f..6543baf2 100644 --- a/TJAPlayer3/Songs/C曲リストノード.cs +++ b/TJAPlayer3/Songs/C曲リストノード.cs @@ -76,6 +76,7 @@ namespace TJAPlayer3 public string strSkinPath = ""; // #28195 2012.5.4 yyagi; box.defでのスキン切り替え対応 public bool bBranch = false; public int[] nLevel = new int[(int)Difficulty.Total]{ 0, 0, 0, 0, 0, 0, 0 }; + public CDTX.ELevelIcon[] nLevelIcon = new CDTX.ELevelIcon[(int)Difficulty.Total] {CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone }; // Tower Lives public int nLife = 5; diff --git a/TJAPlayer3/Songs/C曲リストノードComparers/C曲リストノードComparerLevelIcon.cs b/TJAPlayer3/Songs/C曲リストノードComparers/C曲リストノードComparerLevelIcon.cs new file mode 100644 index 00000000..a5d70423 --- /dev/null +++ b/TJAPlayer3/Songs/C曲リストノードComparers/C曲リストノードComparerLevelIcon.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; + +namespace TJAPlayer3.C曲リストノードComparers +{ + internal sealed class C曲リストノードComparerLevelIcon : IComparer + { + private readonly int _order; + + public C曲リストノードComparerLevelIcon(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 (int)n1.nLevelIcon[TJAPlayer3.stage選曲.act曲リスト.tFetchDifficulty(n1)]; + } + } +} \ No newline at end of file diff --git a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs index 4391a661..8a8d1d10 100644 --- a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs +++ b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs @@ -227,6 +227,10 @@ namespace TJAPlayer3 SongSelect_Bar_Select = TxC(SONGSELECT + @"Bar_Select.png"); SongSelect_Level_Number = TxC(SONGSELECT + @"Level_Number.png"); SongSelect_Level_Number_Big = TxC(SONGSELECT + @"Level_Number_Big.png"); + SongSelect_Level_Number_Big_Colored = TxC(SONGSELECT + @"Level_Number_Big_Colored.png"); + SongSelect_Level_Number_Colored = TxC(SONGSELECT + @"Level_Number_Colored.png"); + SongSelect_Level_Number_Big_Icon = TxC(SONGSELECT + @"Level_Number_Big_Icon.png"); + SongSelect_Level_Number_Icon = TxC(SONGSELECT + @"Level_Number_Icon.png"); SongSelect_Bpm_Number = TxC(SONGSELECT + @"Bpm_Number.png"); SongSelect_Credit = TxC(SONGSELECT + @"Credit.png"); SongSelect_Timer = TxC(SONGSELECT + @"Timer.png"); @@ -298,6 +302,8 @@ namespace TJAPlayer3 #region [ 難易度選択画面 ] Difficulty_Bar = TxC(SONGSELECT + @"Difficulty_Select\Difficulty_Bar.png"); Difficulty_Number = TxC(SONGSELECT + @"Difficulty_Select\Difficulty_Number.png"); + Difficulty_Number_Colored = TxC(SONGSELECT + @"Difficulty_Select\Difficulty_Number_Colored.png"); + Difficulty_Number_Icon = TxC(SONGSELECT + @"Difficulty_Select\Difficulty_Number_Icon.png"); Difficulty_Star = TxC(SONGSELECT + @"Difficulty_Select\Difficulty_Star.png"); Difficulty_Crown = TxC(SONGSELECT + @"Difficulty_Select\Difficulty_Crown.png"); Difficulty_Option = TxC($"{SONGSELECT}Difficulty_Select/Difficulty_Option.png"); @@ -1879,7 +1885,11 @@ namespace TJAPlayer3 SongSelect_Bar_Genre_Random, SongSelect_Bar_Genre_RecentryPlaySong, SongSelect_Level_Number, + SongSelect_Level_Number_Colored, + SongSelect_Level_Number_Icon, SongSelect_Level_Number_Big, + SongSelect_Level_Number_Big_Colored, + SongSelect_Level_Number_Big_Icon, SongSelect_Bpm_Number, SongSelect_Bar_Select, SongSelect_Bar_Genre_Overlay, @@ -1913,6 +1923,8 @@ namespace TJAPlayer3 #region [ 難易度選択画面 ] public CTexture Difficulty_Bar; public CTexture Difficulty_Number; + public CTexture Difficulty_Number_Colored; + public CTexture Difficulty_Number_Icon; public CTexture Difficulty_Star; public CTexture Difficulty_Crown; public CTexture Difficulty_Option; diff --git a/TJAPlayer3/Stages/05.SongSelect/CActSelectPresound.cs b/TJAPlayer3/Stages/05.SongSelect/CActSelectPresound.cs index d27eb0f0..ef1064dd 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CActSelectPresound.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CActSelectPresound.cs @@ -170,6 +170,7 @@ namespace TJAPlayer3 strPreviewFilename = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.strBGMファイル名; if(TJAPlayer3.ConfigIni.bBGM音を発声する) this.sound = TJAPlayer3.Sound管理.tサウンドを生成する( strPreviewFilename, ESoundGroup.SongPreview ); + if (this.sound == null) return; // 2018-08-27 twopointzero - DO attempt to load (or queue scanning) loudness metadata here. // Initialization, song enumeration, and/or interactions may have diff --git a/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs b/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs index 68d8a619..0d86d06e 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs @@ -16,6 +16,7 @@ using Rectangle = System.Drawing.Rectangle; using Point = System.Drawing.Point; using Color = System.Drawing.Color; using RectangleF = System.Drawing.RectangleF; + namespace TJAPlayer3 { internal class CActSelect曲リスト : CActivity @@ -499,7 +500,9 @@ namespace TJAPlayer3 this.stバー情報[index].strジャンル = song.strジャンル; this.stバー情報[index].strサブタイトル = song.strサブタイトル; this.stバー情報[index].ar難易度 = song.nLevel; - for (int f = 0; f < (int)Difficulty.Total; f++) + this.stバー情報[index].nLevelIcon = song.nLevelIcon; + + for (int f = 0; f < (int)Difficulty.Total; f++) { if (song.arスコア[f] != null) this.stバー情報[index].b分岐 = song.arスコア[f].譜面情報.b譜面分岐; @@ -637,7 +640,8 @@ namespace TJAPlayer3 this.stバー情報[index].strサブタイトル = song.strサブタイトル; this.stバー情報[index].strジャンル = song.strジャンル; this.stバー情報[index].ar難易度 = song.nLevel; - for (int f = 0; f < (int)Difficulty.Total; f++) + this.stバー情報[index].nLevelIcon = song.nLevelIcon; + for (int f = 0; f < (int)Difficulty.Total; f++) { if (song.arスコア[f] != null) this.stバー情報[index].b分岐 = song.arスコア[f].譜面情報.b譜面分岐; @@ -1811,7 +1815,9 @@ namespace TJAPlayer3 { TJAPlayer3.Tx.SongSelect_Frame_Score[0].Opacity = difSelectOpacity; TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = difSelectOpacity; - if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difSelectOpacity; + TJAPlayer3.Tx.SongSelect_Level_Number_Icon?.tUpdateOpacity(difSelectOpacity); + TJAPlayer3.Tx.SongSelect_Level_Number_Colored?.tUpdateOpacity(difSelectOpacity); + if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difSelectOpacity; } else if (ctDifficultyIn.n現在の値 >= 1000) { @@ -1819,7 +1825,9 @@ namespace TJAPlayer3 TJAPlayer3.Tx.SongSelect_Frame_Score[0].Opacity = difInOpacity; TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = difInOpacity; - if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difInOpacity; + TJAPlayer3.Tx.SongSelect_Level_Number_Icon?.tUpdateOpacity(difInOpacity); + TJAPlayer3.Tx.SongSelect_Level_Number_Colored?.tUpdateOpacity(difInOpacity); + if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difInOpacity; } #endregion @@ -1837,7 +1845,10 @@ namespace TJAPlayer3 if (avaliable) { t小文字表示(TJAPlayer3.Skin.SongSelect_Level_Number_X[displayingDiff], TJAPlayer3.Skin.SongSelect_Level_Number_Y[displayingDiff], - TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i]); + TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i], + i, + TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nLevelIcon[i] + ); if (TJAPlayer3.Tx.SongSelect_Level != null) { @@ -1852,7 +1863,18 @@ namespace TJAPlayer3 new RectangleF(level_width * i, 0, level_width, level_height)); } } - } + + if (TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.b譜面分岐[i]) + { + TJAPlayer3.Tx.SongSelect_Branch?.tUpdateOpacity(TJAPlayer3.Tx.SongSelect_Frame_Score[0].Opacity); + TJAPlayer3.Tx.SongSelect_Branch?.t2D描画( + TJAPlayer3.app.Device, + TJAPlayer3.Skin.SongSelect_Frame_Score_X[displayingDiff] + TJAPlayer3.Skin.SongSelect_Branch_Offset[0], + TJAPlayer3.Skin.SongSelect_Frame_Score_Y[displayingDiff] + TJAPlayer3.Skin.SongSelect_Branch_Offset[1] + ); + } + + } #endregion @@ -1908,7 +1930,9 @@ namespace TJAPlayer3 { TJAPlayer3.Tx.SongSelect_Frame_Score[1].Opacity = difSelectOpacity; TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = difSelectOpacity; - if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difSelectOpacity; + TJAPlayer3.Tx.SongSelect_Level_Number_Icon?.tUpdateOpacity(difSelectOpacity); + TJAPlayer3.Tx.SongSelect_Level_Number_Colored?.tUpdateOpacity(difSelectOpacity); + if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difSelectOpacity; } else if (ctDifficultyIn.n現在の値 >= 1000) { @@ -1916,7 +1940,9 @@ namespace TJAPlayer3 TJAPlayer3.Tx.SongSelect_Frame_Score[1].Opacity = difInOpacity; TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = difInOpacity; - if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difInOpacity; + TJAPlayer3.Tx.SongSelect_Level_Number_Icon?.tUpdateOpacity(difInOpacity); + TJAPlayer3.Tx.SongSelect_Level_Number_Colored?.tUpdateOpacity(difInOpacity); + if (TJAPlayer3.Tx.SongSelect_Level != null) TJAPlayer3.Tx.SongSelect_Level.Opacity = difInOpacity; } #endregion @@ -1931,7 +1957,10 @@ namespace TJAPlayer3 if (avaliable) { t小文字表示(TJAPlayer3.Skin.SongSelect_Level_Number_X[(diff - 5)], TJAPlayer3.Skin.SongSelect_Level_Number_Y[(diff - 5)], - TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[diff]); + TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[diff], + diff, + TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nLevelIcon[diff] + ); if (TJAPlayer3.Tx.SongSelect_Level != null) { @@ -2451,6 +2480,7 @@ namespace TJAPlayer3 public bool BoxCharaChanged; public int[] ar難易度; + public CDTX.ELevelIcon[] nLevelIcon; public bool[] b分岐; public string strジャンル; public string strサブタイトル; @@ -2723,74 +2753,8 @@ namespace TJAPlayer3 overlay.vc拡大縮小倍率.Y = 1.0f; overlay.t2D描画(TJAPlayer3.app.Device, x - (texture_xoffset / 2) - moveX_xoffset + moveX + (width * 2), y + (height * 2) + move, new Rectangle(width * 2, height * 2, width, height)); - /* - if (fullScaleOverlay) - { - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D描画(TJAPlayer3.app.Device, x - overlay_xoffset - moveX, y - move, new Rectangle(0, 0, width, height)); - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.Y = 1.0f + ((move / (float)height) * 2.0f); - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D描画(TJAPlayer3.app.Device, x - overlay_xoffset - moveX, y + height - move, new Rectangle(0, height, width, height)); - } - else - { - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D描画(TJAPlayer3.app.Device, x - overlay_xoffset - moveX, y, new Rectangle(0, 0, width, height)); - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.Y = 1.0f + (move / (float)height); - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D描画(TJAPlayer3.app.Device, x - overlay_xoffset - moveX, y + height, new Rectangle(0, height, width, height)); - } - - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.Y = 1.0f; - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D描画(TJAPlayer3.app.Device, x - overlay_xoffset - moveX, y + (height * 2) + move, new Rectangle(0, height * 2, width, height)); - */ } - /* - if (ctBoxOpen.n現在の値 >= 1300 && ctBoxOpen.n現在の値 <= 1940) - { - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.X = 1.0f - (float)Math.Sin(((ctBoxOpen.n現在の値 - 1300) * 0.28125f) * (Math.PI / 180)) * 1.0f; - texture.vc拡大縮小倍率.X = 1.0f - (float)Math.Sin(((ctBoxOpen.n現在の値 - 1300) * 0.28125f) * (Math.PI / 180)) * 1.0f; - } - else - { - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.X = 1.0f; - texture.vc拡大縮小倍率.X = 1.0f; - } - - texture.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 326 - BarAnimeCount, new Rectangle(0, 0, 632, 21)); - - texture.vc拡大縮小倍率.Y = BarAnimeCount == 0 ? 1.0f : 1.0f + (float)(BarAnimeCount) / 23.6f; - texture.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 360, new Rectangle(0, 21, 632, 48)); - texture.vc拡大縮小倍率.Y = 1.0f; - - texture.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 394 + BarAnimeCount, new Rectangle(0, 69, 632, 23)); - - if (drawOverlay) - { - if (BarAnimeCount != 0) - { - if (fullScaleOverlay) - { - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 326 - BarAnimeCount, new Rectangle(0, 0, 632, 21)); - - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.Y = BarAnimeCount == 0 ? 1.0f : 1.0f + (float)(BarAnimeCount) / 24.5f; - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 359, new Rectangle(0, 21, 632, 48)); - } - else - { - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 326, new Rectangle(0, 0, 632, 21)); - - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.Y = BarAnimeCount == 0 ? 1.0f : 1.0f + (float)(BarAnimeCount) / 50; - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D拡大率考慮上中央基準描画(TJAPlayer3.app.Device, 640, 336, new Rectangle(0, 21, 632, 48)); - } - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.vc拡大縮小倍率.Y = 1.0f; - - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 394 + BarAnimeCount, new Rectangle(0, 69, 632, 23)); - } - else - { - TJAPlayer3.Tx.SongSelect_Bar_Genre_Overlay.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 640, 360, new Rectangle(0, 0, 632, 92)); - } - }*/ - - } private Eバー種別 e曲のバー種別を返す( C曲リストノード song ) @@ -2883,9 +2847,10 @@ namespace TJAPlayer3 this.stバー情報[ i ].eバー種別 = this.e曲のバー種別を返す( song ); this.stバー情報[ i ].strサブタイトル = song.strサブタイトル; - this.stバー情報[ i ].ar難易度 = song.nLevel; - - for( int f = 0; f < (int)Difficulty.Total; f++ ) + this.stバー情報[ i ].ar難易度 = song.nLevel; + this.stバー情報[i].nLevelIcon = song.nLevelIcon; + + for ( int f = 0; f < (int)Difficulty.Total; f++ ) { if( song.arスコア[ f ] != null ) this.stバー情報[ i ].b分岐 = song.arスコア[ f ].譜面情報.b譜面分岐; @@ -2965,7 +2930,9 @@ namespace TJAPlayer3 TJAPlayer3.Tx.TowerResult_ScoreRankEffect.Opacity = opct; TJAPlayer3.Tx.DanResult_Rank.Opacity = opct; TJAPlayer3.Tx.SongSelect_Level_Number_Big?.tUpdateOpacity(opct); - for (int i = 0; i < TJAPlayer3.Tx.SongSelect_Song_Panel.Length; i++) + TJAPlayer3.Tx.SongSelect_Level_Number_Big_Colored?.tUpdateOpacity(opct); + TJAPlayer3.Tx.SongSelect_Level_Number_Big_Icon?.tUpdateOpacity(opct); + for (int i = 0; i < TJAPlayer3.Tx.SongSelect_Song_Panel.Length; i++) { TJAPlayer3.Tx.SongSelect_Song_Panel[i]?.tUpdateOpacity(opct); } @@ -3394,10 +3361,29 @@ namespace TJAPlayer3 public int ptX; } private STレベル数字[] st小文字位置 = new STレベル数字[ 10 ]; - private void t小文字表示(int x, int y, int num) + + public void tDisplayLevelIcon(int x, int y, CDTX.ELevelIcon icon, CTexture iconTex = null) + { + var _tex = (iconTex != null) ? iconTex : TJAPlayer3.Tx.SongSelect_Level_Number_Big_Icon; + if (icon != CDTX.ELevelIcon.eNone && + _tex != null) + { + var __width = _tex.sz画像サイズ.Width / 3; + var __height = _tex.sz画像サイズ.Height; + _tex.t2D_DisplayImage_AnchorUpRight( + TJAPlayer3.app.Device, + x, + y, + new Rectangle(__width * (int)icon, 0, __width, __height) + ); + } + } + + private void t小文字表示(int x, int y, int num, int diff, CDTX.ELevelIcon icon) { int[] nums = C変換.SeparateDigits(num); - for (int j = 0; j < nums.Length; j++) + float[] icon_coords = new float[2] { -999, -999 }; + for (int j = 0; j < nums.Length; j++) { float offset = j - (nums.Length / 2.0f); float _x = x - (TJAPlayer3.Skin.SongSelect_Level_Number_Interval[0] * offset); @@ -3406,25 +3392,38 @@ namespace TJAPlayer3 float width = TJAPlayer3.Tx.SongSelect_Level_Number.sz画像サイズ.Width / 10.0f; float height = TJAPlayer3.Tx.SongSelect_Level_Number.sz画像サイズ.Height; - TJAPlayer3.Tx.SongSelect_Level_Number.vc拡大縮小倍率.X = 1.0f / (1.0f + (0.25f * (nums.Length - 1))); + var _expand_ratio = 1.0f / (1.0f + (0.25f * (nums.Length - 1))); + TJAPlayer3.Tx.SongSelect_Level_Number.vc拡大縮小倍率.X = _expand_ratio; - TJAPlayer3.Tx.SongSelect_Level_Number.t2D描画(TJAPlayer3.app.Device, _x, _y, new RectangleF(width * nums[j], 0, width, height)); - } - } + icon_coords[0] = Math.Max(icon_coords[0], _x + width * _expand_ratio); + icon_coords[1] = _y; + + TJAPlayer3.Tx.SongSelect_Level_Number.t2D描画(TJAPlayer3.app.Device, _x, _y, new RectangleF(width * nums[j], 0, width, height)); + + if (TJAPlayer3.Tx.SongSelect_Level_Number_Colored != null) + { + TJAPlayer3.Tx.SongSelect_Level_Number_Colored.vc拡大縮小倍率.X = _expand_ratio; + TJAPlayer3.Tx.SongSelect_Level_Number_Colored.color4 = C変換.ColorToColor4(TJAPlayer3.Skin.SongSelect_Difficulty_Colors[diff]); + TJAPlayer3.Tx.SongSelect_Level_Number_Colored.t2D描画(TJAPlayer3.app.Device, _x, _y, new RectangleF(width * nums[j], 0, width, height)); + } + } + tDisplayLevelIcon((int)icon_coords[0], (int)icon_coords[1], icon, TJAPlayer3.Tx.SongSelect_Level_Number_Icon); + } public void tPrintLevelNumberBig(int x, int y, C曲リストノード song) { if (song == null) return; int difficulty = tFetchDifficulty(song); int num = song.nLevel[difficulty]; + var icon = song.nLevelIcon[difficulty]; if (TJAPlayer3.Tx.SongSelect_Level_Number_Big == null || num < 0) return; int[] nums = C変換.SeparateDigits(num); float _ratio = 1f; + float[] icon_coords = new float[2] { -999, -999 }; if (TJAPlayer3.Tx.SongSelect_Level_Number != null) { _ratio = TJAPlayer3.Tx.SongSelect_Level_Number_Big.szテクスチャサイズ.Width / TJAPlayer3.Tx.SongSelect_Level_Number.szテクスチャサイズ.Width; - } for (int j = 0; j < nums.Length; j++) { @@ -3435,11 +3434,23 @@ namespace TJAPlayer3 float width = TJAPlayer3.Tx.SongSelect_Level_Number_Big.sz画像サイズ.Width / 10.0f; float height = TJAPlayer3.Tx.SongSelect_Level_Number_Big.sz画像サイズ.Height; - TJAPlayer3.Tx.SongSelect_Level_Number_Big.vc拡大縮小倍率.X = 1.0f / (1.0f + (0.25f * (nums.Length - 1))); - TJAPlayer3.Tx.SongSelect_Level_Number_Big.color4 = C変換.ColorToColor4(TJAPlayer3.Skin.SongSelect_Difficulty_Colors[difficulty]); - + var _expand_ratio = 1.0f / (1.0f + (0.25f * (nums.Length - 1))); + TJAPlayer3.Tx.SongSelect_Level_Number_Big.vc拡大縮小倍率.X = _expand_ratio; TJAPlayer3.Tx.SongSelect_Level_Number_Big.t2D描画(TJAPlayer3.app.Device, _x, _y, new RectangleF(width * nums[j], 0, width, height)); + + icon_coords[0] = Math.Max(icon_coords[0], _x + width * _expand_ratio); + icon_coords[1] = _y; + + if (TJAPlayer3.Tx.SongSelect_Level_Number_Big_Colored != null) + { + TJAPlayer3.Tx.SongSelect_Level_Number_Big_Colored.vc拡大縮小倍率.X = _expand_ratio; + TJAPlayer3.Tx.SongSelect_Level_Number_Big_Colored.color4 = C変換.ColorToColor4(TJAPlayer3.Skin.SongSelect_Difficulty_Colors[difficulty]); + TJAPlayer3.Tx.SongSelect_Level_Number_Big_Colored.t2D描画(TJAPlayer3.app.Device, _x, _y, new RectangleF(width * nums[j], 0, width, height)); + } + } + tDisplayLevelIcon((int)icon_coords[0], (int)icon_coords[1], icon); + } public int tFetchDifficulty(C曲リストノード song) diff --git a/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs b/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs index eccdd939..de3bbd94 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs @@ -471,8 +471,13 @@ namespace TJAPlayer3 */ } - if (level > 0) - t小文字表示(TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i], TJAPlayer3.Skin.SongSelect_Difficulty_Number_X[i], TJAPlayer3.Skin.SongSelect_Difficulty_Number_Y[i]); + if (level >= 0) + t小文字表示(TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i], + TJAPlayer3.Skin.SongSelect_Difficulty_Number_X[i], + TJAPlayer3.Skin.SongSelect_Difficulty_Number_Y[i], + i, + TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nLevelIcon[i] + ); for (int g = 0; g < 10; g++) { @@ -488,6 +493,13 @@ namespace TJAPlayer3 } } + + if (TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.b譜面分岐[i]) + TJAPlayer3.Tx.SongSelect_Branch_Text?.t2D描画( + TJAPlayer3.app.Device, + TJAPlayer3.Skin.SongSelect_Difficulty_Bar_X[i + 2] + TJAPlayer3.Skin.SongSelect_Branch_Text_Offset[0], + TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Y[i + 2] + TJAPlayer3.Skin.SongSelect_Branch_Text_Offset[1] + ); } this.txTitle.t2D中心基準描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Select_Title[0], TJAPlayer3.Skin.SongSelect_Difficulty_Select_Title[1]); @@ -593,9 +605,10 @@ namespace TJAPlayer3 } private STレベル数字[] st小文字位置 = new STレベル数字[10]; - private void t小文字表示(int num, float x, float y) + private void t小文字表示(int num, float x, float y, int diff, CDTX.ELevelIcon icon) { int[] nums = C変換.SeparateDigits(num); + float[] icon_coords = new float[2] { -999, -999 }; for (int j = 0; j < nums.Length; j++) { float offset = j - (nums.Length / 2.0f); @@ -605,8 +618,18 @@ namespace TJAPlayer3 int width = TJAPlayer3.Tx.Difficulty_Number.sz画像サイズ.Width / 10; int height = TJAPlayer3.Tx.Difficulty_Number.sz画像サイズ.Height; + icon_coords[0] = Math.Max(icon_coords[0], _x + width); + icon_coords[1] = _y; + TJAPlayer3.Tx.Difficulty_Number.t2D描画(TJAPlayer3.app.Device, _x, _y, new Rectangle(width * nums[j], 0, width, height)); + + if (TJAPlayer3.Tx.Difficulty_Number_Colored != null) + { + TJAPlayer3.Tx.Difficulty_Number_Colored.color4 = C変換.ColorToColor4(TJAPlayer3.Skin.SongSelect_Difficulty_Colors[diff]); + TJAPlayer3.Tx.Difficulty_Number_Colored.t2D描画(TJAPlayer3.app.Device, _x, _y, new RectangleF(width * nums[j], 0, width, height)); + } } + TJAPlayer3.stage選曲.act曲リスト.tDisplayLevelIcon((int)icon_coords[0], (int)icon_coords[1], icon, TJAPlayer3.Tx.Difficulty_Number_Icon); } private bool isOnOption() diff --git a/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs b/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs index 8bbc0d60..00aa5bc8 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs @@ -2166,7 +2166,7 @@ namespace TJAPlayer3 { if (NotesManager.IsGenericRoll(pChip)) { - if (pChip.nノーツ出現時刻ms != 0 && ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms)) + if (pChip.nノーツ出現時刻ms != 0 && ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (double)(TJAPlayer3.ConfigIni.n演奏速度 / 20.0)) < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms)) pChip.bShow = false; else if (pChip.nノーツ出現時刻ms != 0 && pChip.nノーツ移動開始時刻ms != 0) pChip.bShow = true; @@ -2186,7 +2186,7 @@ namespace TJAPlayer3 } if (NotesManager.IsRollEnd(pChip)) { - if (pChip.nノーツ出現時刻ms != 0 && ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) < n先頭発声位置 - pChip.nノーツ出現時刻ms)) + if (pChip.nノーツ出現時刻ms != 0 && ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (double)(TJAPlayer3.ConfigIni.n演奏速度 / 20.0)) < n先頭発声位置 - pChip.nノーツ出現時刻ms)) pChip.bShow = false; else pChip.bShow = true; diff --git a/TJAPlayer3/TJAPlayer3.csproj b/TJAPlayer3/TJAPlayer3.csproj index 33c3e459..2d23e094 100644 --- a/TJAPlayer3/TJAPlayer3.csproj +++ b/TJAPlayer3/TJAPlayer3.csproj @@ -150,6 +150,7 @@ + diff --git a/Test/Songs/08 OpenTaiko Original/002 - Zerstören/Zerstören.tja b/Test/Songs/08 OpenTaiko Original/002 - Zerstören/Zerstören.tja index 7b7e981a..11eaa89f 100644 --- a/Test/Songs/08 OpenTaiko Original/002 - Zerstören/Zerstören.tja +++ b/Test/Songs/08 OpenTaiko Original/002 - Zerstören/Zerstören.tja @@ -9,7 +9,7 @@ SCOREMODE:2 MAKER:bol COURSE:Edit -LEVEL:10 +LEVEL:10.3 BALLOON:30 SCOREINIT:680 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/003 - Breaking Point/Breaking Point.tja b/Test/Songs/08 OpenTaiko Original/003 - Breaking Point/Breaking Point.tja index 435e87ce..0974cf22 100644 --- a/Test/Songs/08 OpenTaiko Original/003 - Breaking Point/Breaking Point.tja +++ b/Test/Songs/08 OpenTaiko Original/003 - Breaking Point/Breaking Point.tja @@ -8,7 +8,7 @@ DEMOSTART:109.333 SCOREMODE:2 COURSE:Edit -LEVEL:10 +LEVEL:10.5 BALLOON: SCOREINIT:790 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/005 - WTF/MooX - WTF.tja b/Test/Songs/08 OpenTaiko Original/005 - WTF/MooX - WTF.tja index fbde06c9..c9aee16e 100644 --- a/Test/Songs/08 OpenTaiko Original/005 - WTF/MooX - WTF.tja +++ b/Test/Songs/08 OpenTaiko Original/005 - WTF/MooX - WTF.tja @@ -13,7 +13,7 @@ BGMOVIE:MooX - WTF.mp4 COURSE:Edit -LEVEL:10 +LEVEL:10.4 BALLOON: SCOREINIT:1190 SCOREDIFF:0 @@ -308,4 +308,4 @@ SCOREDIFF: 1211, 20201011, 3, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/006 - Athazagoraphobia/Athazagoraphobia.tja b/Test/Songs/08 OpenTaiko Original/006 - Athazagoraphobia/Athazagoraphobia.tja index b4640887..ba40e7ad 100644 --- a/Test/Songs/08 OpenTaiko Original/006 - Athazagoraphobia/Athazagoraphobia.tja +++ b/Test/Songs/08 OpenTaiko Original/006 - Athazagoraphobia/Athazagoraphobia.tja @@ -6,7 +6,7 @@ OFFSET:0 DEMOSTART:84.570 COURSE:Edit -LEVEL:10 +LEVEL:10.6 BALLOON: SCOREINIT:580 SCOREDIFF:0 @@ -848,7 +848,7 @@ NOTESDESIGNER1:bol 11, 11, -11, +11, 11, 11, 11, @@ -1036,4 +1036,4 @@ NOTESDESIGNER0:Colin & bol #SCROLL 999 58, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/008 - DONT_LOOK_BACK/DON'T LOOK BACK.tja b/Test/Songs/08 OpenTaiko Original/008 - DONT_LOOK_BACK/DON'T LOOK BACK.tja index 4f56b31c..935276e2 100644 --- a/Test/Songs/08 OpenTaiko Original/008 - DONT_LOOK_BACK/DON'T LOOK BACK.tja +++ b/Test/Songs/08 OpenTaiko Original/008 - DONT_LOOK_BACK/DON'T LOOK BACK.tja @@ -307,7 +307,7 @@ SCOREDIFF:0 #END COURSE:Oni -LEVEL:10 +LEVEL:10.7 BALLOON:30 SCOREINIT:740 SCOREDIFF:0 @@ -1112,4 +1112,4 @@ SCOREDIFF:0 3, , , -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/010 - BassBoL/BassBoL.tja b/Test/Songs/08 OpenTaiko Original/010 - BassBoL/BassBoL.tja index 84ce6e54..019ba9e6 100644 --- a/Test/Songs/08 OpenTaiko Original/010 - BassBoL/BassBoL.tja +++ b/Test/Songs/08 OpenTaiko Original/010 - BassBoL/BassBoL.tja @@ -8,7 +8,7 @@ SCOREMODE:2 PREIMAGE:BassBol.png COURSE:Oni -LEVEL:10 +LEVEL:10.9 BALLOON:5,75,75,10,1 SCOREINIT:510 SCOREDIFF:0 @@ -1126,4 +1126,4 @@ SCOREDIFF:0 06000000, 0800, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/012 - DeceiverTerminus/DeceiverTerminus.tja b/Test/Songs/08 OpenTaiko Original/012 - DeceiverTerminus/DeceiverTerminus.tja index 2ead23c9..e6884787 100644 --- a/Test/Songs/08 OpenTaiko Original/012 - DeceiverTerminus/DeceiverTerminus.tja +++ b/Test/Songs/08 OpenTaiko Original/012 - DeceiverTerminus/DeceiverTerminus.tja @@ -6,7 +6,7 @@ OFFSET:-0.236 DEMOSTART:284.408 COURSE:Oni -LEVEL:10 +LEVEL:10.4 BALLOON:10,10,39 #START diff --git a/Test/Songs/08 OpenTaiko Original/017 - Halcyon/Halcyon.tja b/Test/Songs/08 OpenTaiko Original/017 - Halcyon/Halcyon.tja index 016e1a2b..70061306 100644 --- a/Test/Songs/08 OpenTaiko Original/017 - Halcyon/Halcyon.tja +++ b/Test/Songs/08 OpenTaiko Original/017 - Halcyon/Halcyon.tja @@ -8,7 +8,7 @@ SCOREMODE:2 PREIMAGE:Halcyon.png COURSE:Oni -LEVEL:10 +LEVEL:10.7 BALLOON:30,10,2,3 SCOREINIT:710 SCOREDIFF:0 @@ -676,4 +676,4 @@ SCOREDIFF:0 0000000080000003, #GOGOEND , -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/018 - Chasing the wind/Chasing the Wind.tja b/Test/Songs/08 OpenTaiko Original/018 - Chasing the wind/Chasing the Wind.tja index d633014f..727cb021 100644 --- a/Test/Songs/08 OpenTaiko Original/018 - Chasing the wind/Chasing the Wind.tja +++ b/Test/Songs/08 OpenTaiko Original/018 - Chasing the wind/Chasing the Wind.tja @@ -8,7 +8,7 @@ DEMOSTART:35.715 SCOREMODE:2 COURSE:Edit -LEVEL:10 +LEVEL:10.3 BALLOON:20,2 SCOREINIT:780 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/020 - Slayer of/Slayer of..tja b/Test/Songs/08 OpenTaiko Original/020 - Slayer of/Slayer of..tja index a59bf874..a8f3480d 100644 --- a/Test/Songs/08 OpenTaiko Original/020 - Slayer of/Slayer of..tja +++ b/Test/Songs/08 OpenTaiko Original/020 - Slayer of/Slayer of..tja @@ -7,7 +7,7 @@ DEMOSTART:60.564 SCOREMODE:2 COURSE:Edit -LEVEL:10 +LEVEL:10.8 BALLOON: SCOREINIT:690 SCOREDIFF:0 @@ -151,7 +151,7 @@ SCOREDIFF:0 #END COURSE:Oni -LEVEL:10 +LEVEL:10.5 BALLOON: SCOREINIT:840 SCOREDIFF:0 @@ -706,4 +706,4 @@ SCOREDIFF:0 #GOGOEND , -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/022 - Seismic Shake/Seismic Shake.tja b/Test/Songs/08 OpenTaiko Original/022 - Seismic Shake/Seismic Shake.tja index 66afac0a..16716112 100644 --- a/Test/Songs/08 OpenTaiko Original/022 - Seismic Shake/Seismic Shake.tja +++ b/Test/Songs/08 OpenTaiko Original/022 - Seismic Shake/Seismic Shake.tja @@ -7,7 +7,7 @@ OFFSET:-0.193 DEMOSTART:87.870 COURSE:Oni -LEVEL:10 +LEVEL:10.6 BALLOON: SCOREINIT: SCOREDIFF:0 @@ -277,11 +277,8 @@ SCOREDIFF:0 3, #END - - - COURSE:Edit -LEVEL:10 +LEVEL:10.5 BALLOON: #START @@ -970,5 +967,3 @@ BALLOON: 22, 3, #END - - diff --git a/Test/Songs/08 OpenTaiko Original/023 - Stereotype/Stereotype.tja b/Test/Songs/08 OpenTaiko Original/023 - Stereotype/Stereotype.tja index 199d0cfb..c3f435c5 100644 --- a/Test/Songs/08 OpenTaiko Original/023 - Stereotype/Stereotype.tja +++ b/Test/Songs/08 OpenTaiko Original/023 - Stereotype/Stereotype.tja @@ -8,7 +8,7 @@ DEMOSTART:91.76 AUTHOR:Taichenko_oni COURSE:Oni -LEVEL:10 +LEVEL:10.4 BALLOON:3,3,3,3 SCOREINIT: SCOREDIFF: diff --git a/Test/Songs/08 OpenTaiko Original/026 - Lost Emotion/Lost_Emotion..tja b/Test/Songs/08 OpenTaiko Original/026 - Lost Emotion/Lost_Emotion..tja index e1e8463b..c88eb3eb 100644 --- a/Test/Songs/08 OpenTaiko Original/026 - Lost Emotion/Lost_Emotion..tja +++ b/Test/Songs/08 OpenTaiko Original/026 - Lost Emotion/Lost_Emotion..tja @@ -9,7 +9,7 @@ PREIMAGE:lostem.png BGMOVIE:Lost Emotion..mp4 COURSE:Oni -LEVEL:10 +LEVEL:10.6 BALLOON:0 SCOREINIT: SCOREDIFF: diff --git a/Test/Songs/08 OpenTaiko Original/027 - Broken Metronome/br.tja b/Test/Songs/08 OpenTaiko Original/027 - Broken Metronome/br.tja index b42c164d..9931c243 100644 --- a/Test/Songs/08 OpenTaiko Original/027 - Broken Metronome/br.tja +++ b/Test/Songs/08 OpenTaiko Original/027 - Broken Metronome/br.tja @@ -8,7 +8,7 @@ SCOREMODE:2 PREIMAGE:br.png COURSE:Edit -LEVEL:10 +LEVEL:10.8 BALLOON: SCOREINIT: SCOREDIFF: @@ -168,7 +168,7 @@ SCOREDIFF: #END COURSE:Oni -LEVEL:10 +LEVEL:10.4 BALLOON:3,3 SCOREINIT: SCOREDIFF: diff --git a/Test/Songs/08 OpenTaiko Original/030 - 闇/Yami.tja b/Test/Songs/08 OpenTaiko Original/030 - 闇/Yami.tja index 3da44af2..c511fde0 100644 --- a/Test/Songs/08 OpenTaiko Original/030 - 闇/Yami.tja +++ b/Test/Songs/08 OpenTaiko Original/030 - 闇/Yami.tja @@ -9,7 +9,7 @@ DEMOSTART:43.885 SCOREMODE:2 COURSE:Edit -LEVEL:11 +LEVEL:11.3 BALLOON:2,2,2,2 SCOREINIT:780 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/031 - Mischief Madness/Mischief Madness.tja b/Test/Songs/08 OpenTaiko Original/031 - Mischief Madness/Mischief Madness.tja index b75d7ea9..b0f64426 100644 --- a/Test/Songs/08 OpenTaiko Original/031 - Mischief Madness/Mischief Madness.tja +++ b/Test/Songs/08 OpenTaiko Original/031 - Mischief Madness/Mischief Madness.tja @@ -9,7 +9,7 @@ GENRE: MAKER:Makotora COURSE:Oni -LEVEL:10 +LEVEL:10.5 SCOREINIT:500 SCOREDIFF:40 diff --git a/Test/Songs/08 OpenTaiko Original/032 - Re:Cøllapse/Re:Cøllapse.tja b/Test/Songs/08 OpenTaiko Original/032 - Re:Cøllapse/Re:Cøllapse.tja index 5c4f0d75..2d6820f9 100644 --- a/Test/Songs/08 OpenTaiko Original/032 - Re:Cøllapse/Re:Cøllapse.tja +++ b/Test/Songs/08 OpenTaiko Original/032 - Re:Cøllapse/Re:Cøllapse.tja @@ -8,7 +8,7 @@ SCOREMODE:2 PREIMAGE:Re:Cøllapse.png COURSE:Oni -LEVEL:10 +LEVEL:10.6 BALLOON:3,889 SCOREINIT:630 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/033 - Alonebirthday/Alonebirthday.tja b/Test/Songs/08 OpenTaiko Original/033 - Alonebirthday/Alonebirthday.tja index 708589c7..057479c9 100644 --- a/Test/Songs/08 OpenTaiko Original/033 - Alonebirthday/Alonebirthday.tja +++ b/Test/Songs/08 OpenTaiko Original/033 - Alonebirthday/Alonebirthday.tja @@ -8,7 +8,7 @@ DEMOSTART:81.45 SCOREMODE:2 COURSE:Edit -LEVEL:10 +LEVEL:10.2 BALLOON:7 SCOREINIT:690 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/036 - RUiNED GLORY/RUiNED GLORY.tja b/Test/Songs/08 OpenTaiko Original/036 - RUiNED GLORY/RUiNED GLORY.tja index 77659835..24857ba1 100644 --- a/Test/Songs/08 OpenTaiko Original/036 - RUiNED GLORY/RUiNED GLORY.tja +++ b/Test/Songs/08 OpenTaiko Original/036 - RUiNED GLORY/RUiNED GLORY.tja @@ -6,7 +6,7 @@ OFFSET:-0 DEMOSTART:103.200 COURSE:Oni -LEVEL:10 +LEVEL:10.0 BALLOON:12,12,24 SCOREINIT:690 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/037 - Yukianesa ~Azure of Ice~/Yukianesa ~Azure of Ice~.tja b/Test/Songs/08 OpenTaiko Original/037 - Yukianesa ~Azure of Ice~/Yukianesa ~Azure of Ice~.tja index f4edb288..830c5b49 100644 --- a/Test/Songs/08 OpenTaiko Original/037 - Yukianesa ~Azure of Ice~/Yukianesa ~Azure of Ice~.tja +++ b/Test/Songs/08 OpenTaiko Original/037 - Yukianesa ~Azure of Ice~/Yukianesa ~Azure of Ice~.tja @@ -7,7 +7,7 @@ OFFSET:-0.004 DEMOSTART:104.474 COURSE:Edit -LEVEL:10 +LEVEL:10.4 BALLOON: SCOREINIT:640 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/039 - Forever Fading Away/Forever Fading Away.tja b/Test/Songs/08 OpenTaiko Original/039 - Forever Fading Away/Forever Fading Away.tja index 26cdfb28..8d93572e 100644 --- a/Test/Songs/08 OpenTaiko Original/039 - Forever Fading Away/Forever Fading Away.tja +++ b/Test/Songs/08 OpenTaiko Original/039 - Forever Fading Away/Forever Fading Away.tja @@ -7,217 +7,383 @@ DEMOSTART:95.529 LYRICS:Forever Fading Away.vtt PREIMAGE:Forever Fading Away.png BGMOVIE:Forever Fading Away.mp4 -MAKER:DashyDesu & Colin +MAKER:DashyDesu, Colin, bol, \R~ & Ryuto Setsujin COURSE:Edit -LEVEL:10 -BALLOON: -SCOREINIT: -SCOREDIFF: -NOTESDESIGNER4:DashyDesu & Colin +LEVEL:10.7 +BALLOON:88 #START -1022102010202022, -1020101210102122, -1022102010202022, -1020101210102122, -1022102010202022, -1020101210102122, -1022102010202022, -1020101210102122, - -1012121122102212, -1012121120121212, -1012101120102120, -1212121120112012, -1012101122102212, -1022121120121022, -1012101120102010, -1112111121121112, - -1012121120112212, -1212121120121022, -1012101122102212, -1012121020121012, -1022121120102012, -1122121120121122, -1012101122112212, -1012121020112012, - -1021201120112012, -1211221120112122, -1012121120112212, -1012121120112212, -1012121120112012, -1011221120121122, -1012101120102012, -1122121020112012, - -1012101020102010, -1012101020102000, -1012101020002000, -1012101020102010, -1012101020002000, -1012101020102000, -1012101020002000, -1012101020102222, - -1021201020002122, -1012101020102222, -1012101020002222, -1012101020102022, -1012101020002222, -1012101020102222, -1012101020002222, -1012101020102022, - -1012101020002222, -1012101020102222, -1012101020002222, -1012101020102222, -1012101020002222, -1012101020102222, -1012101020002222, -1012101020102012, - -1012101020002222, -1012101020102222, -1012101020002222, -1012101020102022, -1011201210002222, -1012101020102222, -1012101020002222, -1012101020112212, - -#MEASURE 64/4 -#BARLINEOFF -#SCROLL 0.125 -200000002000000020000000200000002000000020000000200000002000000020000000000000002000000020000000200000000000000020000000200000002000000020000000200000002000000020000000200000002000000020000000200000000000000020000000200000002000000000000000000000000 -#SCROLL 1 -0101010, - #MEASURE 4/4 -#GOGOSTART +#SCROLL 0.75 +2022202202202011, +2020202202202112, +2022202202202011, +2020202202202112, +2022202202202011, +2020202202202112, +2022202202202112, +2022202202202222, + +100000100100100000101010200000100000200000000000, +10000000001000010000200020001000100010002000000000200002000010000000000000000000, +100000100100100000101010200000100000200000000000, +10000000001000010000200020001000100010002000000000200002000010000000002000020000, +100000100100100000101010200000100000200000000000, +10000000001000010000200020001000100010002000000000200002000010000000000000000000, +1010101210101012, +#SCROLL 0.76 +1 +#SCROLL 0.77 +1 +#SCROLL 0.78 +1 +#SCROLL 0.79 +1 +#SCROLL 0.8 +1 +#SCROLL 0.81 +1 +#SCROLL 0.82 +1 +#SCROLL 0.83 +1 +#SCROLL 0.84 +1 +#SCROLL 0.86 +1 +#SCROLL 0.88 +1 +#SCROLL 0.9 +1 +#SCROLL 0.92 +1 +#SCROLL 0.94 +1 +#SCROLL 0.96 +1 +#SCROLL 0.98 +1, + +#SCROLL 1 +100000100100100000101010200000100000200000202000, +100000000000000000000000000000100000000000000100000000000000200000000000200000000000100000000000100000000000100000000000200000000000000000000000000000200000000000000200000000000000100000000000000000000000000000200000000020000000000000000000, +100000100100100000101010200000100000200000202000, +10000000001000010000200020001000100010002000000000200002000010000000002000020000, +100000100100100000101010200000100000200000202000, +100000000000000000000000000000100000000000000100000000000000200000000000200000000000100000000000100000000000100000000000200000000000000000000000000000200000000000000200000000000000100000000000000000000000000000200000000020000000000000000000, +100000100100100000101010200000100000200000202000, +10000000001000010000200020001000100010002000000000200002000010000000002000020000, +100000100100100000101010200000100000200000202000, +100000000000000000000000000000100000000000000100000000000000200000000000200000000000100000000000100000000000100000000000200000000000000000000000000000200000000000000200000000000000100000000000000000000000000000200000000020000000000000000000, +100000100100100000101010200000100000200000202000, +10000000001000010000200020001000100010002000000000200002000010000000002000020000, +100000100100100000101010200000100000200000202000, +100000000000000000000000000000100000000000000100000000000000200000000000200000000000100000000000100000000000100000000000200000000000000000000000000000200000000000000200000000000000100000000000000000000000000000200000000020000000000000000000, +100000100100100000101010200000100000200000202000, +10000000001000010000200020001000100010002000000000 +#SCROLL 0.950000 +20000 +#SCROLL 0.900000 +20000 +#SCROLL 0.850000 +1000000000 +#SCROLL 0.750000 +20000 +#SCROLL 0.700000 +20000, + +#SCROLL 0.650000 +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2010, +1002101010211000, +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2000, +1002101010201020, +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2010, +1002101010211000, +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2010, +1002101010202222, +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2010, +1002101010211000, +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2000, +1002101010201020, +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2010, +1002101010211000, +10021010 +#SCROLL 1.500000 +4000 +#SCROLL 0.650000 +2010, +100210101020 +#SCROLL 0.700000 +2 +#SCROLL 0.750000 +2 +#SCROLL 0.800000 +2 +#SCROLL 0.850000 +2, + +#SCROLL 0.900000 +1022102010201222, +1002101010201222, +1002101010201222, +1002101120211222, +1002101010201222, +1002101010201222, +1002101010201222, +1012101011201222, +1022102010201222, +1002101010201222, +1002101010201222, +1002101120211222, +1002101010201222, +1002101010201222, +1002101010201222, +1012101011201222, + +#SCROLL 0.5 +1, +#BARLINEOFF +, +1, +, +1, +, +1, +2, + +1, +, +1, +, #BARLINEON -#SCROLL 1 -1020102210201120, -12121212, -1020112211201122, -1112112211201020, -1020102210201212, -12121212, -1020102011221122, -1020102010201022, - -1020112010201120, -1020112010201120, -1020112010201120, -1020112010201120, -1020112010201120, -1020112211221022, -1020112010201020, -102010101010111 -#GOGOEND +#MEASURE 1/8 1, - -#GOGOSTART -1020102010201120, -1020102211221020, -1122121210201122, -1122121010201010, -1020112010201022, -1020112210201022, -1020112010201122, -1020102010211020, - -1020112211201020, -1122102010201020, -1020112010201020, -1020102211201020, -12121212, -1020102212121020, -1020112010201020, -112011201120111 -#GOGOEND -1, - -#GOGOSTART -#SCROLL 1.1 -1111222211112222, -2222111122221110, -#SCROLL 1.2 -1111222211112212, -2211221122112110, -#SCROLL 1.3 -1111211122112210, -#SCROLL 1.4 -1111211222112110, -#SCROLL 1.5 -1111221122112110, -#SCROLL 1.6 -1121221211212212, - -#SCROLL 1.7 -1111222211112211, -2222111122221110, -#SCROLL 1.8 -1111222211112212, -2211221122112110, -#SCROLL 1.9 -1122112211112211, -2211221122112110, -#SCROLL 2 -1121121211211212, -1221121212211211, - -#SCROLL 2.1 -1111222211112222, -2222111122221110, -#SCROLL 2.2 -1111222211112212, -2211221122112110, -#SCROLL 2.3 -1111211122112210, -#SCROLL 2.4 -1111211222112110, -#SCROLL 2.5 -1111221122112110, -#SCROLL 2.6 -1121221211212212, - -#SCROLL 2.7 -1111222211112211, -2222111122221110, -#SCROLL 2.8 -1111222211112212, -2211221122112110, -#SCROLL 2.9 -1122112211112211, -2211221122112110, -#SCROLL 3 -1021212121112212, -#SCROLL 4 -1111111111111111, -#GOGOEND +#SCROLL 0.516 +, +#SCROLL 0.532 +, +#SCROLL 0.548 +, +#SCROLL 0.564 +, +#SCROLL 0.580 +, +#SCROLL 0.596 +, +#SCROLL 0.612 +, +#SCROLL 0.628 +, +#SCROLL 0.642 +, +#SCROLL 0.658 +, +#SCROLL 0.674 +, +#SCROLL 0.690 +, +#SCROLL 0.706 +, +#SCROLL 0.722 +, +#SCROLL 0.738 +, +#SCROLL 0.754 +7, +#SCROLL 0.770 +, +#SCROLL 0.786 +, +#SCROLL 0.802 +, +#SCROLL 0.818 +, +#SCROLL 0.834 +, +#SCROLL 0.850 +, +#SCROLL 0.866 +, +#SCROLL 0.882 +, +#SCROLL 0.898 +, +#SCROLL 0.914 +, +#SCROLL 0.930 +, +#SCROLL 0.946 +, +#SCROLL 0.962 +, +#SCROLL 0.978 +8, +#SCROLL 0.994 +, +#MEASURE 4/4 #SCROLL 1 -1012121120102211, -1011212120112120, -1011201120102210, -1012121020112212, -1011201120102210, -1011201120112012, -1011201120102122, -1012101020112012, +#GOGOSTART +3020102210221020, +1020102010222020, +1020102010221020, +1022102011102000, +1011102010221020, +1011102010201000, +30440303, +0011102011102022, + +1011201011102000, +1011201011202000, +11221122, +1110222011102220, +6008, +33, +4141, +3000101010101111, + +1020102210221020, +1020102010222020, +1020102010221020, +1022102011102000, +1011102010221020, +1011102010201000, +30440303, +0011102010022020, + +1011201011102000, +1011202010222000, +11221122, +1110222011102220, +6008, +1111200011222000, +2222100022111000, +2211100022111122, + +1112111211121122, +2211221121112111, +1112111211121122, +2211221121112110, +1012112222111122, +1012112222111122, +1011221222111122, +1122221111222211, + +1112111211121122, +2211221121112111, +1112111211121122, +2211221121112110, +1012111211121112, +2221222122112211, +1111221122112211, +2222112211221122, + +1112111211121122, +2211221121112111, +1112111211121122, +2211221121112110, +1012112222111122, +1012112222111122, +1011221222111122, +1122221111222211, + +1112111211121122, +2211221121112111, +1112111211121122, +2211221121112110, +1012111211121112, +2221222122112211, +1010201210102012, +#SCROLL 0.99 +1 +#SCROLL 0.98 +1 +#SCROLL 0.97 +1 +#SCROLL 0.96 +1 +#SCROLL 0.95 +1 +#SCROLL 0.94 +1 +#SCROLL 0.93 +1 +#SCROLL 0.92 +1 +#SCROLL 0.91 +1 +#SCROLL 0.9 +1 +#SCROLL 0.89 +1 +#SCROLL 0.88 +1 +#SCROLL 0.87 +1 +#SCROLL 0.86 +1 +#SCROLL 0.85 +1 +#SCROLL 0.84 +1, +#GOGOEND + +#SCROLL 0.83 +100000100100100000101010200000100000200000000000, +10000000001000010000200020001000100010002000000000200002000010000000000000000000, +100000100100100000101010200000100000200000000000, +10000000001000010000200020001000100010002000000000200002000010000000002000020000, +100000100100100000101010200000100000200000000000, +10000000001000010000200020001000100010002000000000200002000010000000000000000000, +100000100100100000101010200000100000200000000000, +10000000001000010000200020001000100010002000000000 +#SCROLL 0.960000 +20000 +#SCROLL 1.090000 +20000 +#SCROLL 1.220000 +1000000000 +#SCROLL 1.480000 +20000 +#SCROLL 1.610000 +20000, #END + COURSE:Oni LEVEL:9 BALLOON: #START -#BPMCHANGE 200.000000 -#MEASURE 4/4 2222200200202000, 2020200200202000, 2222200200202000, @@ -393,6 +559,7 @@ BALLOON: 10111010302210 #SCROLL 2 44, +, #END COURSE:Hard @@ -728,11 +895,9 @@ NOTESDESIGNER1:DashyDesu & Colin #END COURSE:Easy -LEVEL:2 -BALLOON: +LEVEL:3 SCOREINIT: SCOREDIFF: -NOTESDESIGNER0:DashyDesu & Colin #START #BARLINEOFF @@ -769,23 +934,18 @@ NOTESDESIGNER0:DashyDesu & Colin 1, 1, 1, -5, -, -, -, -, -, -, -8, -5, -, -, -8, -5, -, -, -, -8, +1, +1010, +1, +1010, +1, +1010, +1, +1010, +1, +1010, +1, +1010, 1, 1010, 1, @@ -793,52 +953,57 @@ NOTESDESIGNER0:DashyDesu & Colin 1, 1010, 1, -1, +2, 1, 1010, 1, -1, +2, 1, 1010, 1, +2, +1, +1010, +1, +2, #MEASURE 64/4 2000000020000000200000002000000020000000200000002000002000000000, #MEASURE 4/4 #GOGOSTART +1011, +1011, 1010, -1050, -, -8050, -0008, -, -1, -1, +1011, +1011, +1010, +1020, +1020, +1011, +1010, +1011, 1010, 1, -1010, -1010, -5008, -0020, +2020, 2020, 200000000000000 #GOGOEND 0, #GOGOSTART +1011, +1011, 1010, -1, -5, -8, -5, -8010, -1, +1011, +1011, +1011, +1020, 2020, +1011, +1011, 1010, 1010, -1, -1, -5, -8, -1, +2, +2020, +1020, 200000002000000 #GOGOEND 0, @@ -848,8 +1013,6 @@ NOTESDESIGNER0:DashyDesu & Colin 5, 0008, 5, -, -, 0008, 5, 0008, @@ -867,20 +1030,21 @@ NOTESDESIGNER0:DashyDesu & Colin 0008, 5, 0008, -5, -0008, -5, -0008, -5, -0008, -5, -, +1010, +1011, +1020, +1011, +1020, +1011, +1020, +1011, +1020, +1011, #GOGOEND -8, +1, 1010, 1, 1010, -#BPMCHANGE 200 1010, 1010, 1010, diff --git a/Test/Songs/08 OpenTaiko Original/041 - Beyond the Cityscape/Beyond the Cityscape.tja b/Test/Songs/08 OpenTaiko Original/041 - Beyond the Cityscape/Beyond the Cityscape.tja index b5aee1b9..8d4dd44f 100644 --- a/Test/Songs/08 OpenTaiko Original/041 - Beyond the Cityscape/Beyond the Cityscape.tja +++ b/Test/Songs/08 OpenTaiko Original/041 - Beyond the Cityscape/Beyond the Cityscape.tja @@ -8,7 +8,7 @@ PREIMAGE:Beyond the Cityscape.png SCOREMODE:2 COURSE:Edit -LEVEL:10 +LEVEL:10.1 BALLOON: SCOREINIT:1230 SCOREDIFF:0 @@ -101,7 +101,7 @@ SCOREDIFF:0 1021212210212122, 1122112211221122, 100020002000100020002000100020002000100020002000100000100000100000100000100010001000100100100100, -#GOGOEND +#GOGOEND #MEASURE 8/4 #SCROLL 2 @@ -195,7 +195,7 @@ SCOREDIFF:0 12221222, 1110111011101110, 1010101011111110, -#GOGOEND +#GOGOEND #MEASURE 8/4 3, @@ -288,7 +288,7 @@ SCOREDIFF:0 12201220, 1111, 1010101011101000, -#GOGOEND +#GOGOEND #MEASURE 8/4 3, @@ -381,7 +381,7 @@ SCOREDIFF:0 1212, 1111, 1158, -#GOGOEND +#GOGOEND #MEASURE 8/4 3, @@ -474,8 +474,8 @@ SCOREDIFF:0 11, 1110, 5008, -#GOGOEND +#GOGOEND #MEASURE 8/4 3, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/042 - Shockwave/Shockwave.tja b/Test/Songs/08 OpenTaiko Original/042 - Shockwave/Shockwave.tja index d2e8e59d..68ff34fb 100644 --- a/Test/Songs/08 OpenTaiko Original/042 - Shockwave/Shockwave.tja +++ b/Test/Songs/08 OpenTaiko Original/042 - Shockwave/Shockwave.tja @@ -8,7 +8,7 @@ DEMOSTART:87.467 SCOREMODE:2 COURSE:Oni -LEVEL:10 +LEVEL:10.7 BALLOON:2 SCOREINIT:980 SCOREDIFF:0 diff --git a/Test/Songs/08 OpenTaiko Original/043 - TRIPLE HELIX/TRIPLE HELIX.tja b/Test/Songs/08 OpenTaiko Original/043 - TRIPLE HELIX/TRIPLE HELIX.tja index 901e0c27..2fc49481 100644 --- a/Test/Songs/08 OpenTaiko Original/043 - TRIPLE HELIX/TRIPLE HELIX.tja +++ b/Test/Songs/08 OpenTaiko Original/043 - TRIPLE HELIX/TRIPLE HELIX.tja @@ -536,7 +536,7 @@ NOTESDESIGNER3:Colin #END COURSE:Edit -LEVEL:10 +LEVEL:10.5 BALLOON:30 #START @@ -1938,4 +1938,4 @@ BALLOON:30 #SCROLL 13.954 G, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/044 - Memory/Memory.tja b/Test/Songs/08 OpenTaiko Original/044 - Memory/Memory.tja index 7343bfa7..d21c0a16 100644 --- a/Test/Songs/08 OpenTaiko Original/044 - Memory/Memory.tja +++ b/Test/Songs/08 OpenTaiko Original/044 - Memory/Memory.tja @@ -13,7 +13,7 @@ SCOREMODE:2 PREIMAGE:Memory.png COURSE:Edit -LEVEL:11 +LEVEL:11.2 BALLOON: #START @@ -213,7 +213,7 @@ BALLOON: #END COURSE:Oni -LEVEL:10 +LEVEL:10.4 BALLOON:13 SCOREINIT: SCOREDIFF: @@ -831,4 +831,4 @@ BALLOON:22 0, 0, 4, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/046 - Exile/Exile.tja b/Test/Songs/08 OpenTaiko Original/046 - Exile/Exile.tja index d382a27a..0d133320 100644 --- a/Test/Songs/08 OpenTaiko Original/046 - Exile/Exile.tja +++ b/Test/Songs/08 OpenTaiko Original/046 - Exile/Exile.tja @@ -6,7 +6,7 @@ OFFSET:-0 DEMOSTART:42 COURSE:Edit -LEVEL:11 +LEVEL:11.7 BALLOON: SCOREINIT:640 SCOREDIFF:0 @@ -900,4 +900,4 @@ SCOREDIFF:0 00002011, 1, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/047 - Pixelated Angel/Pixelated Angel.tja b/Test/Songs/08 OpenTaiko Original/047 - Pixelated Angel/Pixelated Angel.tja index a53b7aa1..780f0d34 100644 --- a/Test/Songs/08 OpenTaiko Original/047 - Pixelated Angel/Pixelated Angel.tja +++ b/Test/Songs/08 OpenTaiko Original/047 - Pixelated Angel/Pixelated Angel.tja @@ -7,7 +7,7 @@ DEMOSTART:56.888 SCOREMODE:2 COURSE:Oni -LEVEL:10 +LEVEL:10.0 BALLOON:1 SCOREINIT:700 SCOREDIFF:0 @@ -677,4 +677,4 @@ SCOREDIFF:0 1011, #BARLINEOFF 0000000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/050 - Annihilation/Annihilation.tja b/Test/Songs/08 OpenTaiko Original/050 - Annihilation/Annihilation.tja index ce1ce66f..e005f537 100644 --- a/Test/Songs/08 OpenTaiko Original/050 - Annihilation/Annihilation.tja +++ b/Test/Songs/08 OpenTaiko Original/050 - Annihilation/Annihilation.tja @@ -7,7 +7,7 @@ DEMOSTART:101.462 SCOREMODE:2 COURSE:Oni -LEVEL:10 +LEVEL:10.6 BALLOON:3,2,1,4,11 SCOREINIT:610 SCOREDIFF:0 @@ -746,4 +746,4 @@ SCOREDIFF:0 , , , -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/052 - Scarlet Mirage/Scarlet Mirage.tja b/Test/Songs/08 OpenTaiko Original/052 - Scarlet Mirage/Scarlet Mirage.tja index 93a43294..9fbcefb3 100644 --- a/Test/Songs/08 OpenTaiko Original/052 - Scarlet Mirage/Scarlet Mirage.tja +++ b/Test/Songs/08 OpenTaiko Original/052 - Scarlet Mirage/Scarlet Mirage.tja @@ -8,7 +8,7 @@ PREIMAGE:Scarlet Mirage.png SCOREMODE:2 COURSE:Oni -LEVEL:11 +LEVEL:11.3 BALLOON: SCOREINIT:630 SCOREDIFF:0 @@ -1385,4 +1385,4 @@ SCOREDIFF:0 8, , -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/054 - Synthsea/Synthsea.tja b/Test/Songs/08 OpenTaiko Original/054 - Synthsea/Synthsea.tja index 2ea431d8..af3ac432 100644 --- a/Test/Songs/08 OpenTaiko Original/054 - Synthsea/Synthsea.tja +++ b/Test/Songs/08 OpenTaiko Original/054 - Synthsea/Synthsea.tja @@ -8,7 +8,7 @@ PREIMAGE:Synthsea.png SCOREMODE:2 COURSE:Oni -LEVEL:10 +LEVEL:10.5 BALLOON: SCOREINIT:350 SCOREDIFF:0 @@ -1108,7 +1108,7 @@ SCOREDIFF:0 1222, 12222011, 01110101, -22202022, +22202022, 02012122, #GOGOSTART @@ -1713,4 +1713,4 @@ SCOREDIFF:0 5, 8, -#END \ No newline at end of file +#END diff --git a/Test/Songs/08 OpenTaiko Original/055 - NEKROS/GRYSCL.tja b/Test/Songs/08 OpenTaiko Original/055 - NEKROS/GRYSCL.tja index fb4cb223..7cafded5 100644 --- a/Test/Songs/08 OpenTaiko Original/055 - NEKROS/GRYSCL.tja +++ b/Test/Songs/08 OpenTaiko Original/055 - NEKROS/GRYSCL.tja @@ -8,7 +8,7 @@ WAVE:GRYSCL.ogg MAKER:Colin & 0AuBSQ COURSE:Edit -LEVEL:11 +LEVEL:11.0 BALLOON:8,9,10 #START @@ -626,7 +626,7 @@ G00000000000100010001000200000000000100000100000200000000000100000000000G0000000 #END COURSE:Oni -LEVEL:10 +LEVEL:10.2 BALLOON: SCOREINIT: SCOREDIFF: