From 85a70b033d233e3edcb2fd0bcd2676335051b8dc Mon Sep 17 00:00:00 2001 From: Takkkom <76614532+Takkkom@users.noreply.github.com> Date: Wed, 13 Dec 2023 18:13:10 +0900 Subject: [PATCH] =?UTF-8?q?=E9=9F=B3=E7=AC=A6=E3=81=AE=E6=99=82=E9=96=93?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3=20(#538)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenTaiko/src/Songs/CDTX.cs | 59 +++++++++++++++++-- .../src/Stages/07.Game/CStage演奏画面共通.cs | 3 +- .../07.Game/Taiko/CStage演奏ドラム画面.cs | 7 ++- 3 files changed, 60 insertions(+), 9 deletions(-) diff --git a/OpenTaiko/src/Songs/CDTX.cs b/OpenTaiko/src/Songs/CDTX.cs index f8c4f700..a98e70df 100644 --- a/OpenTaiko/src/Songs/CDTX.cs +++ b/OpenTaiko/src/Songs/CDTX.cs @@ -2272,7 +2272,7 @@ namespace TJAPlayer3 #region [ 拍子_拍線の挿入 ] if (this.listChip.Count > 0) { - this.listChip.Sort(); // 高速化のためにはこれを削りたいが、listChipの最後がn発声位置の終端である必要があるので、 + //this.listChip.Sort(); // 高速化のためにはこれを削りたいが、listChipの最後がn発声位置の終端である必要があるので、 // 保守性確保を優先してここでのソートは残しておく // なお、093時点では、このソートを削除しても動作するようにはしてある。 // (ここまでの一部チップ登録を、listChip.Add(c)から同Insert(0,c)に変更してある) @@ -2369,7 +2369,7 @@ namespace TJAPlayer3 else if (chip.nチャンネル番号 == 0xF1) { } else if (chip.nチャンネル番号 == 0xF2) { } else if (chip.nチャンネル番号 == 0xFF) { } - else if (chip.nチャンネル番号 == 0xDD) { chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); } + //else if (chip.nチャンネル番号 == 0xDD) { chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); } else if (chip.nチャンネル番号 == 0xDF) { chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); } else if (chip.nチャンネル番号 < 0x93) chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); @@ -6550,6 +6550,7 @@ namespace TJAPlayer3 } else { + /* if (this.b小節線を挿入している == false) { // 小節線にもやってあげないと @@ -6637,6 +6638,52 @@ namespace TJAPlayer3 #endregion } + */ + + int measureTime = (int)this.dbNowTime; + void addMeasureLine(ECourse course) + { + CChip chip = new CChip(); + chip.n発声位置 = ((this.n現在の小節数) * 384); + chip.nチャンネル番号 = 0x50; + chip.n発声時刻ms = measureTime; + chip.n整数値 = this.n現在の小節数; + chip.n文字数 = n文字数; + chip.n整数値_内部番号 = this.n現在の小節数; + chip.dbBPM = this.dbNowBPM; + chip.fNow_Measure_m = this.fNow_Measure_m; + chip.fNow_Measure_s = this.fNow_Measure_s; + chip.IsEndedBranching = IsEndedBranching; + chip.dbSCROLL = this.dbNowScroll; + chip.dbSCROLL_Y = this.dbNowScrollY; + chip.fBMSCROLLTime = (float)this.dbNowBMScollTime; + chip.eScrollMode = eScrollMode; + + chip.nコース = course; + + chip.b可視 = true; + chip.bHideBarLine = this.bBARLINECUE[0] == 1; + #region [ 作り直し ] + if (IsEndedBranching) + { + if (this.IsBranchBarDraw[(int)course]) + chip.bBranch = true; + } + else + { + if (this.IsBranchBarDraw[(int)n現在のコース]) + chip.bBranch = true; + } + #endregion + + this.listChip.Add(chip); + + #region [ 作り直し ] + if (IsEndedBranching) + this.IsBranchBarDraw[(int)course] = false; + else this.IsBranchBarDraw[(int)n現在のコース] = false; + #endregion + } for (int n = 0; n < InputText.Length; n++) { @@ -6944,7 +6991,11 @@ namespace TJAPlayer3 this.listChip_Branch[(int)chip.nコース].Add(chip); this.listChip.Add(chip); } - + + if (i == 0) + { + addMeasureLine(chip.nコース); + } } } @@ -8429,7 +8480,7 @@ namespace TJAPlayer3 listChip.AddRange(listAddMixerChannel); listChip.AddRange(listRemoveMixerChannel); listChip.AddRange(listRemoveTiming); - listChip.Sort(); + //listChip.Sort(); } private void DebugOut_CChipList(List c) { diff --git a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs index dbe60fc5..5eee1e34 100644 --- a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs @@ -3724,7 +3724,7 @@ namespace TJAPlayer3 //this.t進行描画_チップ_Taiko連打(configIni, ref dTX, ref pChip); //2015.04.13 kairera0467 ここを外さないと恋文2000の連打に対応できず、ここをつけないと他のコースと重なっている連打をどうにもできない。 //常時実行メソッドに渡したら対応できた!? - //if ((!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))) + //if ((!pChip.bHit && ( time < 0 ))) { if( ( pChip.n発声時刻ms <= (int)n現在時刻ms && pChip.nノーツ終了時刻ms >= (int)n現在時刻ms ) ) { @@ -3910,7 +3910,6 @@ namespace TJAPlayer3 #region [ 50: 小節線 ] case 0x50: // 小節線 { - if ( !pChip.bHit && time < 0) { //if (nPlayer == 0) TJAPlayer3.BeatScaling = new CCounter(0, 1000, 120.0 / pChip.dbBPM / 2.0, TJAPlayer3.Timer); diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs index a3190e4a..13701e8a 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs @@ -1978,6 +1978,9 @@ namespace TJAPlayer3 } #endregion + long __dbt = (long)(SoundManager.PlayTimer.NowTimeMs * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)); + long time = pChip.n発声時刻ms - __dbt; + if( pChip.dbSCROLL_Y != 0.0 ) { var dbSCROLL = pChip.eScrollMode == EScrollMode.BMSCROLL ? 1.0 : pChip.dbSCROLL; @@ -1986,8 +1989,6 @@ namespace TJAPlayer3 double _scrollSpeed = pChip.dbSCROLL_Y * (this.act譜面スクロール速度.db現在の譜面スクロール速度[nPlayer] + 1.0) / 10.0; - long __dbt = (long)(SoundManager.PlayTimer.NowTimeMs * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)); - long time = pChip.n発声時刻ms - __dbt; float play_bpm_time = this.GetNowPBMTime(dTX, 0); y += NotesManager.GetNoteY(pChip, time * pChip.dbBPM, _scrollSpeed, TJAPlayer3.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, false); @@ -2005,7 +2006,7 @@ namespace TJAPlayer3 } } - if ( pChip.nバーからの距離dot.Drums < 0 ) + if ( time < 0 ) { this.actGame.st叩ききりまショー.b最初のチップが叩かれた = true; }