いろいろ改善13 (#508)
* くすだまとタイマー音符の修正 * 曲キャッシュの実装 * 不具合を修正 * hash値を使用するように * songlist.dbのクラッシュを修正 * 修正 * キャラを修正 * update * 修正 * スコアの問題を修正
This commit is contained in:
parent
49be86d49f
commit
6789ffd3f0
@ -1747,7 +1747,7 @@ namespace TJAPlayer3
|
|||||||
//----------------------------------------
|
//----------------------------------------
|
||||||
#endif
|
#endif
|
||||||
this.strDTXManiaのバージョン = "Unknown";
|
this.strDTXManiaのバージョン = "Unknown";
|
||||||
this.str曲データ検索パス = @"." + Path.DirectorySeparatorChar;
|
this.str曲データ検索パス = @"." + Path.DirectorySeparatorChar + "Songs" + Path.DirectorySeparatorChar;
|
||||||
this.b全画面モード = false;
|
this.b全画面モード = false;
|
||||||
this.b垂直帰線待ちを行う = true;
|
this.b垂直帰線待ちを行う = true;
|
||||||
this.n初期ウィンドウ開始位置X = 100; // #30675 2013.02.04 ikanick add
|
this.n初期ウィンドウ開始位置X = 100; // #30675 2013.02.04 ikanick add
|
||||||
|
@ -646,6 +646,7 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
[StructLayout( LayoutKind.Sequential )]
|
[StructLayout( LayoutKind.Sequential )]
|
||||||
public struct STAUTOPLAY // Eレーンとindexを一致させること
|
public struct STAUTOPLAY // Eレーンとindexを一致させること
|
||||||
{
|
{
|
||||||
|
@ -3090,6 +3090,7 @@ for (int i = 0; i < 3; i++) {
|
|||||||
Trace.TraceInformation( "■ アプリケーションの終了" );
|
Trace.TraceInformation( "■ アプリケーションの終了" );
|
||||||
#region [ 曲検索の終了処理 ]
|
#region [ 曲検索の終了処理 ]
|
||||||
//---------------------
|
//---------------------
|
||||||
|
|
||||||
if ( actEnumSongs != null )
|
if ( actEnumSongs != null )
|
||||||
{
|
{
|
||||||
Trace.TraceInformation( "曲検索actの終了処理を行います。" );
|
Trace.TraceInformation( "曲検索actの終了処理を行います。" );
|
||||||
@ -3172,6 +3173,15 @@ for (int i = 0; i < 3; i++) {
|
|||||||
Trace.Indent();
|
Trace.Indent();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
#pragma warning disable SYSLIB0011
|
||||||
|
if (EnumSongs.IsSongListEnumCompletelyDone)
|
||||||
|
{
|
||||||
|
BinaryFormatter songlistdb_ = new BinaryFormatter();
|
||||||
|
using Stream songlistdb = File.OpenWrite($"{TJAPlayer3.strEXEのあるフォルダ}songlist.db");
|
||||||
|
songlistdb_.Serialize(songlistdb, Songs管理.listSongsDB);
|
||||||
|
}
|
||||||
|
#pragma warning restore SYSLIB0011
|
||||||
|
|
||||||
Songs管理 = null;
|
Songs管理 = null;
|
||||||
Trace.TraceInformation( "曲リストの終了処理を完了しました。" );
|
Trace.TraceInformation( "曲リストの終了処理を完了しました。" );
|
||||||
}
|
}
|
||||||
|
@ -175,6 +175,7 @@ namespace TJAPlayer3
|
|||||||
public bool bHit;
|
public bool bHit;
|
||||||
public bool b可視 = true;
|
public bool b可視 = true;
|
||||||
public bool bHideBarLine = true;
|
public bool bHideBarLine = true;
|
||||||
|
public bool bProcessed = false;
|
||||||
public bool bShow;
|
public bool bShow;
|
||||||
public bool bShowRoll;
|
public bool bShowRoll;
|
||||||
public bool bBranch = false;
|
public bool bBranch = false;
|
||||||
@ -655,9 +656,12 @@ namespace TJAPlayer3
|
|||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
public class DanSongs
|
public class DanSongs
|
||||||
{
|
{
|
||||||
|
[NonSerialized]
|
||||||
public CTexture TitleTex;
|
public CTexture TitleTex;
|
||||||
|
[NonSerialized]
|
||||||
public CTexture SubTitleTex;
|
public CTexture SubTitleTex;
|
||||||
public string Title;
|
public string Title;
|
||||||
public string SubTitle;
|
public string SubTitle;
|
||||||
@ -670,6 +674,8 @@ namespace TJAPlayer3
|
|||||||
public static int Number = 0;
|
public static int Number = 0;
|
||||||
public bool bTitleShow;
|
public bool bTitleShow;
|
||||||
public Dan_C[] Dan_C = new Dan_C[CExamInfo.cMaxExam];
|
public Dan_C[] Dan_C = new Dan_C[CExamInfo.cMaxExam];
|
||||||
|
|
||||||
|
[NonSerialized]
|
||||||
public CWAV Wave;
|
public CWAV Wave;
|
||||||
|
|
||||||
public DanSongs()
|
public DanSongs()
|
||||||
@ -1212,7 +1218,7 @@ namespace TJAPlayer3
|
|||||||
public List<SKBitmap> listLyric; //歌詞を格納していくリスト。スペル忘れた(ぉい
|
public List<SKBitmap> listLyric; //歌詞を格納していくリスト。スペル忘れた(ぉい
|
||||||
public List<STLYRIC> listLyric2;
|
public List<STLYRIC> listLyric2;
|
||||||
|
|
||||||
public Dictionary<double, CChip> kusudaMAP = new Dictionary<double, CChip>();
|
//public Dictionary<double, CChip> kusudaMAP = new Dictionary<double, CChip>();
|
||||||
|
|
||||||
public bool usingLyricsFile; //If lyric file is used (VTT/LRC), ignore #LYRIC tags & do not parse other lyric file tags
|
public bool usingLyricsFile; //If lyric file is used (VTT/LRC), ignore #LYRIC tags & do not parse other lyric file tags
|
||||||
|
|
||||||
@ -1600,6 +1606,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
// Replace non-shared kusudamas by balloons
|
// Replace non-shared kusudamas by balloons
|
||||||
#region [Sync check]
|
#region [Sync check]
|
||||||
|
/*
|
||||||
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
{
|
{
|
||||||
CDTX dtx = dtxarr[i];
|
CDTX dtx = dtxarr[i];
|
||||||
@ -1620,10 +1627,12 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
// Stack balloon values to all remining (= existing) kusudamas to player 1
|
// Stack balloon values to all remining (= existing) kusudamas to player 1
|
||||||
#region [Accumulation]
|
#region [Accumulation]
|
||||||
|
/*
|
||||||
CDTX dtx1 = dtxarr[0];
|
CDTX dtx1 = dtxarr[0];
|
||||||
if (dtx1 == null) return;
|
if (dtx1 == null) return;
|
||||||
foreach (KeyValuePair<double, CChip> kvp in dtx1.kusudaMAP)
|
foreach (KeyValuePair<double, CChip> kvp in dtx1.kusudaMAP)
|
||||||
@ -1653,6 +1662,7 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2427,6 +2437,8 @@ namespace TJAPlayer3
|
|||||||
case 0x15:
|
case 0x15:
|
||||||
case 0x16:
|
case 0x16:
|
||||||
case 0x17:
|
case 0x17:
|
||||||
|
case 0x19:
|
||||||
|
case 0x1D:
|
||||||
case 0x20:
|
case 0x20:
|
||||||
case 0x21:
|
case 0x21:
|
||||||
{
|
{
|
||||||
@ -6469,6 +6481,7 @@ namespace TJAPlayer3
|
|||||||
int? nReturnChip = null;
|
int? nReturnChip = null;
|
||||||
|
|
||||||
//--して取得しないとだめよ~ダメダメ💛
|
//--して取得しないとだめよ~ダメダメ💛
|
||||||
|
//:damedane:
|
||||||
for (int i = listChips.Count - 1; i >= 0; i--)
|
for (int i = listChips.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (b分岐前の連打開始)
|
if (b分岐前の連打開始)
|
||||||
@ -6705,13 +6718,11 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
if (IsEndedBranching)
|
if (IsEndedBranching)
|
||||||
{
|
{
|
||||||
if (!this.kusudaMAP.ContainsKey(chip.n発声時刻ms))
|
|
||||||
kusudaMAP[chip.n発声時刻ms] = chip;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Balloon in branches
|
// Balloon in branches
|
||||||
chip.nチャンネル番号 = 0x17;
|
chip.nチャンネル番号 = 0x19;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,12 +12,15 @@ using TJAPlayer3;
|
|||||||
|
|
||||||
namespace TJAPlayer3
|
namespace TJAPlayer3
|
||||||
{
|
{
|
||||||
|
[Serializable]
|
||||||
public class CScoreIni
|
public class CScoreIni
|
||||||
{
|
{
|
||||||
// プロパティ
|
// プロパティ
|
||||||
|
|
||||||
// [File] セクション
|
// [File] セクション
|
||||||
public STファイル stファイル;
|
public STファイル stファイル;
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
[StructLayout( LayoutKind.Sequential )]
|
[StructLayout( LayoutKind.Sequential )]
|
||||||
public struct STファイル
|
public struct STファイル
|
||||||
{
|
{
|
||||||
@ -42,6 +45,8 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
// 演奏記録セクション(9種類)
|
// 演奏記録セクション(9種類)
|
||||||
public STセクション stセクション;
|
public STセクション stセクション;
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
[StructLayout( LayoutKind.Sequential )]
|
[StructLayout( LayoutKind.Sequential )]
|
||||||
public struct STセクション
|
public struct STセクション
|
||||||
{
|
{
|
||||||
@ -161,6 +166,8 @@ namespace TJAPlayer3
|
|||||||
E = 6,
|
E = 6,
|
||||||
UNKNOWN = 99
|
UNKNOWN = 99
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
public class C演奏記録
|
public class C演奏記録
|
||||||
{
|
{
|
||||||
public STAUTOPLAY bAutoPlay;
|
public STAUTOPLAY bAutoPlay;
|
||||||
|
@ -42,6 +42,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
public class Data
|
public class Data
|
||||||
{
|
{
|
||||||
public string id = "";
|
public string id = "";
|
||||||
|
@ -9,6 +9,7 @@ using System.Threading;
|
|||||||
using TJAPlayer3.C曲リストノードComparers;
|
using TJAPlayer3.C曲リストノードComparers;
|
||||||
using FDK;
|
using FDK;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace TJAPlayer3
|
namespace TJAPlayer3
|
||||||
{
|
{
|
||||||
@ -47,8 +48,7 @@ namespace TJAPlayer3
|
|||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
/*[NonSerialized]
|
public Dictionary<string, C曲リストノード> listSongsDB; // songs.dbから構築されるlist
|
||||||
public List<Cスコア> listSongsDB;*/ // songs.dbから構築されるlist
|
|
||||||
public List<C曲リストノード> list曲ルート; // 起動時にフォルダ検索して構築されるlist
|
public List<C曲リストノード> list曲ルート; // 起動時にフォルダ検索して構築されるlist
|
||||||
public List<C曲リストノード> list曲ルート_Dan = new List<C曲リストノード>(); // 起動時にフォルダ検索して構築されるlist
|
public List<C曲リストノード> list曲ルート_Dan = new List<C曲リストノード>(); // 起動時にフォルダ検索して構築されるlist
|
||||||
public List<C曲リストノード> list曲ルート_Tower = new List<C曲リストノード>(); // 起動時にフォルダ検索して構築されるlist
|
public List<C曲リストノード> list曲ルート_Tower = new List<C曲リストノード>(); // 起動時にフォルダ検索して構築されるlist
|
||||||
@ -83,7 +83,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
public CSongs管理()
|
public CSongs管理()
|
||||||
{
|
{
|
||||||
//this.listSongsDB = new List<Cスコア>();
|
this.listSongsDB = new ();
|
||||||
this.list曲ルート = new List<C曲リストノード>();
|
this.list曲ルート = new List<C曲リストノード>();
|
||||||
this.n検索された曲ノード数 = 0;
|
this.n検索された曲ノード数 = 0;
|
||||||
this.n検索されたスコア数 = 0;
|
this.n検索されたスコア数 = 0;
|
||||||
@ -151,7 +151,6 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
t曲を検索してリストを作成する(path, true, downloadBox.list子リスト, downloadBox);
|
t曲を検索してリストを作成する(path, true, downloadBox.list子リスト, downloadBox);
|
||||||
this.t曲リストへ後処理を適用する(downloadBox.list子リスト, $"/{downloadBox.strタイトル}/");
|
this.t曲リストへ後処理を適用する(downloadBox.list子リスト, $"/{downloadBox.strタイトル}/");
|
||||||
tSongsDBになかった曲をファイルから読み込んで反映する(downloadBox.list子リスト);
|
|
||||||
downloadBox.list子リスト.Insert(0, CSongDict.tGenerateBackButton(downloadBox, $"/{downloadBox.strタイトル}/"));
|
downloadBox.list子リスト.Insert(0, CSongDict.tGenerateBackButton(downloadBox, $"/{downloadBox.strタイトル}/"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,7 +203,6 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
#region[ 新処理 ]
|
#region[ 新処理 ]
|
||||||
|
|
||||||
CDTX dtx = new CDTX( fileinfo.FullName, false, 1.0, 0, 1 );
|
|
||||||
|
|
||||||
C曲リストノード c曲リストノード = new C曲リストノード();
|
C曲リストノード c曲リストノード = new C曲リストノード();
|
||||||
c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.SCORE;
|
c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.SCORE;
|
||||||
@ -212,6 +210,7 @@ namespace TJAPlayer3
|
|||||||
bool b = false;
|
bool b = false;
|
||||||
for( int n = 0; n < (int)Difficulty.Total; n++ )
|
for( int n = 0; n < (int)Difficulty.Total; n++ )
|
||||||
{
|
{
|
||||||
|
CDTX dtx = new CDTX( fileinfo.FullName, false, 1.0, 0, 1 );
|
||||||
if( dtx.b譜面が存在する[ n ] )
|
if( dtx.b譜面が存在する[ n ] )
|
||||||
{
|
{
|
||||||
c曲リストノード.nスコア数++;
|
c曲リストノード.nスコア数++;
|
||||||
@ -284,6 +283,9 @@ namespace TJAPlayer3
|
|||||||
c曲リストノード.arスコア[ n ].ScoreIni情報.ファイルサイズ = infoScoreIni.Length;
|
c曲リストノード.arスコア[ n ].ScoreIni情報.ファイルサイズ = infoScoreIni.Length;
|
||||||
c曲リストノード.arスコア[ n ].ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime;
|
c曲リストノード.arスコア[ n ].ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoadChartInfo(c曲リストノード, dtx, n);
|
||||||
|
|
||||||
if( b == false )
|
if( b == false )
|
||||||
{
|
{
|
||||||
this.n検索されたスコア数++;
|
this.n検索されたスコア数++;
|
||||||
@ -293,7 +295,6 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dtx = null;
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@ -332,7 +333,30 @@ namespace TJAPlayer3
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
#region[ 新処理 ]
|
#region[ 新処理 ]
|
||||||
CDTX dtx = new CDTX( str基点フォルダ + fileinfo.Name, false, 1.0, 0, 0 );
|
|
||||||
|
string filePath = str基点フォルダ + fileinfo.Name;
|
||||||
|
|
||||||
|
using SHA1 hashProvider = SHA1.Create();
|
||||||
|
var fs = File.OpenRead(filePath);
|
||||||
|
byte[] rawhash = hashProvider.ComputeHash(fs);
|
||||||
|
string hash = "";
|
||||||
|
for (int i = 0; i < rawhash.Length; i++) {
|
||||||
|
hash += string.Format("{0:X2}", rawhash[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.Dispose();
|
||||||
|
|
||||||
|
if (listSongsDB.TryGetValue(filePath + hash, out C曲リストノード value))
|
||||||
|
{
|
||||||
|
this.n検索されたスコア数++;
|
||||||
|
listノードリスト.Add( value );
|
||||||
|
CSongDict.tAddSongNode(value.uniqueId, value);
|
||||||
|
value.r親ノード = node親;
|
||||||
|
this.n検索された曲ノード数++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CDTX dtx = new CDTX(filePath , false, 1.0, 0, 0 );
|
||||||
C曲リストノード c曲リストノード = new C曲リストノード();
|
C曲リストノード c曲リストノード = new C曲リストノード();
|
||||||
c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.SCORE;
|
c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.SCORE;
|
||||||
|
|
||||||
@ -352,8 +376,19 @@ namespace TJAPlayer3
|
|||||||
c曲リストノード.nSide = dtx.SIDE;
|
c曲リストノード.nSide = dtx.SIDE;
|
||||||
c曲リストノード.bExplicit = dtx.EXPLICIT;
|
c曲リストノード.bExplicit = dtx.EXPLICIT;
|
||||||
|
|
||||||
|
if (dtx.TITLE == "例2")
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
c曲リストノード.DanSongs = new ();
|
||||||
if (dtx.List_DanSongs != null)
|
if (dtx.List_DanSongs != null)
|
||||||
c曲リストノード.DanSongs = dtx.List_DanSongs;
|
{
|
||||||
|
for(int i = 0; i < dtx.List_DanSongs.Count; i++)
|
||||||
|
{
|
||||||
|
c曲リストノード.DanSongs.Add(dtx.List_DanSongs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (dtx.Dan_C != null)
|
if (dtx.Dan_C != null)
|
||||||
c曲リストノード.Dan_C = dtx.Dan_C;
|
c曲リストノード.Dan_C = dtx.Dan_C;
|
||||||
@ -493,10 +528,14 @@ namespace TJAPlayer3
|
|||||||
c曲リストノード.arスコア[ n ].ScoreIni情報.ファイルサイズ = infoScoreIni.Length;
|
c曲リストノード.arスコア[ n ].ScoreIni情報.ファイルサイズ = infoScoreIni.Length;
|
||||||
c曲リストノード.arスコア[ n ].ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime;
|
c曲リストノード.arスコア[ n ].ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoadChartInfo(c曲リストノード, dtx, n);
|
||||||
|
|
||||||
if( b == false )
|
if( b == false )
|
||||||
{
|
{
|
||||||
this.n検索されたスコア数++;
|
this.n検索されたスコア数++;
|
||||||
listノードリスト.Add( c曲リストノード );
|
listノードリスト.Add( c曲リストノード );
|
||||||
|
if (!listSongsDB.ContainsKey(filePath + hash)) listSongsDB.Add(filePath + hash, c曲リストノード );
|
||||||
this.n検索された曲ノード数++;
|
this.n検索された曲ノード数++;
|
||||||
b = true;
|
b = true;
|
||||||
}
|
}
|
||||||
@ -528,6 +567,7 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -732,27 +772,7 @@ namespace TJAPlayer3
|
|||||||
//-----------------
|
//-----------------
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region [ SongsDBになかった曲をファイルから読み込んで反映する ]
|
private void LoadChartInfo(C曲リストノード c曲リストノード, CDTX cdtx, int i)
|
||||||
//-----------------
|
|
||||||
public void tSongsDBになかった曲をファイルから読み込んで反映する()
|
|
||||||
{
|
|
||||||
this.nファイルから反映できたスコア数 = 0;
|
|
||||||
this.tSongsDBになかった曲をファイルから読み込んで反映する( this.list曲ルート );
|
|
||||||
}
|
|
||||||
private void tSongsDBになかった曲をファイルから読み込んで反映する( List<C曲リストノード> ノードリスト )
|
|
||||||
{
|
|
||||||
foreach( C曲リストノード c曲リストノード in ノードリスト )
|
|
||||||
{
|
|
||||||
SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす
|
|
||||||
|
|
||||||
if( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX )
|
|
||||||
{
|
|
||||||
this.tSongsDBになかった曲をファイルから読み込んで反映する( c曲リストノード.list子リスト );
|
|
||||||
}
|
|
||||||
else if( ( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE )
|
|
||||||
|| ( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI ) )
|
|
||||||
{
|
|
||||||
for( int i = 0; i < (int)Difficulty.Total; i++ )
|
|
||||||
{
|
{
|
||||||
if( ( c曲リストノード.arスコア[ i ] != null ) && !c曲リストノード.arスコア[ i ].bSongDBにキャッシュがあった )
|
if( ( c曲リストノード.arスコア[ i ] != null ) && !c曲リストノード.arスコア[ i ].bSongDBにキャッシュがあった )
|
||||||
{
|
{
|
||||||
@ -763,10 +783,6 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CDTX cdtx = new CDTX( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス, true, 0, 0, 0 );
|
|
||||||
if( File.Exists( c曲リストノード.arスコア[ i ].ファイル情報.フォルダの絶対パス + "set.def" ) )
|
|
||||||
cdtx = new CDTX( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス, true, 0, 0, 1 );
|
|
||||||
|
|
||||||
c曲リストノード.arスコア[ i ].譜面情報.タイトル = cdtx.TITLE;
|
c曲リストノード.arスコア[ i ].譜面情報.タイトル = cdtx.TITLE;
|
||||||
|
|
||||||
|
|
||||||
@ -866,12 +882,7 @@ namespace TJAPlayer3
|
|||||||
//-----------------
|
//-----------------
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var scoreIniPath = c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス;// + ".score.ini";
|
this.tScoreIniを読み込んで譜面情報を設定する(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, c曲リストノード.arスコア[i]);
|
||||||
|
|
||||||
if( File.Exists( scoreIniPath ) )
|
|
||||||
{
|
|
||||||
this.tScoreIniを読み込んで譜面情報を設定する(scoreIniPath, c曲リストノード.arスコア[i]);
|
|
||||||
}
|
|
||||||
// Legacy save files from DTX mania
|
// Legacy save files from DTX mania
|
||||||
/*
|
/*
|
||||||
else
|
else
|
||||||
@ -894,11 +905,6 @@ namespace TJAPlayer3
|
|||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-----------------
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region [ 曲リストへ後処理を適用する ]
|
#region [ 曲リストへ後処理を適用する ]
|
||||||
//-----------------
|
//-----------------
|
||||||
@ -953,14 +959,18 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
this.t曲リストへ後処理を適用する(this.list曲ルート);
|
this.t曲リストへ後処理を適用する(this.list曲ルート);
|
||||||
|
|
||||||
foreach (C曲リストノード c曲リストノード in list曲ルート)
|
for (int p = 0; p < list曲ルート.Count; p++)
|
||||||
{
|
{
|
||||||
|
var c曲リストノード = list曲ルート[p];
|
||||||
if (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX)
|
if (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX)
|
||||||
{
|
{
|
||||||
if (c曲リストノード.strジャンル == "段位道場")
|
if (c曲リストノード.strジャンル == "段位道場")
|
||||||
{
|
{
|
||||||
if (TJAPlayer3.ConfigIni.bDanTowerHide)
|
if (TJAPlayer3.ConfigIni.bDanTowerHide)
|
||||||
|
{
|
||||||
list曲ルート.Remove(c曲リストノード);
|
list曲ルート.Remove(c曲リストノード);
|
||||||
|
p--;
|
||||||
|
}
|
||||||
|
|
||||||
// Add to dojo
|
// Add to dojo
|
||||||
list曲ルート_Dan = c曲リストノード.list子リスト;
|
list曲ルート_Dan = c曲リストノード.list子リスト;
|
||||||
@ -978,7 +988,10 @@ namespace TJAPlayer3
|
|||||||
else if (c曲リストノード.strジャンル == "太鼓タワー")
|
else if (c曲リストノード.strジャンル == "太鼓タワー")
|
||||||
{
|
{
|
||||||
if (TJAPlayer3.ConfigIni.bDanTowerHide)
|
if (TJAPlayer3.ConfigIni.bDanTowerHide)
|
||||||
|
{
|
||||||
list曲ルート.Remove(c曲リストノード);
|
list曲ルート.Remove(c曲リストノード);
|
||||||
|
p--;
|
||||||
|
}
|
||||||
|
|
||||||
list曲ルート_Tower = c曲リストノード.list子リスト;
|
list曲ルート_Tower = c曲リストノード.list子リスト;
|
||||||
}
|
}
|
||||||
@ -1461,6 +1474,38 @@ Debug.WriteLine( dBPM + ":" + c曲リストノード.strタイトル );
|
|||||||
{
|
{
|
||||||
//var ini = new CScoreIni( strScoreIniファイルパス );
|
//var ini = new CScoreIni( strScoreIniファイルパス );
|
||||||
|
|
||||||
|
/*
|
||||||
|
CScoreIni getScoreIni(string filePath)
|
||||||
|
{
|
||||||
|
if (!File.Exists(filePath))
|
||||||
|
{
|
||||||
|
var result = new CScoreIni(filePath);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
using SHA1 hashProvider = SHA1.Create();
|
||||||
|
var fs = File.OpenRead(filePath);
|
||||||
|
byte[] rawhash = hashProvider.ComputeHash(fs);
|
||||||
|
string hash = "";
|
||||||
|
for (int i = 0; i < rawhash.Length; i++) {
|
||||||
|
hash += string.Format("{0:X2}", rawhash[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.Dispose();
|
||||||
|
|
||||||
|
if (listScoreDB.TryGetValue(hash, out CScoreIni value))
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var result = new CScoreIni(filePath);
|
||||||
|
listScoreDB.Add(hash, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
CScoreIni[] csi =
|
CScoreIni[] csi =
|
||||||
{
|
{
|
||||||
//new CScoreIni(fp[mainFile]),
|
//new CScoreIni(fp[mainFile]),
|
||||||
|
@ -8,6 +8,7 @@ namespace TJAPlayer3
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 段位認定を管理するクラス。
|
/// 段位認定を管理するクラス。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
public class Dan_C
|
public class Dan_C
|
||||||
{
|
{
|
||||||
public Dan_C()
|
public Dan_C()
|
||||||
|
@ -59,6 +59,7 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
if ( this.IsDeActivated )
|
if ( this.IsDeActivated )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
base.DeActivate();
|
base.DeActivate();
|
||||||
this.ctNowEnumeratingSongs = null;
|
this.ctNowEnumeratingSongs = null;
|
||||||
}
|
}
|
||||||
|
@ -289,47 +289,6 @@ namespace TJAPlayer3
|
|||||||
Trace.TraceInformation( "コンパクトモードなので残りの起動処理は省略します。" );
|
Trace.TraceInformation( "コンパクトモードなので残りの起動処理は省略します。" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region [ 00) songlist.dbの読み込みによる曲リストの構築 ]
|
|
||||||
//-----------------------------
|
|
||||||
TJAPlayer3.stage起動.eフェーズID = CStage.Eフェーズ.起動00_songlistから曲リストを作成する;
|
|
||||||
|
|
||||||
Trace.TraceInformation( "1) songlist.dbを読み込みます。" );
|
|
||||||
Trace.Indent();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if ( !TJAPlayer3.ConfigIni.bConfigIniがないかDTXManiaのバージョンが異なる )
|
|
||||||
{
|
|
||||||
CSongs管理 s = new CSongs管理();
|
|
||||||
s = Deserialize( strPathSongList ); // 直接this.Songs管理にdeserialize()結果を代入するのは避ける。nullにされてしまうことがあるため。
|
|
||||||
if ( s != null )
|
|
||||||
{
|
|
||||||
this.Songs管理 = s;
|
|
||||||
}
|
|
||||||
|
|
||||||
int scores = this.Songs管理.n検索されたスコア数;
|
|
||||||
Trace.TraceInformation( "songlist.db の読み込みを完了しました。[{0}スコア]", scores );
|
|
||||||
lock ( TJAPlayer3.stage起動.list進行文字列 )
|
|
||||||
{
|
|
||||||
TJAPlayer3.stage起動.list進行文字列.Add( "SONG LIST...OK" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Trace.TraceInformation( "初回の起動であるかまたはDTXManiaのバージョンが上がったため、songlist.db の読み込みをスキップします。" );
|
|
||||||
lock ( TJAPlayer3.stage起動.list進行文字列 )
|
|
||||||
{
|
|
||||||
TJAPlayer3.stage起動.list進行文字列.Add( "SONG LIST...SKIPPED" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
Trace.Unindent();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -359,6 +318,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Deserialize();
|
||||||
|
|
||||||
#region [ 2) 曲データの検索 ]
|
#region [ 2) 曲データの検索 ]
|
||||||
//-----------------------------
|
//-----------------------------
|
||||||
@ -426,6 +386,7 @@ namespace TJAPlayer3
|
|||||||
//-----------------------------
|
//-----------------------------
|
||||||
// base.eフェーズID = CStage.Eフェーズ.起動4_スコアキャッシュになかった曲をファイルから読み込んで反映する;
|
// base.eフェーズID = CStage.Eフェーズ.起動4_スコアキャッシュになかった曲をファイルから読み込んで反映する;
|
||||||
|
|
||||||
|
/*
|
||||||
int num2 = this.Songs管理.n検索されたスコア数 - this.Songs管理.nスコアキャッシュから反映できたスコア数;
|
int num2 = this.Songs管理.n検索されたスコア数 - this.Songs管理.nスコアキャッシュから反映できたスコア数;
|
||||||
|
|
||||||
Trace.TraceInformation( "{0}, {1}", this.Songs管理.n検索されたスコア数, this.Songs管理.nスコアキャッシュから反映できたスコア数 );
|
Trace.TraceInformation( "{0}, {1}", this.Songs管理.n検索されたスコア数, this.Songs管理.nスコアキャッシュから反映できたスコア数 );
|
||||||
@ -450,6 +411,7 @@ namespace TJAPlayer3
|
|||||||
// {
|
// {
|
||||||
// this.list進行文字列.Add( string.Format( "{0} ... {1}/{2}", "Loading score properties from files", CDTXMania.Songs管理_裏読.nファイルから反映できたスコア数, CDTXMania.Songs管理_裏読.n検索されたスコア数 - cs.nスコアキャッシュから反映できたスコア数 ) );
|
// this.list進行文字列.Add( string.Format( "{0} ... {1}/{2}", "Loading score properties from files", CDTXMania.Songs管理_裏読.nファイルから反映できたスコア数, CDTXMania.Songs管理_裏読.n検索されたスコア数 - cs.nスコアキャッシュから反映できたスコア数 ) );
|
||||||
// }
|
// }
|
||||||
|
*/
|
||||||
//-----------------------------
|
//-----------------------------
|
||||||
#endregion
|
#endregion
|
||||||
#region [ 5) 曲リストへの後処理の適用 ]
|
#region [ 5) 曲リストへの後処理の適用 ]
|
||||||
@ -485,7 +447,7 @@ namespace TJAPlayer3
|
|||||||
Trace.TraceInformation( "enum7) 曲データの情報を songlist.db へ出力します。" );
|
Trace.TraceInformation( "enum7) 曲データの情報を songlist.db へ出力します。" );
|
||||||
Trace.Indent();
|
Trace.Indent();
|
||||||
|
|
||||||
SerializeSongList( this.Songs管理, strPathSongList );
|
SerializeSongList();
|
||||||
Trace.TraceInformation("songlist.db への出力を完了しました。");
|
Trace.TraceInformation("songlist.db への出力を完了しました。");
|
||||||
Trace.Unindent();
|
Trace.Unindent();
|
||||||
//-----------------------------
|
//-----------------------------
|
||||||
@ -507,42 +469,15 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma warning disable SYSLIB0011
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 曲リストのserialize
|
/// 曲リストのserialize
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static void SerializeSongList( CSongs管理 cs, string strPathSongList )
|
private void SerializeSongList()
|
||||||
{
|
{
|
||||||
bool bSucceededSerialize = true;
|
BinaryFormatter songlistdb_ = new BinaryFormatter();
|
||||||
try
|
using Stream songlistdb = File.OpenWrite($"{TJAPlayer3.strEXEのあるフォルダ}songlist.db");
|
||||||
{
|
songlistdb_.Serialize(songlistdb, Songs管理.listSongsDB);
|
||||||
using(StreamWriter stream = new StreamWriter(strPathSongList))
|
|
||||||
{
|
|
||||||
string temp = JsonSerializer.Serialize(cs);
|
|
||||||
stream.Write(temp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch ( Exception e )
|
|
||||||
{
|
|
||||||
bSucceededSerialize = false;
|
|
||||||
Trace.TraceError( e.ToString() );
|
|
||||||
Trace.TraceError( "例外が発生しましたが処理を継続します。 (9ad477a4-d922-412c-b87d-e3a49a608e92)" );
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if ( !bSucceededSerialize )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.Delete( strPathSongList ); // serializeに失敗したら、songs2.dbファイルを消しておく
|
|
||||||
}
|
|
||||||
catch ( Exception e )
|
|
||||||
{
|
|
||||||
Trace.TraceError( e.ToString() );
|
|
||||||
Trace.TraceError( "例外が発生しましたが処理を継続します。 (62860c67-b44f-46f4-b4fc-999c6fe18cce)" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -550,42 +485,25 @@ namespace TJAPlayer3
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="songs管理"></param>
|
/// <param name="songs管理"></param>
|
||||||
/// <param name="strPathSongList"></param>
|
/// <param name="strPathSongList"></param>
|
||||||
private CSongs管理 Deserialize( string strPathSongList )
|
public void Deserialize()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#region [ SongListDB(songlist.db)を読み込む ]
|
if (File.Exists($"{TJAPlayer3.strEXEのあるフォルダ}songlist.db"))
|
||||||
|
|
||||||
if (!File.Exists(strPathSongList))
|
|
||||||
{
|
{
|
||||||
return null;
|
BinaryFormatter songlistdb_ = new BinaryFormatter();
|
||||||
|
using Stream songlistdb = File.OpenRead($"{TJAPlayer3.strEXEのあるフォルダ}songlist.db");
|
||||||
|
this.Songs管理.listSongsDB = (Dictionary<string, C曲リストノード>)songlistdb_.Deserialize(songlistdb);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// byte[] buf = File.ReadAllBytes( SongListDBファイル名 ); // 一旦メモリにまとめ読みしてからdeserializeした方が高速かと思ったら全く変わらなかったので削除
|
catch(Exception exception)
|
||||||
// using ( MemoryStream input = new MemoryStream(buf, false) )
|
|
||||||
using ( StreamReader input = new StreamReader(strPathSongList) )
|
|
||||||
{
|
{
|
||||||
try
|
this.Songs管理.listSongsDB = new();
|
||||||
|
}
|
||||||
|
finally
|
||||||
{
|
{
|
||||||
return JsonSerializer.Deserialize<CSongs管理>(input.ReadToEnd());
|
|
||||||
}
|
|
||||||
catch ( Exception e )
|
|
||||||
{
|
|
||||||
// songs管理 = null;
|
|
||||||
|
|
||||||
Trace.TraceError( e.ToString() );
|
|
||||||
Trace.TraceError( "例外が発生しましたが処理を継続します。 (a4289e34-7140-4b67-b821-3b5370a725e1)" );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#pragma warning restore SYSLIB0011
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Trace.TraceError( "songlist.db の読み込みに失敗しました。" );
|
|
||||||
Trace.TraceError( e.ToString() );
|
|
||||||
Trace.TraceError( "例外が発生しましたが処理を継続します。 (5a907ed2-f849-4bc4-acd0-d2a6aa3c9c87)" );
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2956,7 +2956,7 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
if (i >= 2) continue;
|
if (i >= 2) continue;
|
||||||
|
|
||||||
displayTowerStatus(x + TJAPlayer3.Skin.SongSelect_DanStatus_Offset_X[i], y + TJAPlayer3.Skin.SongSelect_DanStatus_Offset_Y[i], Math.Min(クリア[i][0], 7) - 1, 0.3f);
|
displayTowerStatus(x + TJAPlayer3.Skin.SongSelect_TowerStatus_Offset_X[i], y + TJAPlayer3.Skin.SongSelect_TowerStatus_Offset_Y[i], Math.Min(クリア[i][0], 7) - 1, 0.3f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2967,7 +2967,7 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
if (i >= 2) continue;
|
if (i >= 2) continue;
|
||||||
|
|
||||||
displayRegularCrowns(x + TJAPlayer3.Skin.SongSelect_DanStatus_Offset_X[i], y + TJAPlayer3.Skin.SongSelect_DanStatus_Offset_Y[i], クリア[i], スコアランク[i], 0.8f);
|
displayRegularCrowns(x + TJAPlayer3.Skin.SongSelect_RegularCrowns_Offset_X[i], y + TJAPlayer3.Skin.SongSelect_RegularCrowns_Offset_Y[i], クリア[i], スコアランク[i], 0.8f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,6 +100,7 @@ namespace TJAPlayer3
|
|||||||
public override void Activate()
|
public override void Activate()
|
||||||
{
|
{
|
||||||
listChip = new List<CDTX.CChip>[ 5 ];
|
listChip = new List<CDTX.CChip>[ 5 ];
|
||||||
|
List<CDTX.CChip>[] balloonChips = new List<CDTX.CChip>[5];
|
||||||
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
|
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
|
||||||
{
|
{
|
||||||
nNoteCount[i] = 0;
|
nNoteCount[i] = 0;
|
||||||
@ -126,6 +127,20 @@ namespace TJAPlayer3
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (TJAPlayer3.ConfigIni.nPlayerCount >= 2)
|
||||||
|
{
|
||||||
|
balloonChips[i] = new();
|
||||||
|
for(int j = 0; j < listChip[i].Count; j++)
|
||||||
|
{
|
||||||
|
var chip = listChip[i][j];
|
||||||
|
|
||||||
|
if (NotesManager.IsGenericBalloon(chip))
|
||||||
|
{
|
||||||
|
balloonChips[i].Add(chip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int n整数値管理 = 0;
|
int n整数値管理 = 0;
|
||||||
if (r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(0, i) != null) //2020.07.08 Mr-Ojii 未ヒットチップがないときの例外の発生回避 <-(KabanFriends)コード借りましたごめんなさい(´・ω・`)
|
if (r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(0, i) != null) //2020.07.08 Mr-Ojii 未ヒットチップがないときの例外の発生回避 <-(KabanFriends)コード借りましたごめんなさい(´・ω・`)
|
||||||
{
|
{
|
||||||
@ -168,6 +183,58 @@ namespace TJAPlayer3
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (TJAPlayer3.ConfigIni.nPlayerCount >= 2)
|
||||||
|
{
|
||||||
|
for(int j = 0; j < balloonChips[i].Count; j++)
|
||||||
|
{
|
||||||
|
var chip = balloonChips[i][j];
|
||||||
|
if (NotesManager.IsKusudama(chip))
|
||||||
|
{
|
||||||
|
for(int p = 0; p < TJAPlayer3.ConfigIni.nPlayerCount; p++)
|
||||||
|
{
|
||||||
|
if (p == i) continue;
|
||||||
|
var chip2 = balloonChips[p].Find(x => Math.Abs(x.db発声時刻ms - chip.db発声時刻ms) < 100);
|
||||||
|
|
||||||
|
if (chip2 == null)
|
||||||
|
{
|
||||||
|
var chip3 = listChip[p].Find(x => Math.Abs(x.db発声時刻ms - chip.db発声時刻ms) < 100);
|
||||||
|
if (!NotesManager.IsKusudama(chip3))
|
||||||
|
{
|
||||||
|
chip.nチャンネル番号 = 0x17;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!NotesManager.IsKusudama(chip2))
|
||||||
|
{
|
||||||
|
chip.nチャンネル番号 = 0x17;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
for(int p = 0; p < TJAPlayer3.ConfigIni.nPlayerCount; p++)
|
||||||
|
{
|
||||||
|
for(int j = 0; j < balloonChips[p].Count; j++)
|
||||||
|
{
|
||||||
|
var chip = balloonChips[i].Find(x => Math.Abs(x.db発声時刻ms - balloonChips[p][j].db発声時刻ms) < 100);
|
||||||
|
if (chip == null)
|
||||||
|
{
|
||||||
|
var chip2 = listChip[i].Find(x => Math.Abs(x.db発声時刻ms - balloonChips[p][j].db発声時刻ms) < 100);
|
||||||
|
if (NotesManager.IsKusudama(chip2))
|
||||||
|
{
|
||||||
|
chip.nチャンネル番号 = NotesManager.GetNoteValueFromChar("7");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (NotesManager.IsKusudama(chip) && !NotesManager.IsKusudama(balloonChips[p][j]))
|
||||||
|
{
|
||||||
|
chip.nチャンネル番号 = balloonChips[p][j].nチャンネル番号;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int _totalNotes = 0;
|
int _totalNotes = 0;
|
||||||
int _totalBalloons = 0;
|
int _totalBalloons = 0;
|
||||||
double _totalRolls = 0;
|
double _totalRolls = 0;
|
||||||
@ -202,7 +269,7 @@ namespace TJAPlayer3
|
|||||||
_totalBalloons += Math.Min(_chip.nBalloon, _expectedHits);
|
_totalBalloons += Math.Min(_chip.nBalloon, _expectedHits);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NotesManager.IsRoll(_chip))
|
if (NotesManager.IsRoll(_chip) || NotesManager.IsFuzeRoll(_chip))
|
||||||
_totalRolls += (_chip.nノーツ終了時刻ms - _chip.n発声時刻ms) / 1000.0;
|
_totalRolls += (_chip.nノーツ終了時刻ms - _chip.n発声時刻ms) / 1000.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,6 +430,8 @@ namespace TJAPlayer3
|
|||||||
this.bUseBranch = new bool[]{ false, false, false, false, false };
|
this.bUseBranch = new bool[]{ false, false, false, false, false };
|
||||||
this.n現在のコース = new CDTX.ECourse[5];
|
this.n現在のコース = new CDTX.ECourse[5];
|
||||||
this.n次回のコース = new CDTX.ECourse[5];
|
this.n次回のコース = new CDTX.ECourse[5];
|
||||||
|
nCurrentKusudamaRollCount = 0;
|
||||||
|
nCurrentKusudamaCount = 0;
|
||||||
|
|
||||||
for (int i = 0; i < 5; i++)
|
for (int i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
@ -933,6 +1002,8 @@ namespace TJAPlayer3
|
|||||||
public double nBranch条件数値A;
|
public double nBranch条件数値A;
|
||||||
public double nBranch条件数値B;
|
public double nBranch条件数値B;
|
||||||
private readonly int[] NowProcessingChip = new int[] { 0, 0, 0, 0, 0 };
|
private readonly int[] NowProcessingChip = new int[] { 0, 0, 0, 0, 0 };
|
||||||
|
protected int nCurrentKusudamaRollCount;
|
||||||
|
protected int nCurrentKusudamaCount;
|
||||||
|
|
||||||
private float _AIBattleState;
|
private float _AIBattleState;
|
||||||
private Queue<float>[] _AIBattleStateBatch;
|
private Queue<float>[] _AIBattleStateBatch;
|
||||||
@ -1161,7 +1232,7 @@ namespace TJAPlayer3
|
|||||||
pChip.nLag = (int) ( nTime - pChip.n発声時刻ms ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature
|
pChip.nLag = (int) ( nTime - pChip.n発声時刻ms ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature
|
||||||
int nDeltaTime = Math.Abs( pChip.nLag );
|
int nDeltaTime = Math.Abs( pChip.nLag );
|
||||||
//Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));
|
//Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));
|
||||||
if(NotesManager.IsRoll(pChip))
|
if(NotesManager.IsRoll(pChip) || NotesManager.IsFuzeRoll(pChip))
|
||||||
{
|
{
|
||||||
if ((SoundManager.PlayTimer.NowTimeMs * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) > pChip.n発声時刻ms && (SoundManager.PlayTimer.NowTimeMs * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) < pChip.nノーツ終了時刻ms)
|
if ((SoundManager.PlayTimer.NowTimeMs * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) > pChip.n発声時刻ms && (SoundManager.PlayTimer.NowTimeMs * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) < pChip.nノーツ終了時刻ms)
|
||||||
{
|
{
|
||||||
@ -1236,7 +1307,7 @@ namespace TJAPlayer3
|
|||||||
//while ( nIndex_NearestChip_Future < count ) // 未来方向への検索
|
//while ( nIndex_NearestChip_Future < count ) // 未来方向への検索
|
||||||
for ( ; nIndex_NearestChip_Future < count; nIndex_NearestChip_Future++)
|
for ( ; nIndex_NearestChip_Future < count; nIndex_NearestChip_Future++)
|
||||||
{
|
{
|
||||||
if ( ( ( 0x11 <= nChannel ) && ( nChannel <= 0x17 ) ) )
|
if ( ( ( 0x11 <= nChannel ) && ( nChannel <= 0x17 ) ) || nChannel == 0x19 )
|
||||||
{
|
{
|
||||||
CDTX.CChip chip = playerListChip[ nIndex_NearestChip_Future ];
|
CDTX.CChip chip = playerListChip[ nIndex_NearestChip_Future ];
|
||||||
|
|
||||||
@ -1261,7 +1332,7 @@ namespace TJAPlayer3
|
|||||||
//while ( nIndex_NearestChip_Past >= 0 ) // 過去方向への検索
|
//while ( nIndex_NearestChip_Past >= 0 ) // 過去方向への検索
|
||||||
for ( ; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past-- )
|
for ( ; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past-- )
|
||||||
{
|
{
|
||||||
if ( (( 0x15 <= nChannel ) && ( nChannel <= 0x17 ) || (nChannel == 0x20 || nChannel == 0x21)) )
|
if ( ((( 0x15 <= nChannel ) && ( nChannel <= 0x17 ) || nChannel == 0x19) || (nChannel == 0x20 || nChannel == 0x21)) )
|
||||||
{
|
{
|
||||||
CDTX.CChip chip = playerListChip[ nIndex_NearestChip_Past ];
|
CDTX.CChip chip = playerListChip[ nIndex_NearestChip_Past ];
|
||||||
|
|
||||||
@ -1532,35 +1603,44 @@ namespace TJAPlayer3
|
|||||||
bool IsKusudama = NotesManager.IsKusudama(pChip);
|
bool IsKusudama = NotesManager.IsKusudama(pChip);
|
||||||
bool IsFuze = NotesManager.IsFuzeRoll(pChip);
|
bool IsFuze = NotesManager.IsFuzeRoll(pChip);
|
||||||
|
|
||||||
ref int rollCount = ref pChip.nRollCount;
|
int rollCount = pChip.nRollCount;
|
||||||
int balloon = pChip.nBalloon;
|
int balloon = pChip.nBalloon;
|
||||||
|
|
||||||
if (IsKusudama)
|
if (IsKusudama)
|
||||||
{
|
{
|
||||||
var ts = pChip.db発声時刻ms;
|
nCurrentKusudamaRollCount++;
|
||||||
var km = TJAPlayer3.DTX.kusudaMAP;
|
rollCount = nCurrentKusudamaRollCount;
|
||||||
|
balloon = nCurrentKusudamaCount;
|
||||||
if (km.ContainsKey(ts))
|
|
||||||
{
|
|
||||||
rollCount = ref km[ts].nRollCount;
|
|
||||||
balloon = km[ts].nBalloon;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((int)nowTime >= pChip.n発声時刻ms
|
if ((int)nowTime >= pChip.n発声時刻ms
|
||||||
&& (int)nowTime <= pChip.nノーツ終了時刻ms)
|
&& (int)nowTime <= pChip.nノーツ終了時刻ms)
|
||||||
{
|
{
|
||||||
if (rollCount == 0 && this.bPAUSE == false)
|
|
||||||
{
|
|
||||||
if (IsKusudama)
|
if (IsKusudama)
|
||||||
{
|
{
|
||||||
this.n風船残り[0] = balloon;
|
if (nCurrentKusudamaCount > 0)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
|
{
|
||||||
|
this.b連打中[i] = true;
|
||||||
|
actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Balloon_Breaking, true);
|
||||||
|
|
||||||
|
|
||||||
|
if (this.actBalloon.ct風船アニメ[i].IsUnEnded)
|
||||||
|
{
|
||||||
|
this.actBalloon.ct風船アニメ[i] = new CCounter(0, 9, 14, TJAPlayer3.Timer);
|
||||||
|
this.actBalloon.ct風船アニメ[i].CurrentValue = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.n風船残り[player] = balloon;
|
this.actBalloon.ct風船アニメ[i] = new CCounter(0, 9, 14, TJAPlayer3.Timer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this.b連打中[player] = true;
|
this.b連打中[player] = true;
|
||||||
actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Balloon_Breaking, true);
|
actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Balloon_Breaking, true);
|
||||||
|
|
||||||
@ -1574,18 +1654,26 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
this.actBalloon.ct風船アニメ[player] = new CCounter(0, 9, 14, TJAPlayer3.Timer);
|
this.actBalloon.ct風船アニメ[player] = new CCounter(0, 9, 14, TJAPlayer3.Timer);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.eRollState = E連打State.balloon;
|
this.eRollState = E連打State.balloon;
|
||||||
|
|
||||||
|
|
||||||
rollCount++;
|
|
||||||
if (IsKusudama)
|
if (IsKusudama)
|
||||||
{
|
{
|
||||||
this.n風船残り[0]--;
|
//pChip.nRollCount = nCurrentKusudamaRollCount;
|
||||||
|
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
|
{
|
||||||
|
pChip.nRollCount = nCurrentKusudamaRollCount;
|
||||||
|
this.n風船残り[i] = balloon - rollCount;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.n風船残り[player]--;
|
pChip.nRollCount++;
|
||||||
|
rollCount = pChip.nRollCount;
|
||||||
|
this.n風船残り[player] = balloon - rollCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
||||||
@ -1625,29 +1713,35 @@ namespace TJAPlayer3
|
|||||||
this.soundRed[pChip.nPlayerSide]?.PlayStart();
|
this.soundRed[pChip.nPlayerSide]?.PlayStart();
|
||||||
|
|
||||||
|
|
||||||
if (balloon == rollCount)
|
if (this.n風船残り[player] <= 0)
|
||||||
{
|
{
|
||||||
if (IsKusudama)
|
if (IsKusudama)
|
||||||
|
{
|
||||||
|
//パァーン
|
||||||
|
/*
|
||||||
|
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
{
|
{
|
||||||
TJAPlayer3.Skin.soundBalloon.t再生する();
|
TJAPlayer3.Skin.soundBalloon.t再生する();
|
||||||
var ts = pChip.db発声時刻ms;
|
pChip.bHit = true;
|
||||||
for (int j = 0; j < TJAPlayer3.ConfigIni.nPlayerCount; j++)
|
pChip.IsHitted = true;
|
||||||
|
chip現在処理中の連打チップ[i].bHit = true;
|
||||||
|
pChip.b可視 = false;
|
||||||
|
nCurrentKusudamaCount = 0;
|
||||||
{
|
{
|
||||||
var _dtx = new CDTX[5] { TJAPlayer3.DTX, TJAPlayer3.DTX_2P, TJAPlayer3.DTX_3P, TJAPlayer3.DTX_4P, TJAPlayer3.DTX_5P };
|
actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Balloon_Broke, true);
|
||||||
var km = _dtx[j].kusudaMAP;
|
if (actChara.CharaAction_Balloon_Delay[i] != null) actChara.CharaAction_Balloon_Delay[i] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[i]] - 1, 1, TJAPlayer3.Timer);
|
||||||
if (km.ContainsKey(ts))
|
|
||||||
{
|
|
||||||
var tChip = km[ts];
|
|
||||||
tChip.bHit = true;
|
|
||||||
tChip.IsHitted = true;
|
|
||||||
chip現在処理中の連打チップ[j].bHit = true;
|
|
||||||
tChip.b可視 = false;
|
|
||||||
{
|
|
||||||
actChara.ChangeAnime(j, CAct演奏Drumsキャラクター.Anime.Balloon_Broke, true);
|
|
||||||
if (actChara.CharaAction_Balloon_Delay[j] != null) actChara.CharaAction_Balloon_Delay[j] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[j]] - 1, 1, TJAPlayer3.Timer);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
TJAPlayer3.Skin.soundBalloon.t再生する();
|
||||||
|
pChip.bHit = true;
|
||||||
|
pChip.IsHitted = true;
|
||||||
|
chip現在処理中の連打チップ[player].bHit = true;
|
||||||
|
pChip.b可視 = false;
|
||||||
|
nCurrentKusudamaCount = 0;
|
||||||
|
{
|
||||||
|
actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Balloon_Broke, true);
|
||||||
|
if (actChara.CharaAction_Balloon_Delay[player] != null) actChara.CharaAction_Balloon_Delay[player] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[player]] - 1, 1, TJAPlayer3.Timer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1673,11 +1767,25 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (IsKusudama)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
|
{
|
||||||
|
if (chip現在処理中の連打チップ[i] != null)
|
||||||
|
chip現在処理中の連打チップ[i].bHit = true;
|
||||||
|
this.b連打中[i] = false;
|
||||||
|
this.actChara.b風船連打中[i] = false;
|
||||||
|
nCurrentKusudamaCount = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (chip現在処理中の連打チップ[player] != null)
|
if (chip現在処理中の連打チップ[player] != null)
|
||||||
chip現在処理中の連打チップ[player].bHit = true;
|
chip現在処理中の連打チップ[player].bHit = true;
|
||||||
this.b連打中[player] = false;
|
this.b連打中[player] = false;
|
||||||
this.actChara.b風船連打中[player] = false;
|
this.actChara.b風船連打中[player] = false;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -1792,17 +1900,33 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
#region [ Balloon ]
|
#region [ Balloon ]
|
||||||
|
|
||||||
|
bool IsKusudama = NotesManager.IsKusudama(pChip);
|
||||||
|
|
||||||
|
if (IsKusudama)
|
||||||
|
{
|
||||||
|
if (nCurrentKusudamaCount > 0)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
|
{
|
||||||
|
this.b連打中[i] = true;
|
||||||
|
this.actChara.b風船連打中[i] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this.b連打中[nPlayer] = true;
|
this.b連打中[nPlayer] = true;
|
||||||
this.actChara.b風船連打中[nPlayer] = true;
|
this.actChara.b風船連打中[nPlayer] = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (bAutoPlay || rollEffectHit)
|
if (bAutoPlay || rollEffectHit)
|
||||||
{
|
{
|
||||||
bool IsKusudama = NotesManager.IsKusudama(pChip);
|
|
||||||
|
|
||||||
int rollCount = pChip.nRollCount;
|
int rollCount = pChip.nRollCount;
|
||||||
int balloon = pChip.nBalloon;
|
int balloon = pChip.nBalloon;
|
||||||
if (IsKusudama)
|
if (IsKusudama)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
var ts = pChip.db発声時刻ms;
|
var ts = pChip.db発声時刻ms;
|
||||||
var km = TJAPlayer3.DTX.kusudaMAP;
|
var km = TJAPlayer3.DTX.kusudaMAP;
|
||||||
|
|
||||||
@ -1811,6 +1935,10 @@ namespace TJAPlayer3
|
|||||||
rollCount = km[ts].nRollCount;
|
rollCount = km[ts].nRollCount;
|
||||||
balloon = km[ts].nBalloon;
|
balloon = km[ts].nBalloon;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
rollCount = nCurrentKusudamaRollCount;
|
||||||
|
balloon = nCurrentKusudamaCount;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (balloon != 0 && this.bPAUSE == false)
|
if (balloon != 0 && this.bPAUSE == false)
|
||||||
@ -1835,17 +1963,32 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!bAutoPlay && !rollEffectHit)
|
if (!bAutoPlay && !rollEffectHit)
|
||||||
|
{
|
||||||
|
if (!IsKusudama || nCurrentKusudamaCount > 0)
|
||||||
{
|
{
|
||||||
this.tBalloonProcess(pChip, (SoundManager.PlayTimer.NowTime * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)), nPlayer);
|
this.tBalloonProcess(pChip, (SoundManager.PlayTimer.NowTime * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)), nPlayer);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
else if (NotesManager.IsRollEnd(pChip))
|
else if (NotesManager.IsRollEnd(pChip))
|
||||||
{
|
{
|
||||||
if (pChip.nノーツ終了時刻ms <= (SoundManager.PlayTimer.NowTime * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)))
|
if (pChip.nノーツ終了時刻ms <= (SoundManager.PlayTimer.NowTime * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)))
|
||||||
|
{
|
||||||
|
if (NotesManager.IsKusudama(pChip))
|
||||||
|
{
|
||||||
|
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
|
{
|
||||||
|
chip現在処理中の連打チップ[i].bHit = true;
|
||||||
|
this.b連打中[i] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
this.b連打中[nPlayer] = false;
|
this.b連打中[nPlayer] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// this.actChara.b風船連打中[nPlayer] = false;
|
// this.actChara.b風船連打中[nPlayer] = false;
|
||||||
|
|
||||||
@ -3596,6 +3739,15 @@ namespace TJAPlayer3
|
|||||||
this.chip現在処理中の連打チップ[ nPlayer ] = pChip;
|
this.chip現在処理中の連打チップ[ nPlayer ] = pChip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ( !pChip.bProcessed && ( pChip.nバーからの距離dot.Drums < 0 ) )
|
||||||
|
{
|
||||||
|
if (NotesManager.IsKusudama(pChip))
|
||||||
|
{
|
||||||
|
nCurrentKusudamaRollCount = 0;
|
||||||
|
nCurrentKusudamaCount += pChip.nBalloon;
|
||||||
|
pChip.bProcessed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (pChip.n描画優先度 <= 0)
|
if (pChip.n描画優先度 <= 0)
|
||||||
this.t進行描画_チップ_Taiko連打(configIni, ref dTX, ref pChip, nPlayer);
|
this.t進行描画_チップ_Taiko連打(configIni, ref dTX, ref pChip, nPlayer);
|
||||||
}
|
}
|
||||||
@ -3611,6 +3763,8 @@ namespace TJAPlayer3
|
|||||||
pChip.bHit = true;
|
pChip.bHit = true;
|
||||||
if( chip現在処理中の連打チップ[ nPlayer ] != null )
|
if( chip現在処理中の連打チップ[ nPlayer ] != null )
|
||||||
{
|
{
|
||||||
|
nCurrentKusudamaRollCount = 0;
|
||||||
|
nCurrentKusudamaCount = 0;
|
||||||
chip現在処理中の連打チップ[ nPlayer ].bHit = true;
|
chip現在処理中の連打チップ[ nPlayer ].bHit = true;
|
||||||
if (chip現在処理中の連打チップ[nPlayer].nBalloon > chip現在処理中の連打チップ[nPlayer].nRollCount
|
if (chip現在処理中の連打チップ[nPlayer].nBalloon > chip現在処理中の連打チップ[nPlayer].nRollCount
|
||||||
&& chip現在処理中の連打チップ[nPlayer].nRollCount > 0)
|
&& chip現在処理中の連打チップ[nPlayer].nRollCount > 0)
|
||||||
@ -5214,6 +5368,8 @@ namespace TJAPlayer3
|
|||||||
NowProcessingChip[i] = 0;
|
NowProcessingChip[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
nCurrentKusudamaCount = 0;
|
||||||
|
nCurrentKusudamaRollCount = 0;
|
||||||
|
|
||||||
this.ReSetScore(TJAPlayer3.DTX.nScoreInit[0, TJAPlayer3.stage選曲.n確定された曲の難易度[0]], TJAPlayer3.DTX.nScoreDiff[TJAPlayer3.stage選曲.n確定された曲の難易度[0]]);
|
this.ReSetScore(TJAPlayer3.DTX.nScoreInit[0, TJAPlayer3.stage選曲.n確定された曲の難易度[0]], TJAPlayer3.DTX.nScoreDiff[TJAPlayer3.stage選曲.n確定された曲の難易度[0]]);
|
||||||
this.nHand = new int[]{ 0, 0, 0, 0, 0 };
|
this.nHand = new int[]{ 0, 0, 0, 0, 0 };
|
||||||
@ -5256,6 +5412,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
dTX.listChip[i].bHit = false;
|
dTX.listChip[i].bHit = false;
|
||||||
dTX.listChip[i].bShow = true;
|
dTX.listChip[i].bShow = true;
|
||||||
|
dTX.listChip[i].bProcessed = false;
|
||||||
dTX.listChip[i].b可視 = true;
|
dTX.listChip[i].b可視 = true;
|
||||||
dTX.listChip[i].IsHitted = false;
|
dTX.listChip[i].IsHitted = false;
|
||||||
dTX.listChip[i].IsMissed = false;
|
dTX.listChip[i].IsMissed = false;
|
||||||
|
@ -204,9 +204,20 @@ namespace TJAPlayer3
|
|||||||
//CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, n連打数.ToString() );
|
//CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, n連打数.ToString() );
|
||||||
}
|
}
|
||||||
if (n連打数 == 0 && TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player])
|
if (n連打数 == 0 && TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player])
|
||||||
|
{
|
||||||
|
if (btype == EBalloonType.KUSUDAMA)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
|
{
|
||||||
|
TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[i] = false;
|
||||||
|
TJAPlayer3.stage演奏ドラム画面.b連打中[i] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player] = false;
|
TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player] = false;
|
||||||
TJAPlayer3.stage演奏ドラム画面.b連打中[player] = false;
|
TJAPlayer3.stage演奏ドラム画面.b連打中[player] = false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2583,13 +2583,10 @@ namespace TJAPlayer3
|
|||||||
if (chkChip.n発声時刻ms <= (int)nowTime
|
if (chkChip.n発声時刻ms <= (int)nowTime
|
||||||
&& chkChip.nノーツ終了時刻ms + 500 >= (int)nowTime)
|
&& chkChip.nノーツ終了時刻ms + 500 >= (int)nowTime)
|
||||||
{
|
{
|
||||||
if (i == 0 && chkChip.nRollCount == 0 && NotesManager.IsKusudama(chkChip))
|
var balloon = NotesManager.IsKusudama(chkChip) ? nCurrentKusudamaCount : chkChip.nBalloon;
|
||||||
{
|
|
||||||
this.n風船残り[0] = chkChip.nBalloon;
|
|
||||||
}
|
|
||||||
if (!NotesManager.IsFuzeRoll(chkChip)) chkChip.bShow = false;
|
if (!NotesManager.IsFuzeRoll(chkChip)) chkChip.bShow = false;
|
||||||
this.actBalloon.On進行描画(
|
this.actBalloon.On進行描画(
|
||||||
chkChip.nBalloon,
|
balloon,
|
||||||
this.n風船残り[i],
|
this.n風船残り[i],
|
||||||
i,
|
i,
|
||||||
NotesManager.IsFuzeRoll(chkChip)
|
NotesManager.IsFuzeRoll(chkChip)
|
||||||
|
@ -26,7 +26,7 @@ namespace TJAPlayer3
|
|||||||
["6"] = 6, // Big roll start | Konga pink roll
|
["6"] = 6, // Big roll start | Konga pink roll
|
||||||
["7"] = 7, // Balloon
|
["7"] = 7, // Balloon
|
||||||
["8"] = 8, // Roll/Balloon end
|
["8"] = 8, // Roll/Balloon end
|
||||||
["9"] = 7, // Kusudama
|
["9"] = 9, // Kusudama
|
||||||
["A"] = 10, // Joint Big Don (2P)
|
["A"] = 10, // Joint Big Don (2P)
|
||||||
["B"] = 11, // Joint Big Ka (2P)
|
["B"] = 11, // Joint Big Ka (2P)
|
||||||
["C"] = 12, // Mine
|
["C"] = 12, // Mine
|
||||||
|
Loading…
x
Reference in New Issue
Block a user