diff --git a/TJAPlayer3/Songs/CDTX.cs b/TJAPlayer3/Songs/CDTX.cs index 739a4d6e..716b80bf 100644 --- a/TJAPlayer3/Songs/CDTX.cs +++ b/TJAPlayer3/Songs/CDTX.cs @@ -1245,6 +1245,7 @@ namespace TJAPlayer3 private int nNowRoll = 0; private int nNowRollCount = 0; + private int[] nNowRollCountBranch = new int[3]; private int[] n連打チップ_temp = new int[3]; public int nOFFSET = 0; @@ -1340,7 +1341,7 @@ namespace TJAPlayer3 public bool bGOGOTIME; //2018.03.11 kairera0467 public bool[] IsBranchBarDraw = new bool[4]; // 仕様変更により、黄色lineの表示法を変更.2020.04.21.akasoko26 - public bool IsEndedBranching; // BRANCHENDが呼び出されたかどうか + public bool IsEndedBranching = true; // BRANCHENDが呼び出されたかどうか public Dan_C[] Dan_C; public bool IsEnabledFixSENote; @@ -2364,6 +2365,8 @@ namespace TJAPlayer3 int nBar = 0; int nCount = 0; this.nNowRollCount = 0; + for (int i = 0; i < this.nNowRollCountBranch.Length; i++) + this.nNowRollCountBranch[i] = 0; List tmplistlyric = new List(); int BGM番号 = 0; @@ -2393,6 +2396,8 @@ namespace TJAPlayer3 nCount++; this.nNowRollCount++; + for (int i = 0; i < this.nNowRollCountBranch.Length; i++) + this.nNowRollCountBranch[i]++; switch (ch) { @@ -4404,6 +4409,8 @@ namespace TJAPlayer3 else { this.nNowRollCount = listChip.Count; + for (int i = 0; i < this.nNowRollCountBranch.Length; i++) + this.nNowRollCountBranch[i] = listChip_Branch[i].Count; nNowRoll = nObjectNum; } } @@ -4448,9 +4455,11 @@ namespace TJAPlayer3 chip.bGOGOTIME = this.bGOGOTIME; if (NotesManager.IsBalloon(chip) || NotesManager.IsKusudama(chip)) - { - //this.n現在のコースをswitchで分岐していたため風船の値がうまく割り当てられていない 2020.04.21 akasoko26 - + { + //this.n現在のコースをswitchで分岐していたため風船の値がうまく割り当てられていない 2020.04.21 akasoko26 + + #region [Balloons] + switch (chip.nコース) { case ECourse.eNormal: @@ -4466,12 +4475,6 @@ namespace TJAPlayer3 this.listBalloon_Normal_数値管理++; break; } - //else if( this.listBalloon.Count != 0 ) - //{ - // chip.nBalloon = this.listBalloon[ this.listBalloon_Normal_数値管理 ]; - // this.listBalloon_Normal_数値管理++; - // break; - //} break; case ECourse.eExpert: if (this.listBalloon_Expert.Count == 0) @@ -4486,12 +4489,6 @@ namespace TJAPlayer3 this.listBalloon_Expert_数値管理++; break; } - //else if( this.listBalloon.Count != 0 ) - //{ - // chip.nBalloon = this.listBalloon[ this.listBalloon_Normal_数値管理 ]; - // this.listBalloon_Normal_数値管理++; - // break; - //} break; case ECourse.eMaster: if (this.listBalloon_Master.Count == 0) @@ -4506,14 +4503,11 @@ namespace TJAPlayer3 this.listBalloon_Master_数値管理++; break; } - //else if( this.listBalloon.Count != 0 ) - //{ - // chip.nBalloon = this.listBalloon[ this.listBalloon_Normal_数値管理 ]; - // this.listBalloon_Normal_数値管理++; - // break; - //} break; - } + } + + #endregion + } if (NotesManager.IsRollEnd(chip)) { @@ -4525,12 +4519,30 @@ namespace TJAPlayer3 chip.nノーツ移動開始時刻ms = listChip[nNowRollCount].nノーツ移動開始時刻ms; chip.n連打音符State = nNowRoll; - listChip[nNowRollCount].nノーツ終了位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); - listChip[nNowRollCount].nノーツ終了時刻ms = (int)this.dbNowTime; - listChip[nNowRollCount].fBMSCROLLTime_end = (int)this.dbNowBMScollTime; + + if (!IsEndedBranching || i == 0) + { + listChip[nNowRollCount].nノーツ終了位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + listChip[nNowRollCount].nノーツ終了時刻ms = (int)this.dbNowTime; + listChip[nNowRollCount].fBMSCROLLTime_end = (int)this.dbNowBMScollTime; + } + else if (!IsEndedBranching) + { + listChip_Branch[(int)chip.nコース][nNowRollCountBranch[(int)chip.nコース]].nノーツ終了位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + listChip_Branch[(int)chip.nコース][nNowRollCountBranch[(int)chip.nコース]].nノーツ終了時刻ms = (int)this.dbNowTime; + listChip_Branch[(int)chip.nコース][nNowRollCountBranch[(int)chip.nコース]].fBMSCROLLTime_end = (int)this.dbNowBMScollTime; + } + else + { + listChip_Branch[i][nNowRollCountBranch[i]].nノーツ終了位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + listChip_Branch[i][nNowRollCountBranch[i]].nノーツ終了時刻ms = (int)this.dbNowTime; + listChip_Branch[i][nNowRollCountBranch[i]].fBMSCROLLTime_end = (int)this.dbNowBMScollTime; + } + //listChip[ nNowRollCount ].dbBPM = this.dbNowBPM; //listChip[ nNowRollCount ].dbSCROLL = this.dbNowSCROLL; - nNowRoll = 0; + if (!IsEndedBranching || i == 2) + nNowRoll = 0; //continue; } @@ -4582,25 +4594,33 @@ namespace TJAPlayer3 #region [ 作り直し ] //譜面分岐がない譜面でも値は加算されてしまうがしゃあない //分岐を開始しない間は共通譜面としてみなす。 - if (IsEndedBranching) - this.nノーツ数_Branch[i]++; - else this.nノーツ数_Branch[(int)chip.nコース]++; - - if (!IsEndedBranching && !this.b分岐を一回でも開始した) + if (IsEndedBranching) + { + this.nノーツ数_Branch[i]++; + + if (i == 0) + { + if (this.n参照中の難易度 == (int)Difficulty.Dan) + { + this.nDan_NotesCount[DanSongs.Number - 1]++; + } + this.nノーツ数[3]++; + } + } + else { - //IsEndedBranching==false = forloopが行われていないときのみ - for (int l = 0; l < 3; l++) - this.nノーツ数_Branch[l]++; + this.nノーツ数_Branch[(int)chip.nコース]++; + + if (!this.b分岐を一回でも開始した) + { + //IsEndedBranching==false = forloopが行われていないときのみ + for (int l = 0; l < 3; l++) + this.nノーツ数_Branch[l]++; + } } + - - if (this.n参照中の難易度 == (int)Difficulty.Dan) - { - this.nDan_NotesCount[DanSongs.Number - 1]++; - } - - - this.nノーツ数[3]++; + #endregion } else if (NotesManager.IsBalloon(chip) || NotesManager.IsKusudama(chip)) @@ -4621,12 +4641,18 @@ namespace TJAPlayer3 Array.Resize(ref nDan_NotesCount, nDan_NotesCount.Length + 1); // Array.Resize(ref nDan_BallonCount, nDan_BallonCount.Length + 1); - this.listChip.Add(chip); - - if(IsEndedBranching) - this.listChip_Branch[i].Add(chip); - else - this.listChip_Branch[(int)chip.nコース].Add(chip); + if (IsEndedBranching) + { + this.listChip_Branch[i].Add(chip); + if (i == 0) + this.listChip.Add(chip); + } + else + { + this.listChip_Branch[(int)chip.nコース].Add(chip); + this.listChip.Add(chip); + } + } } @@ -5372,42 +5398,7 @@ namespace TJAPlayer3 /// private int CharConvertNote(string str) { - return (NotesManager.GetNoteValueFromChar(str)); - - /* - switch (str) - { - case "0": - return 0; - case "1": - return 1; - case "2": - return 2; - case "3": - return 3; - case "4": - return 4; - case "5": - return 5; - case "6": - return 6; - case "7": - return 7; - case "8": - return 8; - case "9": - return 7; //2017.01.30 DD 芋連打を風船連打扱いに - case "A": //2017.08.22 kairera0467 手つなぎ - return 10; - case "B": - return 11; - case "F": - return 15; - default: - return -1; - } - */ - + return (NotesManager.GetNoteValueFromChar(str)); } private int strConvertCourse(string str) diff --git a/TJAPlayer3/Stages/07.Game/CAct演奏演奏情報.cs b/TJAPlayer3/Stages/07.Game/CAct演奏演奏情報.cs index 3ecc4730..6bb615b3 100644 --- a/TJAPlayer3/Stages/07.Game/CAct演奏演奏情報.cs +++ b/TJAPlayer3/Stages/07.Game/CAct演奏演奏情報.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using FDK; using System.Diagnostics; +using System.Linq; namespace TJAPlayer3 { @@ -13,6 +14,7 @@ namespace TJAPlayer3 public double dbBPM; public readonly int[] NowMeasure = new int[2]; public double dbSCROLL; + public int[] _chipCounts = new int[2]; // コンストラクタ @@ -32,6 +34,10 @@ namespace TJAPlayer3 } this.dbBPM = TJAPlayer3.DTX.BASEBPM; this.dbSCROLL = 1.0; + + _chipCounts[0] = TJAPlayer3.DTX.listChip.Where(num => NotesManager.IsMissableNote(num)).Count(); + _chipCounts[1] = TJAPlayer3.DTX.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count(); + base.On活性化(); } public override int On進行描画() @@ -55,11 +61,11 @@ namespace TJAPlayer3 y -= 0x10; TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Frame: {0:####0} fps", TJAPlayer3.FPS.n現在のFPS ) ); y -= 0x10; - TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "NoteN: {0:####0}", TJAPlayer3.DTX.nノーツ数[0] ) ); + TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "NoteN: {0:####0}", TJAPlayer3.DTX.nノーツ数_Branch[0] ) ); y -= 0x10; - TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "NoteE: {0:####0}", TJAPlayer3.DTX.nノーツ数[1] ) ); + TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "NoteE: {0:####0}", TJAPlayer3.DTX.nノーツ数_Branch[1] ) ); y -= 0x10; - TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "NoteM: {0:####0}", TJAPlayer3.DTX.nノーツ数[2] ) ); + TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "NoteM: {0:####0}", TJAPlayer3.DTX.nノーツ数_Branch[2] ) ); y -= 0x10; TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "NoteC: {0:####0}", TJAPlayer3.DTX.nノーツ数[3] ) ); y -= 0x10; @@ -68,14 +74,17 @@ namespace TJAPlayer3 TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "SCOREMODE: {0:####0}", TJAPlayer3.DTX.nScoreModeTmp ) ); y -= 0x10; TJAPlayer3.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "SCROLLMODE: {0:####0}", Enum.GetName(typeof(EScrollMode), TJAPlayer3.ConfigIni.eScrollMode ) ) ); - - - //CDTXMania.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound CPU : {0:####0.00}%", CDTXMania.Sound管理.GetCPUusage() ) ); - //y -= 0x10; - //CDTXMania.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound Mixing: {0:####0}", CDTXMania.Sound管理.GetMixingStreams() ) ); - //y -= 0x10; - //CDTXMania.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound Streams: {0:####0}", CDTXMania.Sound管理.GetStreams() ) ); - //y -= 0x10; + y -= 0x10; + TJAPlayer3.act文字コンソール.tPrint(x, y, C文字コンソール.Eフォント種別.白, string.Format( "ListChip: {0:####0}", _chipCounts[0])); + y -= 0x10; + TJAPlayer3.act文字コンソール.tPrint(x, y, C文字コンソール.Eフォント種別.白, string.Format( "ListChipM: {0:####0}", _chipCounts[1])); + + //CDTXMania.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound CPU : {0:####0.00}%", CDTXMania.Sound管理.GetCPUusage() ) ); + //y -= 0x10; + //CDTXMania.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound Mixing: {0:####0}", CDTXMania.Sound管理.GetMixingStreams() ) ); + //y -= 0x10; + //CDTXMania.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound Streams: {0:####0}", CDTXMania.Sound管理.GetStreams() ) ); + //y -= 0x10; } } } diff --git a/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs b/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs index 90336b2e..6be7ecc5 100644 --- a/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs +++ b/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs @@ -136,72 +136,46 @@ namespace TJAPlayer3 } } - - - - if (TJAPlayer3.DTX.bチップがある.Branch) + for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) { - nNoteCount[0] = TJAPlayer3.DTX.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count(); - for (int i = 0; i < TJAPlayer3.DTX.listChip_Branch[2].Count; i++) - { - var chip = TJAPlayer3.DTX.listChip_Branch[2][i]; - //nBalloonCount[0] += TJAPlayer3.DTX.listChip_Branch[2][i].nRollCount; - nBalloonCount[0] += TJAPlayer3.DTX.listChip_Branch[2][i].nBalloon; - if (NotesManager.IsRoll(chip)) - { - nRollTimeMs[0] += (chip.nノーツ終了時刻ms - chip.n発声時刻ms) / 1000.0; - } - //pChip.n発声時刻ms - } - } - else - { - nNoteCount[0] = TJAPlayer3.DTX.listChip.Where(num => NotesManager.IsMissableNote(num)).Count(); - for (int i = 0; i < TJAPlayer3.DTX.listChip.Count; i++) - { - var chip = TJAPlayer3.DTX.listChip[i]; - //nBalloonCount[0] += TJAPlayer3.DTX.listChip[i].nRollCount; - nBalloonCount[0] += TJAPlayer3.DTX.listChip[i].nBalloon; - if (NotesManager.IsRoll(chip)) - { - nRollTimeMs[0] += (chip.nノーツ終了時刻ms - chip.n発声時刻ms) / 1000.0; - } - } - } + var _dtx = (i == 0) ? TJAPlayer3.DTX : TJAPlayer3.DTX_2P; - if (TJAPlayer3.ConfigIni.nPlayerCount == 2) - { - if (TJAPlayer3.DTX_2P.bチップがある.Branch) - { - nNoteCount[1] = TJAPlayer3.DTX_2P.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count(); - for (int i = 0; i < TJAPlayer3.DTX_2P.listChip_Branch[2].Count; i++) - { - var chip = TJAPlayer3.DTX_2P.listChip_Branch[2][i]; - //nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip_Branch[2][i].nRollCount; - nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip_Branch[2][i].nBalloon; - if (NotesManager.IsRoll(chip)) - { - nRollTimeMs[1] += (chip.nノーツ終了時刻ms - chip.n発声時刻ms) / 1000.0; - } - } - } - else - { - nNoteCount[1] = TJAPlayer3.DTX_2P.listChip.Where(num => NotesManager.IsMissableNote(num)).Count(); - for (int i = 0; i < TJAPlayer3.DTX_2P.listChip.Count; i++) - { - var chip = TJAPlayer3.DTX_2P.listChip[i]; - //nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip[i].nRollCount; - nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip[i].nBalloon; - if (NotesManager.IsRoll(chip)) - { - nRollTimeMs[1] += (chip.nノーツ終了時刻ms - chip.n発声時刻ms) / 1000.0; - } - } - } - } + int _totalNotes = 0; + int _totalBalloons = 0; + double _totalRolls = 0; + /* + for (int j = 0; j < (_dtx.bチップがある.Branch ? 2 : 1); j++) + { + var _list = (j == 0) ? _dtx.listChip : _dtx.listChip_Branch[2]; + + _totalNotes += _list.Where(num => NotesManager.IsMissableNote(num)).Count(); + for (int k = 0; k < _list.Count; k++) + { + var _chip = _list[k]; + _totalBalloons += _chip.nBalloon; + if (NotesManager.IsRoll(_chip)) + _totalRolls += (_chip.nノーツ終了時刻ms - _chip.n発声時刻ms) / 1000.0; + } + } + */ + + var _list = (_dtx.bチップがある.Branch) ? _dtx.listChip_Branch[2] : _dtx.listChip; + + _totalNotes += _list.Where(num => NotesManager.IsMissableNote(num)).Count(); + for (int k = 0; k < _list.Count; k++) + { + var _chip = _list[k]; + _totalBalloons += _chip.nBalloon; + if (NotesManager.IsRoll(_chip)) + _totalRolls += (_chip.nノーツ終了時刻ms - _chip.n発声時刻ms) / 1000.0; + } + + nNoteCount[i] = _totalNotes; + nBalloonCount[i] = _totalBalloons; + nRollTimeMs[i] = _totalRolls; + } for (int k = 0; k < TJAPlayer3.ConfigIni.nPlayerCount; k++) { @@ -4184,7 +4158,8 @@ namespace TJAPlayer3 } else { - dTX.listChip[A].b可視 = false; + if (!dTX.listChip[A].IsEndedBranching) + dTX.listChip[A].b可視 = false; } //共通なため分岐させない. dTX.listChip[A].eNoteState = ENoteState.none; diff --git a/Test/dll/lua54.dll b/Test/dll/lua54.dll index 175e0def..e38d2972 100644 Binary files a/Test/dll/lua54.dll and b/Test/dll/lua54.dll differ