From fe0617afe48a7315039a7df8ed9e98d6fd01520c Mon Sep 17 00:00:00 2001 From: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Thu, 31 Oct 2024 18:52:21 +0900 Subject: [PATCH] chore: Detach the CChip class, few code translation and deprecate unused items --- OpenTaiko/src/Common/CConfigIni.cs | 15 - OpenTaiko/src/Common/ImGuiDebugWindow.cs | 2 +- OpenTaiko/src/Common/OpenTaiko.cs | 202 +- OpenTaiko/src/Components/CSongReplay.cs | 10 +- OpenTaiko/src/Databases/DBSaves.cs | 2 +- OpenTaiko/src/Helpers/HGaugeMethods.cs | 36 +- OpenTaiko/src/Helpers/HScenePreset.cs | 6 +- OpenTaiko/src/Songs/CScore.cs | 8 +- OpenTaiko/src/Songs/CSongListNode.cs | 6 +- OpenTaiko/src/Songs/CSong管理.cs | 14 +- OpenTaiko/src/Songs/{CDTX.cs => CTja.cs} | 3009 +++++++---------- OpenTaiko/src/Songs/TJA/CChip.cs | 354 ++ OpenTaiko/src/Songs/VTTParser.cs | 2 +- .../src/Stages/01.StartUp/TextureLoader.cs | 4 +- .../05.DaniSelect/CActSelect段位リスト.cs | 2 +- .../05.SongSelect/CActSelectPopupMenu.cs | 13 +- .../05.SongSelect/CActSelect曲リスト.cs | 10 +- .../05.SongSelect/CActSelect難易度選択画面.cs | 2 +- .../Stages/06.SongLoading/CStage曲読み込み.cs | 58 +- .../Stages/07.Game/CActTaikoScrollSpeed.cs | 74 + .../src/Stages/07.Game/CAct演奏Combo共通.cs | 36 +- .../src/Stages/07.Game/CAct演奏Combo音声.cs | 2 +- .../src/Stages/07.Game/CAct演奏PauseMenu.cs | 2 +- .../src/Stages/07.Game/CAct演奏ゲージ共通.cs | 184 +- .../Stages/07.Game/CAct演奏スクロール速度.cs | 78 - .../src/Stages/07.Game/CAct演奏スコア共通.cs | 6 +- .../src/Stages/07.Game/CAct演奏演奏情報.cs | 20 +- .../src/Stages/07.Game/CInvisibleChip.cs | 168 - OpenTaiko/src/Stages/07.Game/CLagLogger.cs | 4 +- .../src/Stages/07.Game/CStage演奏画面共通.cs | 1709 +++++----- .../Stages/07.Game/Taiko/CActImplBalloon.cs | 2 +- .../src/Stages/07.Game/Taiko/CActImplGauge.cs | 18 +- .../src/Stages/07.Game/Taiko/CActImplLane.cs | 26 +- .../Stages/07.Game/Taiko/CActImplLaneTaiko.cs | 74 +- .../Stages/07.Game/Taiko/CActImplMtaiko.cs | 10 +- .../Stages/07.Game/Taiko/CActImplRunner.cs | 4 +- .../src/Stages/07.Game/Taiko/CActImplScore.cs | 8 +- .../07.Game/Taiko/CActImplTrainingMode.cs | 86 +- .../Taiko/CAct演奏Drumsゲームモード.cs | 14 +- .../07.Game/Taiko/CStage演奏ドラム画面.cs | 890 ++--- .../src/Stages/07.Game/Taiko/Dan_Cert.cs | 70 +- .../src/Stages/07.Game/Taiko/NotesManager.cs | 122 +- .../src/Stages/07.Game/Taiko/ScriptBG.cs | 4 +- .../src/Stages/08.Result/CActResultImage.cs | 4 +- .../08.Result/CActResultParameterPanel.cs | 2 +- .../src/Stages/08.Result/CActResultSongBar.cs | 2 +- OpenTaiko/src/Stages/08.Result/CStage結果.cs | 18 +- 47 files changed, 3523 insertions(+), 3869 deletions(-) rename OpenTaiko/src/Songs/{CDTX.cs => CTja.cs} (88%) create mode 100644 OpenTaiko/src/Songs/TJA/CChip.cs create mode 100644 OpenTaiko/src/Stages/07.Game/CActTaikoScrollSpeed.cs delete mode 100644 OpenTaiko/src/Stages/07.Game/CAct演奏スクロール速度.cs delete mode 100644 OpenTaiko/src/Stages/07.Game/CInvisibleChip.cs diff --git a/OpenTaiko/src/Common/CConfigIni.cs b/OpenTaiko/src/Common/CConfigIni.cs index a37ed6ce..5f354d80 100644 --- a/OpenTaiko/src/Common/CConfigIni.cs +++ b/OpenTaiko/src/Common/CConfigIni.cs @@ -1587,7 +1587,6 @@ internal class CConfigIni : INotifyPropertyChanged { for (int i = 0; i < 3; i++) { this.bReverse[i] = false; this.JudgeTextDisplayPosition[i] = EJudgeTextDisplayPosition.AboveLane; - this.eInvisible[i] = EInvisible.Off; } @@ -2233,16 +2232,6 @@ internal class CConfigIni : INotifyPropertyChanged { sw.WriteLine("; Enable countdown in songselect.(0:No, 1:Yes)"); sw.WriteLine("EnableCountDownTimer={0}", this.bEnableCountdownTimer ? 1 : 0); sw.WriteLine(); - - #region [ Invisible ] - - sw.WriteLine("; ドラムチップ非表示モード (0:OFF, 1=SEMI, 2:FULL)"); - sw.WriteLine("; Drums chip invisible mode"); - sw.WriteLine("DrumsInvisible={0}", (int)this.eInvisible.Drums); - sw.WriteLine(); - - #endregion - sw.WriteLine("; ドラムREVERSEモード(0:OFF, 1:ON)"); sw.WriteLine("DrumsReverse={0}", this.bReverse.Drums ? 1 : 0); sw.WriteLine(); @@ -3042,10 +3031,6 @@ internal class CConfigIni : INotifyPropertyChanged { case "EnableCountDownTimer": this.bEnableCountdownTimer = CConversion.bONorOFF(value[0]); break; - case "DrumsInvisible": - this.eInvisible.Drums = - (EInvisible)CConversion.ParseIntInRange(value, 0, 2, (int)this.eInvisible.Drums); - break; case "DrumsReverse": this.bReverse.Drums = CConversion.bONorOFF(value[0]); break; diff --git a/OpenTaiko/src/Common/ImGuiDebugWindow.cs b/OpenTaiko/src/Common/ImGuiDebugWindow.cs index adb10fc7..9b73b0fe 100644 --- a/OpenTaiko/src/Common/ImGuiDebugWindow.cs +++ b/OpenTaiko/src/Common/ImGuiDebugWindow.cs @@ -318,7 +318,7 @@ public static class ImGuiDebugWindow { ImGui.Text("BPM: " + dtx.BASEBPM + (dtx.listBPM.Count > 1 ? (" (Min: " + dtx.MinBPM + " / Max: " + dtx.MaxBPM + ")") : "")); if (dtx.listBPM.Count > 1) { if (ImGui.TreeNodeEx($"BPM List ({dtx.listBPM.Count})###GAME_BPM_LIST_{i}")) { - foreach (CDTX.CBPM bpm in dtx.listBPM.Values) { + foreach (CTja.CBPM bpm in dtx.listBPM.Values) { ImGui.Text($"(Time: {String.Format("{0:0.#}s", (bpm.bpm_change_time / 1000))}) {bpm.dbBPM値}"); } ImGui.TreePop(); diff --git a/OpenTaiko/src/Common/OpenTaiko.cs b/OpenTaiko/src/Common/OpenTaiko.cs index 8d7b534e..31652d7d 100755 --- a/OpenTaiko/src/Common/OpenTaiko.cs +++ b/OpenTaiko/src/Common/OpenTaiko.cs @@ -64,104 +64,104 @@ internal class OpenTaiko : Game { } #region [DTX instances] - public static CDTX DTX { + public static CTja TJA { get { - return dtx[0]; + return tja[0]; } set { - if ((dtx[0] != null) && (app != null)) { - dtx[0].DeActivate(); - dtx[0].ReleaseManagedResource(); - dtx[0].ReleaseUnmanagedResource(); - app.listトップレベルActivities.Remove(dtx[0]); + if ((tja[0] != null) && (app != null)) { + tja[0].DeActivate(); + tja[0].ReleaseManagedResource(); + tja[0].ReleaseUnmanagedResource(); + app.listTopLevelActivities.Remove(tja[0]); } - dtx[0] = value; - if ((dtx[0] != null) && (app != null)) { - app.listトップレベルActivities.Add(dtx[0]); + tja[0] = value; + if ((tja[0] != null) && (app != null)) { + app.listTopLevelActivities.Add(tja[0]); } } } - public static CDTX DTX_2P { + public static CTja TJA_2P { get { - return dtx[1]; + return tja[1]; } set { - if ((dtx[1] != null) && (app != null)) { - dtx[1].DeActivate(); - dtx[1].ReleaseManagedResource(); - dtx[1].ReleaseUnmanagedResource(); - app.listトップレベルActivities.Remove(dtx[1]); + if ((tja[1] != null) && (app != null)) { + tja[1].DeActivate(); + tja[1].ReleaseManagedResource(); + tja[1].ReleaseUnmanagedResource(); + app.listTopLevelActivities.Remove(tja[1]); } - dtx[1] = value; - if ((dtx[1] != null) && (app != null)) { - app.listトップレベルActivities.Add(dtx[1]); + tja[1] = value; + if ((tja[1] != null) && (app != null)) { + app.listTopLevelActivities.Add(tja[1]); } } } - public static CDTX DTX_3P { + public static CTja TJA_3P { get { - return dtx[2]; + return tja[2]; } set { - if ((dtx[2] != null) && (app != null)) { - dtx[2].DeActivate(); - dtx[2].ReleaseManagedResource(); - dtx[2].ReleaseUnmanagedResource(); - app.listトップレベルActivities.Remove(dtx[2]); + if ((tja[2] != null) && (app != null)) { + tja[2].DeActivate(); + tja[2].ReleaseManagedResource(); + tja[2].ReleaseUnmanagedResource(); + app.listTopLevelActivities.Remove(tja[2]); } - dtx[2] = value; - if ((dtx[2] != null) && (app != null)) { - app.listトップレベルActivities.Add(dtx[2]); + tja[2] = value; + if ((tja[2] != null) && (app != null)) { + app.listTopLevelActivities.Add(tja[2]); } } } - public static CDTX DTX_4P { + public static CTja TJA_4P { get { - return dtx[3]; + return tja[3]; } set { - if ((dtx[3] != null) && (app != null)) { - dtx[3].DeActivate(); - dtx[3].ReleaseManagedResource(); - dtx[3].ReleaseUnmanagedResource(); - app.listトップレベルActivities.Remove(dtx[3]); + if ((tja[3] != null) && (app != null)) { + tja[3].DeActivate(); + tja[3].ReleaseManagedResource(); + tja[3].ReleaseUnmanagedResource(); + app.listTopLevelActivities.Remove(tja[3]); } - dtx[3] = value; - if ((dtx[3] != null) && (app != null)) { - app.listトップレベルActivities.Add(dtx[3]); + tja[3] = value; + if ((tja[3] != null) && (app != null)) { + app.listTopLevelActivities.Add(tja[3]); } } } - public static CDTX DTX_5P { + public static CTja TJA_5P { get { - return dtx[4]; + return tja[4]; } set { - if ((dtx[4] != null) && (app != null)) { - dtx[4].DeActivate(); - dtx[4].ReleaseManagedResource(); - dtx[4].ReleaseUnmanagedResource(); - app.listトップレベルActivities.Remove(dtx[4]); + if ((tja[4] != null) && (app != null)) { + tja[4].DeActivate(); + tja[4].ReleaseManagedResource(); + tja[4].ReleaseUnmanagedResource(); + app.listTopLevelActivities.Remove(tja[4]); } - dtx[4] = value; - if ((dtx[4] != null) && (app != null)) { - app.listトップレベルActivities.Add(dtx[4]); + tja[4] = value; + if ((tja[4] != null) && (app != null)) { + app.listTopLevelActivities.Add(tja[4]); } } } - public static CDTX GetDTX(int player) { + public static CTja GetDTX(int player) { switch (player) { case 0: - return OpenTaiko.DTX; + return OpenTaiko.TJA; case 1: - return OpenTaiko.DTX_2P; + return OpenTaiko.TJA_2P; case 2: - return OpenTaiko.DTX_3P; + return OpenTaiko.TJA_3P; case 3: - return OpenTaiko.DTX_4P; + return OpenTaiko.TJA_4P; case 4: - return OpenTaiko.DTX_5P; + return OpenTaiko.TJA_5P; } return null; } @@ -471,14 +471,14 @@ internal class OpenTaiko : Game { this.bマウスカーソル表示中 = false; } - if (this.listトップレベルActivities != null) { - foreach (CActivity activity in this.listトップレベルActivities) + if (this.listTopLevelActivities != null) { + foreach (CActivity activity in this.listTopLevelActivities) activity.CreateUnmanagedResource(); } } protected override void UnloadContent() { - if (this.listトップレベルActivities != null) { - foreach (CActivity activity in this.listトップレベルActivities) + if (this.listTopLevelActivities != null) { + foreach (CActivity activity in this.listTopLevelActivities) activity.ReleaseUnmanagedResource(); } } @@ -1115,10 +1115,10 @@ internal class OpenTaiko : Game { #region [ ESC押下時は、曲の読み込みを中止して選曲画面に戻る ] if (this.n進行描画の戻り値 == (int)ESongLoadingScreenReturnValue.LoadCanceled) { //DTX.t全チップの再生停止(); - if (DTX != null) { - DTX.DeActivate(); - DTX.ReleaseManagedResource(); - DTX.ReleaseUnmanagedResource(); + if (TJA != null) { + TJA.DeActivate(); + TJA.ReleaseManagedResource(); + TJA.ReleaseUnmanagedResource(); } // ??? @@ -1187,10 +1187,10 @@ for (int i = 0; i < 3; i++) { switch (this.n進行描画の戻り値) { case (int)EGameplayScreenReturnValue.ReloadAndReplay: #region [ DTXファイルを再読み込みして、再演奏 ] - DTX.t全チップの再生停止(); - DTX.DeActivate(); - DTX.ReleaseManagedResource(); - DTX.ReleaseUnmanagedResource(); + TJA.t全チップの再生停止(); + TJA.DeActivate(); + TJA.ReleaseManagedResource(); + TJA.ReleaseUnmanagedResource(); r現在のステージ.DeActivate(); if (!ConfigIni.PreAssetsLoading) { r現在のステージ.ReleaseManagedResource(); @@ -1219,10 +1219,10 @@ for (int i = 0; i < 3; i++) { #region [ 演奏キャンセル ] //----------------------------- - DTX.t全チップの再生停止(); - DTX.DeActivate(); - DTX.ReleaseManagedResource(); - DTX.ReleaseUnmanagedResource(); + TJA.t全チップの再生停止(); + TJA.DeActivate(); + TJA.ReleaseManagedResource(); + TJA.ReleaseUnmanagedResource(); r現在のステージ.DeActivate(); if (!ConfigIni.PreAssetsLoading) { r現在のステージ.ReleaseManagedResource(); @@ -1251,10 +1251,10 @@ for (int i = 0; i < 3; i++) { #region [ 演奏失敗(StageFailed) ] //----------------------------- - DTX.t全チップの再生停止(); - DTX.DeActivate(); - DTX.ReleaseManagedResource(); - DTX.ReleaseUnmanagedResource(); + TJA.t全チップの再生停止(); + TJA.DeActivate(); + TJA.ReleaseManagedResource(); + TJA.ReleaseUnmanagedResource(); r現在のステージ.DeActivate(); if (!ConfigIni.PreAssetsLoading) { r現在のステージ.ReleaseManagedResource(); @@ -1313,10 +1313,10 @@ for (int i = 0; i < 3; i++) { //----------------------------- if (this.n進行描画の戻り値 != 0) { //DTX.t全チップの再生一時停止(); - DTX.t全チップの再生停止とミキサーからの削除(); - DTX.DeActivate(); - DTX.ReleaseManagedResource(); - DTX.ReleaseUnmanagedResource(); + TJA.t全チップの再生停止とミキサーからの削除(); + TJA.DeActivate(); + TJA.ReleaseManagedResource(); + TJA.ReleaseUnmanagedResource(); r現在のステージ.DeActivate(); if (!ConfigIni.PreAssetsLoading) { r現在のステージ.ReleaseManagedResource(); @@ -1505,9 +1505,9 @@ for (int i = 0; i < 3; i++) { Camera *= Matrix4X4.CreateTranslation(fCamXOffset / 1280, fCamYOffset / 720, 1f); - if (OpenTaiko.DTX != null) { + if (OpenTaiko.TJA != null) { //object rendering - foreach (KeyValuePair pair in OpenTaiko.DTX.listObj) { + foreach (KeyValuePair pair in OpenTaiko.TJA.listObj) { pair.Value.tDraw(); } } @@ -1754,11 +1754,11 @@ for (int i = 0; i < 3; i++) { private bool b終了処理完了済み; public bool bネットワークに接続中 { get; private set; } = false; private long 前回のシステム時刻ms = long.MinValue; - private static CDTX[] dtx = new CDTX[5]; + private static CTja[] tja = new CTja[5]; public static TextureLoader Tx = new TextureLoader(); - public List listトップレベルActivities; + public List listTopLevelActivities; private int n進行描画の戻り値; private string strWindowTitle // ayo komi isn't this useless code? - tfd500 @@ -1830,7 +1830,7 @@ for (int i = 0; i < 3; i++) { //--------------------- #endregion - DTX = null; + TJA = null; #region [ Skin の初期化 ] //--------------------- @@ -2086,22 +2086,22 @@ for (int i = 0; i < 3; i++) { stage終了 = new CStage終了(); NamePlate = new CNamePlate(); SaveFile = 0; - this.listトップレベルActivities = new List(); - this.listトップレベルActivities.Add(actEnumSongs); - this.listトップレベルActivities.Add(actTextConsole); - this.listトップレベルActivities.Add(stage起動); - this.listトップレベルActivities.Add(stageタイトル); - this.listトップレベルActivities.Add(stageコンフィグ); - this.listトップレベルActivities.Add(stageSongSelect); - this.listトップレベルActivities.Add(stage段位選択); - this.listトップレベルActivities.Add(stageHeya); - this.listトップレベルActivities.Add(stageOnlineLounge); - this.listトップレベルActivities.Add(stageTowerSelect); - this.listトップレベルActivities.Add(stage曲読み込み); - this.listトップレベルActivities.Add(stage演奏ドラム画面); - this.listトップレベルActivities.Add(stage結果); - this.listトップレベルActivities.Add(stageChangeSkin); - this.listトップレベルActivities.Add(stage終了); + this.listTopLevelActivities = new List(); + this.listTopLevelActivities.Add(actEnumSongs); + this.listTopLevelActivities.Add(actTextConsole); + this.listTopLevelActivities.Add(stage起動); + this.listTopLevelActivities.Add(stageタイトル); + this.listTopLevelActivities.Add(stageコンフィグ); + this.listTopLevelActivities.Add(stageSongSelect); + this.listTopLevelActivities.Add(stage段位選択); + this.listTopLevelActivities.Add(stageHeya); + this.listTopLevelActivities.Add(stageOnlineLounge); + this.listTopLevelActivities.Add(stageTowerSelect); + this.listTopLevelActivities.Add(stage曲読み込み); + this.listTopLevelActivities.Add(stage演奏ドラム画面); + this.listTopLevelActivities.Add(stage結果); + this.listTopLevelActivities.Add(stageChangeSkin); + this.listTopLevelActivities.Add(stage終了); //--------------------- #endregion diff --git a/OpenTaiko/src/Components/CSongReplay.cs b/OpenTaiko/src/Components/CSongReplay.cs index f8446a95..cd51f2b2 100644 --- a/OpenTaiko/src/Components/CSongReplay.cs +++ b/OpenTaiko/src/Components/CSongReplay.cs @@ -80,10 +80,10 @@ class CSongReplay { public void tDanInputSongResults(int songNo) { if (songNo >= DanSongCount) return; if (songNo < 0) return; - IndividualGoodCount[songNo] = OpenTaiko.stage演奏ドラム画面.n良[songNo]; - IndividualOkCount[songNo] = OpenTaiko.stage演奏ドラム画面.n可[songNo]; - IndividualBadCount[songNo] = OpenTaiko.stage演奏ドラム画面.n不可[songNo]; - IndividualRollCount[songNo] = OpenTaiko.stage演奏ドラム画面.n連打[songNo]; + IndividualGoodCount[songNo] = OpenTaiko.stage演奏ドラム画面.nGood[songNo]; + IndividualOkCount[songNo] = OpenTaiko.stage演奏ドラム画面.nOk[songNo]; + IndividualBadCount[songNo] = OpenTaiko.stage演奏ドラム画面.nBad[songNo]; + IndividualRollCount[songNo] = OpenTaiko.stage演奏ドラム画面.nRoll[songNo]; IndividualMaxCombo[songNo] = OpenTaiko.stage演奏ドラム画面.nHighestCombo[songNo]; IndividualBoomCount[songNo] = OpenTaiko.stage演奏ドラム画面.nMine[songNo]; IndividualADLibCount[songNo] = OpenTaiko.stage演奏ドラム画面.nADLIB[songNo]; @@ -259,7 +259,7 @@ class CSongReplay { OkCount = OpenTaiko.stage演奏ドラム画面.CChartScore[storedPlayer].nGood; BadCount = OpenTaiko.stage演奏ドラム画面.CChartScore[storedPlayer].nMiss; RollCount = OpenTaiko.stage演奏ドラム画面.GetRoll(storedPlayer); - MaxCombo = OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[storedPlayer]; + MaxCombo = OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[storedPlayer]; BoomCount = OpenTaiko.stage演奏ドラム画面.CChartScore[storedPlayer].nMine; ADLibCount = OpenTaiko.stage演奏ドラム画面.CChartScore[storedPlayer].nADLIB; Score = OpenTaiko.stage演奏ドラム画面.CChartScore[storedPlayer].nScore; diff --git a/OpenTaiko/src/Databases/DBSaves.cs b/OpenTaiko/src/Databases/DBSaves.cs index 0fe5e14b..68f8176e 100644 --- a/OpenTaiko/src/Databases/DBSaves.cs +++ b/OpenTaiko/src/Databases/DBSaves.cs @@ -315,7 +315,7 @@ internal class DBSaves { currentPlay.HighScoreGoodCount = chartScore.nGreat; currentPlay.HighScoreOkCount = chartScore.nGood; currentPlay.HighScoreBadCount = chartScore.nMiss; - currentPlay.HighScoreMaxCombo = OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[player]; + currentPlay.HighScoreMaxCombo = OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[player]; currentPlay.HighScoreRollCount = chartScore.nRoll; currentPlay.HighScoreADLibCount = chartScore.nADLIB; currentPlay.HighScoreBoomCount = chartScore.nMine; diff --git a/OpenTaiko/src/Helpers/HGaugeMethods.cs b/OpenTaiko/src/Helpers/HGaugeMethods.cs index d55ae005..91c5917a 100644 --- a/OpenTaiko/src/Helpers/HGaugeMethods.cs +++ b/OpenTaiko/src/Helpers/HGaugeMethods.cs @@ -420,13 +420,13 @@ class HGaugeMethods { public static float UNSAFE_KillZonePercent(int player) { var chara = OpenTaiko.Tx.Characters[OpenTaiko.SaveFileInstances[OpenTaiko.GetActualPlayer(player)].data.Character]; - CDTX[] dtxs = + CTja[] dtxs = { - OpenTaiko.DTX, - OpenTaiko.DTX_2P, - OpenTaiko.DTX_3P, - OpenTaiko.DTX_4P, - OpenTaiko.DTX_5P + OpenTaiko.TJA, + OpenTaiko.TJA_2P, + OpenTaiko.TJA_3P, + OpenTaiko.TJA_4P, + OpenTaiko.TJA_5P }; // Total hits and perfect hits @@ -448,13 +448,13 @@ class HGaugeMethods { public static void UNSAFE_DrawGaugeFast(int player, int opacity, int rainbowTextureIndex, int soulFlameIndex) { var chara = OpenTaiko.Tx.Characters[OpenTaiko.SaveFileInstances[OpenTaiko.GetActualPlayer(player)].data.Character]; - CDTX[] dtxs = + CTja[] dtxs = { - OpenTaiko.DTX, - OpenTaiko.DTX_2P, - OpenTaiko.DTX_3P, - OpenTaiko.DTX_4P, - OpenTaiko.DTX_5P + OpenTaiko.TJA, + OpenTaiko.TJA_2P, + OpenTaiko.TJA_3P, + OpenTaiko.TJA_4P, + OpenTaiko.TJA_5P }; // Set box @@ -595,13 +595,13 @@ class HGaugeMethods { public static void UNSAFE_DrawResultGaugeFast(int player, int shiftPos, int pos, int segmentsDisplayed, int rainbowTextureIndex, int soulFlameIndex, int uioffset_x) { var chara = OpenTaiko.Tx.Characters[OpenTaiko.SaveFileInstances[OpenTaiko.GetActualPlayer(player)].data.Character]; - CDTX[] dtxs = + CTja[] dtxs = { - OpenTaiko.DTX, - OpenTaiko.DTX_2P, - OpenTaiko.DTX_3P, - OpenTaiko.DTX_4P, - OpenTaiko.DTX_5P + OpenTaiko.TJA, + OpenTaiko.TJA_2P, + OpenTaiko.TJA_3P, + OpenTaiko.TJA_4P, + OpenTaiko.TJA_5P }; // Set box diff --git a/OpenTaiko/src/Helpers/HScenePreset.cs b/OpenTaiko/src/Helpers/HScenePreset.cs index 93a883d7..8bd994be 100644 --- a/OpenTaiko/src/Helpers/HScenePreset.cs +++ b/OpenTaiko/src/Helpers/HScenePreset.cs @@ -41,10 +41,10 @@ class HScenePreset { : null; if (sectionIsValid - && OpenTaiko.DTX.scenePreset != null - && ((Dictionary)_ps).ContainsKey(OpenTaiko.DTX.scenePreset)) // If currently selected song has valid SCENEPRESET metadata within TJA + && OpenTaiko.TJA.scenePreset != null + && ((Dictionary)_ps).ContainsKey(OpenTaiko.TJA.scenePreset)) // If currently selected song has valid SCENEPRESET metadata within TJA { - preset = ((Dictionary)_ps)[OpenTaiko.DTX.scenePreset]; + preset = ((Dictionary)_ps)[OpenTaiko.TJA.scenePreset]; } else if (sectionIsValid && OpenTaiko.stageSongSelect.rChoosenSong.strScenePreset != null && ((Dictionary)_ps).ContainsKey(OpenTaiko.stageSongSelect.rChoosenSong.strScenePreset)) { diff --git a/OpenTaiko/src/Songs/CScore.cs b/OpenTaiko/src/Songs/CScore.cs index ea5f89fe..9f0d73f6 100644 --- a/OpenTaiko/src/Songs/CScore.cs +++ b/OpenTaiko/src/Songs/CScore.cs @@ -60,7 +60,7 @@ internal class CScore { public STDGBVALUE 演奏回数; public STHISTORY 演奏履歴; public bool レベルを非表示にする; - public CDTX.E種別 曲種別; + public CTja.E種別 曲種別; public double Bpm; public double BaseBpm; public double MinBpm; @@ -77,7 +77,7 @@ internal class CScore { 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; + public CTja.ELevelIcon[] nLevelIcon; // Tower lifes public int nLife; @@ -243,7 +243,7 @@ internal class CScore { this.譜面情報.演奏履歴.行7 = ""; this.譜面情報.レベルを非表示にする = false; this.譜面情報.最大スキル = new ST譜面情報.STSKILL(); - this.譜面情報.曲種別 = CDTX.E種別.DTX; + this.譜面情報.曲種別 = CTja.E種別.DTX; this.譜面情報.Bpm = 120.0; this.譜面情報.MinBpm = 120.0; this.譜面情報.MaxBpm = 120.0; @@ -257,7 +257,7 @@ internal class CScore { this.譜面情報.nハイスコア = new int[(int)Difficulty.Total]; this.譜面情報.strサブタイトル = ""; 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.譜面情報.nLevelIcon = new CTja.ELevelIcon[(int)Difficulty.Total] { CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone }; this.譜面情報.nクリア = new int[5]; this.譜面情報.nスコアランク = new int[5]; this.譜面情報.nExamResult = new List { }; diff --git a/OpenTaiko/src/Songs/CSongListNode.cs b/OpenTaiko/src/Songs/CSongListNode.cs index e648c644..c3682d50 100644 --- a/OpenTaiko/src/Songs/CSongListNode.cs +++ b/OpenTaiko/src/Songs/CSongListNode.cs @@ -56,17 +56,17 @@ internal class CSongListNode { public CLocalizationData ldSubtitle = new CLocalizationData(); public string strMaker = ""; public string[] strNotesDesigner = new string[(int)Difficulty.Total] { "", "", "", "", "", "", "" }; - public CDTX.ESide nSide = CDTX.ESide.eEx; + public CTja.ESide nSide = CTja.ESide.eEx; public bool bExplicit = false; public bool bMovie = 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 }; + public CTja.ELevelIcon[] nLevelIcon = new CTja.ELevelIcon[(int)Difficulty.Total] { CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone, CTja.ELevelIcon.eNone }; // Branches public bool bBranch = false; // Dan - public List DanSongs; + public List DanSongs; public Dan_C[] Dan_C; // Tower Lives diff --git a/OpenTaiko/src/Songs/CSong管理.cs b/OpenTaiko/src/Songs/CSong管理.cs index 95cf84af..b8d9cbb5 100644 --- a/OpenTaiko/src/Songs/CSong管理.cs +++ b/OpenTaiko/src/Songs/CSong管理.cs @@ -146,7 +146,7 @@ internal class CSongs管理 { bool b = false; for (int n = 0; n < (int)Difficulty.Total; n++) { - CDTX dtx = new CDTX(fileinfo.FullName, false, 1.0, 0, 1); + CTja dtx = new CTja(fileinfo.FullName, false, 1.0, 0, 1); if (dtx.b譜面が存在する[n]) { c曲リストノード.difficultiesCount++; c曲リストノード.rParentNode = node親; @@ -183,9 +183,9 @@ internal class CSongs管理 { c曲リストノード.nTotalFloor = 0; for (int i = 0; i < dtx.listChip.Count; i++) { - CDTX.CChip pChip = dtx.listChip[i]; + CChip pChip = dtx.listChip[i]; - if (pChip.n整数値_内部番号 > c曲リストノード.nTotalFloor && pChip.nチャンネル番号 == 0x50) c曲リストノード.nTotalFloor = pChip.n整数値_内部番号; + if (pChip.n整数値_内部番号 > c曲リストノード.nTotalFloor && pChip.nChannelNo == 0x50) c曲リストノード.nTotalFloor = pChip.n整数値_内部番号; } c曲リストノード.nTotalFloor++; @@ -282,7 +282,7 @@ internal class CSongs管理 { this.n検索された曲ノード数++; } else { - CDTX dtx = new CDTX(filePath, false, 1.0, 0, 0); + CTja dtx = new CTja(filePath, false, 1.0, 0, 0); CSongListNode c曲リストノード = new CSongListNode(); c曲リストノード.nodeType = CSongListNode.ENodeType.SCORE; @@ -607,7 +607,7 @@ internal class CSongs管理 { //----------------- #endregion - private void LoadChartInfo(CSongListNode c曲リストノード, CDTX cdtx, int i) { + private void LoadChartInfo(CSongListNode c曲リストノード, CTja cdtx, int i) { if ((c曲リストノード.score[i] != null) && !c曲リストノード.score[i].bSongDBにキャッシュがあった) { #region [ DTX ファイルのヘッダだけ読み込み、Cスコア.譜面情報 を設定する ] //----------------- @@ -654,9 +654,9 @@ internal class CSongs管理 { c曲リストノード.score[i].譜面情報.nTotalFloor = 0; for (int k = 0; k < cdtx.listChip.Count; k++) { - CDTX.CChip pChip = cdtx.listChip[k]; + CChip pChip = cdtx.listChip[k]; - if (pChip.n整数値_内部番号 > c曲リストノード.score[i].譜面情報.nTotalFloor && pChip.nチャンネル番号 == 0x50) + if (pChip.n整数値_内部番号 > c曲リストノード.score[i].譜面情報.nTotalFloor && pChip.nChannelNo == 0x50) c曲リストノード.score[i].譜面情報.nTotalFloor = pChip.n整数値_内部番号; } c曲リストノード.score[i].譜面情報.nTotalFloor++; diff --git a/OpenTaiko/src/Songs/CDTX.cs b/OpenTaiko/src/Songs/CTja.cs similarity index 88% rename from OpenTaiko/src/Songs/CDTX.cs rename to OpenTaiko/src/Songs/CTja.cs index 97cb0ae1..85d05b6a 100644 --- a/OpenTaiko/src/Songs/CDTX.cs +++ b/OpenTaiko/src/Songs/CTja.cs @@ -11,15 +11,15 @@ using Color = System.Drawing.Color; namespace OpenTaiko; -internal class CDTX : CActivity { - // 定数 - +internal class CTja : CActivity { + // 定数 + public enum E種別 { DTX, GDA, G2D, BMS, BME, SMF } public List listErrors = new List(); - private int nNowReadLine; - // Class - + private int nNowReadLine; + // Class + public class CBPM { public double dbBPM値; public double bpm_change_time; @@ -31,9 +31,9 @@ internal class CDTX : CActivity { public override string ToString() { StringBuilder builder = new StringBuilder(0x80); if (this.n内部番号 != this.n表記上の番号) { - builder.Append(string.Format("CBPM{0}(内部{1})", CDTX.tZZ(this.n表記上の番号), this.n内部番号)); + builder.Append(string.Format("CBPM{0}(内部{1})", CTja.tZZ(this.n表記上の番号), this.n内部番号)); } else { - builder.Append(string.Format("CBPM{0}", CDTX.tZZ(this.n表記上の番号))); + builder.Append(string.Format("CBPM{0}", CTja.tZZ(this.n表記上の番号))); } builder.Append(string.Format(", BPM:{0}", this.dbBPM値)); return builder.ToString(); @@ -48,21 +48,21 @@ internal class CDTX : CActivity { public override string ToString() { StringBuilder builder = new StringBuilder(0x80); if (this.n内部番号 != this.n表記上の番号) { - builder.Append(string.Format("CSCROLL{0}(内部{1})", CDTX.tZZ(this.n表記上の番号), this.n内部番号)); + builder.Append(string.Format("CSCROLL{0}(内部{1})", CTja.tZZ(this.n表記上の番号), this.n内部番号)); } else { - builder.Append(string.Format("CSCROLL{0}", CDTX.tZZ(this.n表記上の番号))); + builder.Append(string.Format("CSCROLL{0}", CTja.tZZ(this.n表記上の番号))); } builder.Append(string.Format(", SCROLL:{0}", this.dbSCROLL値)); return builder.ToString(); } - } + } /// /// 判定ライン移動命令 /// public class CJPOSSCROLL { public double db移動時間; public int n移動距離px; - public int n移動方向; //移動方向は0(左)、1(右)の2つだけ。 + public int n移動方向; //移動方向は0(左)、1(右)の2つだけ。 public int n内部番号; public int n表記上の番号; public int nVerticalMove; @@ -70,9 +70,9 @@ internal class CDTX : CActivity { public override string ToString() { StringBuilder builder = new StringBuilder(0x80); if (this.n内部番号 != this.n表記上の番号) { - builder.Append(string.Format("CJPOSSCROLL{0}(内部{1})", CDTX.tZZ(this.n表記上の番号), this.n内部番号)); + builder.Append(string.Format("CJPOSSCROLL{0}(内部{1})", CTja.tZZ(this.n表記上の番号), this.n内部番号)); } else { - builder.Append(string.Format("CJPOSSCROLL{0}", CDTX.tZZ(this.n表記上の番号))); + builder.Append(string.Format("CJPOSSCROLL{0}", CTja.tZZ(this.n表記上の番号))); } builder.Append(string.Format(", JPOSSCROLL:{0}", this.db移動時間)); return builder.ToString(); @@ -80,7 +80,7 @@ internal class CDTX : CActivity { } public class CDELAY { - public int nDELAY値; //格納時にはmsになっているため、doubleにはしない。 + public int nDELAY値; //格納時にはmsになっているため、doubleにはしない。 public int n内部番号; public int n表記上の番号; public double delay_time; @@ -91,22 +91,22 @@ internal class CDTX : CActivity { public override string ToString() { StringBuilder builder = new StringBuilder(0x80); if (this.n内部番号 != this.n表記上の番号) { - builder.Append(string.Format("CDELAY{0}(内部{1})", CDTX.tZZ(this.n表記上の番号), this.n内部番号)); + builder.Append(string.Format("CDELAY{0}(内部{1})", CTja.tZZ(this.n表記上の番号), this.n内部番号)); } else { - builder.Append(string.Format("CDELAY{0}", CDTX.tZZ(this.n表記上の番号))); + builder.Append(string.Format("CDELAY{0}", CTja.tZZ(this.n表記上の番号))); } builder.Append(string.Format(", DELAY:{0}", this.nDELAY値)); return builder.ToString(); } } - public enum E分岐種類 { - e精度分岐, - e連打分岐, - eスコア分岐, - e大音符のみ精度分岐 + public enum EBranchConditionType { + Accuracy, + Drumroll, + Score, + Accuracy_BigNotesOnly } public class CBRANCH { - public E分岐種類 e分岐の種類; //0:精度分岐 1:連打分岐 2:スコア分岐 3:大音符のみの精度分岐 + public EBranchConditionType e分岐の種類; //0:精度分岐 1:連打分岐 2:スコア分岐 3:大音符のみの精度分岐 public double n条件数値A; public double n条件数値B; public double db分岐時間; @@ -124,398 +124,30 @@ internal class CDTX : CActivity { public override string ToString() { StringBuilder builder = new StringBuilder(0x80); if (this.n内部番号 != this.n表記上の番号) { - builder.Append(string.Format("CBRANCH{0}(内部{1})", CDTX.tZZ(this.n表記上の番号), this.n内部番号)); + builder.Append(string.Format("CBRANCH{0}(内部{1})", CTja.tZZ(this.n表記上の番号), this.n内部番号)); } else { - builder.Append(string.Format("CBRANCH{0}", CDTX.tZZ(this.n表記上の番号))); + builder.Append(string.Format("CBRANCH{0}", CTja.tZZ(this.n表記上の番号))); } builder.Append(string.Format(", BRANCH:{0}", this.e分岐の種類)); return builder.ToString(); } - } - - - public class CChip : IComparable, ICloneable { - public EScrollMode eScrollMode; - public bool bHit; - public bool b可視 = true; - public bool bHideBarLine = true; - public bool bProcessed = false; - public bool bShow; - public bool bShowRoll; - public bool bBranch = false; - public double dbチップサイズ倍率 = 1.0; - public double db実数値; - public double dbBPM; - public float fNow_Measure_s = 4.0f;//強制分岐のために追加.2020.04.21.akasoko26 - public float fNow_Measure_m = 4.0f;//強制分岐のために追加.2020.04.21.akasoko26 - public bool IsEndedBranching = false;//分岐が終わった時の連打譜面が非可視化になってしまうためフラグを追加.2020.04.21.akasoko26 - public double dbSCROLL; - public double dbSCROLL_Y; - public ECourse nコース; - public int nSenote; - public int nState; - public int nRollCount; - public int nBalloon; - public int nProcessTime; - public int nスクロール方向; - public int n描画優先度; //(特殊)現状連打との判断目的で使用 - public ENoteState eNoteState; - public EInstrumentPad e楽器パート = EInstrumentPad.Unknown; - public int nチャンネル番号; - public int VideoStartTimeMs; - public STDGBVALUE nバーからの距離dot; - public int nバーからのノーツ末端距離dot; - public int nバーからのノーツ末端距離dot_Y; - public int n整数値; - public int n文字数 = 16; - - public int n整数値_内部番号; - public int n総移動時間; - public int n透明度 = 0xff; - public int n発声位置; - public double n条件数値A; - public double n条件数値B; - public double db分岐時間のズレ; - public E分岐種類 e分岐の種類; - - public double db発声位置; // 発声時刻を格納していた変数のうちの1つをfloat型からdouble型に変更。(kairera0467) - public double fBMSCROLLTime; - public double fBMSCROLLTime_end; - public int n発声時刻ms; - public double n分岐時刻ms; - - - public double db発声時刻ms; - public int nノーツ終了位置; - public int nノーツ終了時刻ms; - public int nノーツ出現時刻ms; - public int nノーツ移動開始時刻ms; - public int n分岐回数; - public int n連打音符State; - public int nLag; // 2011.2.1 yyagi - public double db発声時刻; - public double db判定終了時刻;//連打系音符で使用 - public double dbProcess_Time; - public int nPlayerSide; - public bool bGOGOTIME = false; //2018.03.11 k1airera0467 ゴーゴータイム内のチップであるか - public int nList上の位置; - public bool IsFixedSENote; - public bool IsHitted = false; - public bool IsMissed = false; - - - - //EXTENDED COMMANDS - public int fCamTimeMs; - public string strCamEaseType; - public Easing.CalcType fCamMoveType; - - public float fCamScrollStartX; - public float fCamScrollStartY; - public float fCamScrollEndX; - public float fCamScrollEndY; - - public float fCamRotationStart; - public float fCamRotationEnd; - - public float fCamZoomStart; - public float fCamZoomEnd; - - public float fCamScaleStartX; - public float fCamScaleStartY; - public float fCamScaleEndX; - public float fCamScaleEndY; - - public Color4 borderColor; - - public int fObjTimeMs; - public string strObjName; - public string strObjEaseType; - public Easing.CalcType objCalcType; - - public float fObjX; - public float fObjY; - - public float fObjStart; - public float fObjEnd; - - public CSongObject obj; - - public string strTargetTxName; - public string strNewPath; - - public string strConfigValue; - - public double dbAnimInterval; - - public int intFrame; - - public EGameType eGameType; - // - - - public bool bBPMチップである { - get { - if (this.nチャンネル番号 == 3 || this.nチャンネル番号 == 8) { - return true; - } else { - return false; - } - } - } - public bool b自動再生音チャンネルである { - get { - int num = this.nチャンネル番号; - if ((((num != 1) && ((0x61 > num) || (num > 0x69))) && ((0x70 > num) || (num > 0x79))) && ((0x80 > num) || (num > 0x89))) { - return ((0x90 <= num) && (num <= 0x92)); - } - return true; - } - } - - - - public bool b演奏終了後も再生が続くチップである; // #32248 2013.10.14 yyagi - public CCounter RollDelay; // 18.9.22 AioiLight Add 連打時に赤くなるやつのタイマー - public CCounter RollInputTime; // 18.9.22 AioiLight Add 連打入力後、RollDelayが作動するまでのタイマー - public int RollEffectLevel; // 18.9.22 AioiLight Add 連打時に赤くなるやつの度合い - - public CChip() { - this.nバーからの距離dot = new STDGBVALUE() { - Drums = 0, - Guitar = 0, - Bass = 0, - Taiko = 0 - }; - } - public void t初期化() { - this.bBranch = false; - this.nチャンネル番号 = 0; - this.n整数値 = 0; //整数値をList上の番号として用いる。 - this.n整数値_内部番号 = 0; - this.db実数値 = 0.0; - this.n発声位置 = 0; - this.db発声位置 = 0.0D; - this.n発声時刻ms = 0; - this.db発声時刻ms = 0.0D; - this.fBMSCROLLTime = 0; - this.nノーツ終了位置 = 0; - this.nノーツ終了時刻ms = 0; - this.n描画優先度 = 0; - this.nLag = -999; - this.b演奏終了後も再生が続くチップである = false; - this.nList上の位置 = 0; - this.dbチップサイズ倍率 = 1.0; - this.bHit = false; - this.IsMissed = false; - this.b可視 = true; - this.e楽器パート = EInstrumentPad.Unknown; - this.n透明度 = 0xff; - this.nバーからの距離dot.Drums = 0; - this.nバーからの距離dot.Guitar = 0; - this.nバーからの距離dot.Bass = 0; - this.nバーからの距離dot.Taiko = 0; - this.nバーからのノーツ末端距離dot = 0; - this.nバーからのノーツ末端距離dot_Y = 0; - this.n総移動時間 = 0; - this.dbBPM = 120.0; - this.fNow_Measure_m = 4.0f; - this.fNow_Measure_s = 4.0f; - this.nスクロール方向 = 0; - this.dbSCROLL = 1.0; - this.dbSCROLL_Y = 0.0f; - } - public override string ToString() { - - //2016.10.07 kairera0467 近日中に再編成予定 - string[] chToStr = - { - //システム - "??", "バックコーラス", "小節長変更", "BPM変更", "??", "??", "??", "??", - "BPM変更(拡張)", "??", "??", "??", "??", "??", "??", "??", - - //太鼓1P(移動予定) - "??", "ドン", "カツ", "ドン(大)", "カツ(大)", "連打", "連打(大)", "ふうせん連打", - "連打終点", "芋", "ドン(手)", "カッ(手)", "Mine", "??", "??", "AD-LIB", - - //太鼓予備 - "??", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - - //太鼓予備 - "??", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - - //太鼓予備 - "??", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - - //システム - "小節線", "拍線", "??", "??", "AVI", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - - //システム(移動予定) - "SCROLL", "DELAY", "ゴーゴータイム開始", "ゴーゴータイム終了", "カメラ移動開始(縦)", "カメラ移動終了(縦)", "カメラ移動開始(横)", "カメラ移動終了(横)", - "カメラズーム開始", "カメラズーム終了", "カメラ回転開始", "カメラ回転終了", "カメラスケーリング開始(横)", "カメラスケーリング終了(横)", "カメラスケーリング開始(縦)", "カメラスケーリング終了(縦)", - - "ボーダーカラー変更", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - - "??", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - - //太鼓1P、システム(現行) - "??", "??", "??", "太鼓_赤", "太鼓_青", "太鼓_赤(大)", "太鼓_青(大)", "太鼓_黄", - "太鼓_黄(大)", "太鼓_風船", "太鼓_連打末端", "太鼓_芋", "??", "SCROLL", "ゴーゴータイム開始", "ゴーゴータイム終了", - - "??", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "太鼓 AD-LIB", - - "??", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - - "??", "??", "??", "??", "0xC4", "0xC5", "0xC6", "??", - "??", "??", "0xCA", "??", "??", "??", "??", "0xCF", - - //システム(現行) - "0xD0", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "ミキサー追加", "ミキサー削除", "DELAY", "譜面分岐リセット", "譜面分岐アニメ", "譜面分岐内部処理", - - //システム(現行) - "小節線ON/OFF", "分岐固定", "判定枠移動", "", "", "", "", "", - "", "", "", "", "", "", "", "", - - "0xF0", "歌詞", "??", "SUDDEN", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", "譜面終了", - - // Extra notes - - "KaDon", "??", "??", "??", "??", "??", "??", "??", - "??", "??", "??", "??", "??", "??", "??", "??", - }; - return string.Format("CChip: 位置:{0:D4}.{1:D3}, 時刻{2:D6}, Ch:{3:X2}({4}), Pn:{5}({11})(内部{6}), Pd:{7}, Sz:{8}, BMScroll:{9}, Auto:{10}, コース:{11}", - this.n発声位置 / 384, this.n発声位置 % 384, - this.n発声時刻ms, - this.nチャンネル番号, chToStr[this.nチャンネル番号], - this.n整数値, this.n整数値_内部番号, - this.db実数値, - this.dbチップサイズ倍率, - this.fBMSCROLLTime, - this.b自動再生音チャンネルである, - this.nコース, - CDTX.tZZ(this.n整数値)); - } - /// - /// チップの再生長を取得する。現状、WAVチップとBGAチップでのみ使用可能。 - /// - /// 再生長(ms) - public int GetDuration() { - int nDuration = 0; - - if (this.nチャンネル番号 == 0x01) // WAV - { - CDTX.CWAV wc; - OpenTaiko.DTX.listWAV.TryGetValue(this.n整数値_内部番号, out wc); - if (wc == null) { - nDuration = 0; - } else { - nDuration = (wc.rSound[0] == null) ? 0 : wc.rSound[0].TotalPlayTime; - } - } else if (this.nチャンネル番号 == 0x54) // AVI - { - CVideoDecoder wc; - OpenTaiko.DTX.listVD.TryGetValue(this.n整数値_内部番号, out wc); - if (wc == null) { - nDuration = 0; - } else { - nDuration = (int)(wc.Duration * 1000); - } - } - - double _db再生速度 = OpenTaiko.DTX.db再生速度; - return (int)(nDuration / _db再生速度); - } - - #region [ IComparable 実装 ] - //----------------- - - private static readonly byte[] n優先度 = new byte[] { - 5, 5, 3, 7, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, //0x00 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x10 - 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, //0x20 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x30 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x40 - 9, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x50 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x60 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x70 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x80 - 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9, //0x90 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xA0 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xB0 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xC0 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 4, 4, //0xD0 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xE0 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xF0 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x100 - }; - - public int CompareTo(CDTX.CChip other) { - // まずは位置で比較。 - - //BGMチップだけ発声位置 - //if( this.nチャンネル番号 == 0x01 || this.nチャンネル番号 == 0x02 ) - //{ - // if( this.n発声位置 < other.n発声位置 ) - // return -1; - - // if( this.n発声位置 > other.n発声位置 ) - // return 1; - //} - - //if( this.n発声位置 < other.n発声位置 ) - // return -1; - - //if( this.n発声位置 > other.n発声位置 ) - // return 1; - - //譜面解析メソッドV4では発声時刻msで比較する。 - var n発声時刻msCompareToResult = 0; - n発声時刻msCompareToResult = this.n発声時刻ms.CompareTo(other.n発声時刻ms); - if (n発声時刻msCompareToResult != 0) { - return n発声時刻msCompareToResult; - } - - n発声時刻msCompareToResult = this.db発声時刻ms.CompareTo(other.db発声時刻ms); - if (n発声時刻msCompareToResult != 0) { - return n発声時刻msCompareToResult; - } - - // 位置が同じなら優先度で比較。 - return n優先度[this.nチャンネル番号].CompareTo(n優先度[other.nチャンネル番号]); - } - //----------------- - #endregion - /// - /// shallow copyです。 - /// - /// - public object Clone() { - return MemberwiseClone(); - } - } + } + + + public class CWAV : IDisposable { public bool bBGMとして使う; public List listこのWAVを使用するチャンネル番号の集合 = new List(16); public int nチップサイズ = 100; public int n位置; - public long[] n一時停止時刻 = new long[OpenTaiko.ConfigIni.nPoliphonicSounds]; // 4 + public long[] n一時停止時刻 = new long[OpenTaiko.ConfigIni.nPoliphonicSounds]; // 4 public int SongVol = CSound.DefaultSongVol; public LoudnessMetadata? SongLoudnessMetadata = null; public int n現在再生中のサウンド番号; - public long[] n再生開始時刻 = new long[OpenTaiko.ConfigIni.nPoliphonicSounds]; // 4 + public long[] n再生開始時刻 = new long[OpenTaiko.ConfigIni.nPoliphonicSounds]; // 4 public int n内部番号; public int n表記上の番号; - public CSound[] rSound = new CSound[OpenTaiko.ConfigIni.nPoliphonicSounds]; // 4 + public CSound[] rSound = new CSound[OpenTaiko.ConfigIni.nPoliphonicSounds]; // 4 public string strコメント文 = ""; public string strファイル名 = ""; public bool bBGMとして使わない { @@ -536,18 +168,18 @@ internal class CDTX : CActivity { var sb = new StringBuilder(128); if (this.n表記上の番号 == this.n内部番号) { - sb.Append(string.Format("CWAV{0}: ", CDTX.tZZ(this.n表記上の番号))); + sb.Append(string.Format("CWAV{0}: ", CTja.tZZ(this.n表記上の番号))); } else { - sb.Append(string.Format("CWAV{0}(内部{1}): ", CDTX.tZZ(this.n表記上の番号), this.n内部番号)); + sb.Append(string.Format("CWAV{0}(内部{1}): ", CTja.tZZ(this.n表記上の番号), this.n内部番号)); } sb.Append( $"{nameof(SongVol)}:{this.SongVol}, {nameof(LoudnessMetadata.Integrated)}:{this.SongLoudnessMetadata?.Integrated}, {nameof(LoudnessMetadata.TruePeak)}:{this.SongLoudnessMetadata?.TruePeak}, 位置:{this.n位置}, サイズ:{this.nチップサイズ}, BGM:{(this.bBGMとして使う ? 'Y' : 'N')}, File:{this.strファイル名}, Comment:{this.strコメント文}"); return sb.ToString(); - } - + } + #region [ Dispose-Finalize パターン実装 ] - //----------------- + //----------------- public void Dispose() { this.Dispose(true); GC.SuppressFinalize(this); @@ -557,7 +189,7 @@ internal class CDTX : CActivity { return; if (bManagedリソースの解放も行う) { - for (int i = 0; i < OpenTaiko.ConfigIni.nPoliphonicSounds; i++) // 4 + for (int i = 0; i < OpenTaiko.ConfigIni.nPoliphonicSounds; i++) // 4 { if (this.rSound[i] != null) OpenTaiko.SoundManager.tDisposeSound(this.rSound[i]); @@ -572,14 +204,14 @@ internal class CDTX : CActivity { } ~CWAV() { this.Dispose(false); - } - //----------------- + } + //----------------- #endregion - + #region [ private ] - //----------------- - private bool bDisposed済み; - //----------------- + //----------------- + private bool bDisposed済み; + //----------------- #endregion } @@ -614,11 +246,11 @@ internal class CDTX : CActivity { public SKBitmap TextTex; public string Text; public int index; - } - - - // 構造体 - + } + + + // 構造体 + public struct STLANEINT { public int HH; public int SD; @@ -769,75 +401,7 @@ internal class CDTX : CActivity { } } } - public struct STRESULT { - public string SS; - public string S; - public string A; - public string B; - public string C; - public string D; - public string E; - public string this[int index] { - get { - switch (index) { - case 0: - return this.SS; - - case 1: - return this.S; - - case 2: - return this.A; - - case 3: - return this.B; - - case 4: - return this.C; - - case 5: - return this.D; - - case 6: - return this.E; - } - throw new IndexOutOfRangeException(); - } - set { - switch (index) { - case 0: - this.SS = value; - return; - - case 1: - this.S = value; - return; - - case 2: - this.A = value; - return; - - case 3: - this.B = value; - return; - - case 4: - this.C = value; - return; - - case 5: - this.D = value; - return; - - case 6: - this.E = value; - return; - } - throw new IndexOutOfRangeException(); - } - } - } public struct STチップがある { public bool Drums; public bool Guitar; @@ -948,11 +512,11 @@ internal class CDTX : CActivity { public double dbBMS時刻; public ECourse nコース = ECourse.eNormal; public int nタイプ; - } - - // Properties - - + } + + // Properties + + public class CBranchStartInfo { public int nMeasureCount; public double dbTime; @@ -965,8 +529,8 @@ internal class CDTX : CActivity { public double db再生速度; public float fMeasure_s; public float fMeasure_m; - } - + } + /// /// 分岐開始時の情報を記録するためのあれ 2020.04.21 /// @@ -976,9 +540,9 @@ internal class CDTX : CActivity { get; private set; } - public bool b分岐を一回でも開始した = false; //2020.04.22 akasoko26 分岐譜面のみ値を代入するように。 - - public int nPlayerSide; //2017.08.14 kairera0467 引数で指定する + public bool b分岐を一回でも開始した = false; //2020.04.22 akasoko26 分岐譜面のみ値を代入するように。 + + public int nPlayerSide; //2017.08.14 kairera0467 引数で指定する public bool bSession譜面を読み込む; public string ARTIST; public string BACKGROUND; @@ -1001,9 +565,9 @@ internal class CDTX : CActivity { 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 ESide SIDE; - public CSongUniqueID uniqueID; - - // Tower lifes + public CSongUniqueID uniqueID; + + // Tower lifes public int LIFE; public string TOWERTYPE; @@ -1067,58 +631,58 @@ internal class CDTX : CActivity { public bool[] bHasBranch = new bool[(int)Difficulty.Total] { false, false, false, false, false, false, false }; - public bool[] bHasBranchDan = new bool[1] { false }; - - //分岐関連 + public bool[] bHasBranchDan = new bool[1] { false }; + + //分岐関連 private ECourse n現在のコース = ECourse.eNormal; private bool b最初の分岐である; - public int[] nノーツ数 = new int[4]; //3:共通 - + public int[] nノーツ数 = new int[4]; //3:共通 + public int[] nDan_NotesCount = new int[1]; - public int[] nDan_BalloonCount = new int[1]; - // public int[] nDan_BallonCount = new int[1]; - - public int[] nノーツ数_Branch = new int[4]; // + public int[] nDan_BalloonCount = new int[1]; + // public int[] nDan_BallonCount = new int[1]; + + public int[] nノーツ数_Branch = new int[4]; // public CChip[] pDan_LastChip; - public int[] n風船数 = new int[4]; //0~2:各コース 3:共通 - + public int[] n風船数 = new int[4]; //0~2:各コース 3:共通 + private List listLine; - private int nLineCountTemp; //分岐開始時の小節数を記録。 - private ECourse nLineCountCourseTemp = ECourse.eNormal; //現在カウント中のコースを記録。 - + private int nLineCountTemp; //分岐開始時の小節数を記録。 + private ECourse nLineCountCourseTemp = ECourse.eNormal; //現在カウント中のコースを記録。 + public int n参照中の難易度 = 3; - public int nScoreModeTmp = 99; //2017.01.28 DD - public int[,] nScoreInit = new int[2, (int)Difficulty.Total]; //[ x, y ] x=通常or真打 y=コース - public int[] nScoreDiff = new int[(int)Difficulty.Total]; //[y] - public bool[,] b配点が指定されている = new bool[3, (int)Difficulty.Total]; //2017.06.04 kairera0467 [ x, y ] x=通常(Init)or真打orDiff y=コース - + public int nScoreModeTmp = 99; //2017.01.28 DD + public int[,] nScoreInit = new int[2, (int)Difficulty.Total]; //[ x, y ] x=通常or真打 y=コース + public int[] nScoreDiff = new int[(int)Difficulty.Total]; //[y] + public bool[,] b配点が指定されている = new bool[3, (int)Difficulty.Total]; //2017.06.04 kairera0467 [ x, y ] x=通常(Init)or真打orDiff y=コース + private double dbBarLength; public float fNow_Measure_s = 4.0f; public float fNow_Measure_m = 4.0f; public double dbNowTime = 0.0; public double dbNowBMScollTime = 0.0; public double dbNowScroll = 1.0; - public double dbNowScrollY = 0.0; //2016.08.13 kairera0467 複素数スクロール - public double dbLastTime = 0.0; //直前の小節の開始時間 + public double dbNowScrollY = 0.0; //2016.08.13 kairera0467 複素数スクロール + public double dbLastTime = 0.0; //直前の小節の開始時間 public double dbLastBMScrollTime = 0.0; - public int[] bBARLINECUE = new int[2]; //命令を入れた次の小節の操作を実現するためのフラグ。0 = mainflag, 1 = cuetype - public bool b小節線を挿入している = false; - - //Normal Regular Masterにしたいけどここは我慢。 + public int[] bBARLINECUE = new int[2]; //命令を入れた次の小節の操作を実現するためのフラグ。0 = mainflag, 1 = cuetype + public bool b小節線を挿入している = false; + + //Normal Regular Masterにしたいけどここは我慢。 private List listBalloon_Normal; private List listBalloon_Expert; private List listBalloon_Master; - private List listBalloon; //旧構文用 - - public List listLyric; //歌詞を格納していくリスト。スペル忘れた(ぉい - public List listLyric2; - - //public Dictionary kusudaMAP = new Dictionary(); - - public bool usingLyricsFile; //If lyric file is used (VTT/LRC), ignore #LYRIC tags & do not parse other lyric file tags - + private List listBalloon; //旧構文用 + + public List listLyric; //歌詞を格納していくリスト。スペル忘れた(ぉい + public List listLyric2; + + //public Dictionary kusudaMAP = new Dictionary(); + + public bool usingLyricsFile; //If lyric file is used (VTT/LRC), ignore #LYRIC tags & do not parse other lyric file tags + private int listBalloon_Normal_数値管理; private int listBalloon_Expert_数値管理; private int listBalloon_Master_数値管理; @@ -1131,19 +695,19 @@ internal class CDTX : CActivity { private string[] dlmtEnter = { "\n" }; private string[] dlmtCOURSE = { "COURSE:" }; - private int nスクロール方向 = 0; - //2015.09.18 kairera0467 - //バタフライスライドみたいなアレをやりたいがために実装。 - //次郎2みたいな複素数とかは意味不明なので、方向を指定してスクロールさせることにした。 - //0:通常 - //1:上 - //2:下 - //3:右上 - //4:右下 - //5:左 - //6:左上 - //7:左下 - + private int nスクロール方向 = 0; + //2015.09.18 kairera0467 + //バタフライスライドみたいなアレをやりたいがために実装。 + //次郎2みたいな複素数とかは意味不明なので、方向を指定してスクロールさせることにした。 + //0:通常 + //1:上 + //2:下 + //3:右上 + //4:右下 + //5:左 + //6:左上 + //7:左下 + public string strBGIMAGE_PATH; public string strBGVIDEO_PATH; @@ -1154,34 +718,34 @@ internal class CDTX : CActivity { public int SongVol; public LoudnessMetadata? SongLoudnessMetadata; - public bool bHIDDENBRANCH; //2016.04.01 kairera0467 選曲画面上、譜面分岐開始前まで譜面分岐の表示を隠す - public bool bGOGOTIME; //2018.03.11 kairera0467 - - public bool[] IsBranchBarDraw = new bool[4]; // 仕様変更により、黄色lineの表示法を変更.2020.04.21.akasoko26 - public bool IsEndedBranching = true; // BRANCHENDが呼び出されたかどうか + public bool bHIDDENBRANCH; //2016.04.01 kairera0467 選曲画面上、譜面分岐開始前まで譜面分岐の表示を隠す + public bool bGOGOTIME; //2018.03.11 kairera0467 + + public bool[] IsBranchBarDraw = new bool[4]; // 仕様変更により、黄色lineの表示法を変更.2020.04.21.akasoko26 + public bool IsEndedBranching = true; // BRANCHENDが呼び出されたかどうか public Dan_C[] Dan_C; public bool IsEnabledFixSENote; public int FixSENote; - public GaugeIncreaseMode GaugeIncreaseMode; - + public GaugeIncreaseMode GaugeIncreaseMode; + #region [ EXTENDED VARiABLES ] public Dictionary listObj; public Dictionary listTextures; - public Dictionary listOriginalTextures; + public Dictionary listOriginalTextures; #endregion - - - + + + #if TEST_NOTEOFFMODE public STLANEVALUE b演奏で直前の音を消音する; // public bool bHH演奏で直前のHHを消音する; // public bool bGUITAR演奏で直前のGUITARを消音する; // public bool bBASS演奏で直前のBASSを消音する; #endif - // Constructor - - public CDTX() { + // Constructor + + public CTja() { this.nPlayerSide = 0; this.TITLE.SetString("default", ""); this.SUBTITLE.SetString("default", ""); @@ -1201,7 +765,7 @@ internal class CDTX : CActivity { this.BACKGROUND_GR = ""; this.PATH_WAV = ""; this.BPM = 120.0; - this.nOFFSET = OpenTaiko.ConfigIni.nGlobalOffsetMs; // When OFFSET isn't called (typically in Dans), it should default to the game's Global Offset to avoid desync. + this.nOFFSET = OpenTaiko.ConfigIni.nGlobalOffsetMs; // When OFFSET isn't called (typically in Dans), it should default to the game's Global Offset to avoid desync. this.bOFFSETの値がマイナスである = nOFFSET < 0; STDGBVALUE stdgbvalue = new STDGBVALUE(); stdgbvalue.Drums = 0; @@ -1231,8 +795,8 @@ internal class CDTX : CActivity { this.listBalloon_Master_数値管理 = 0; this.nRESULTIMAGE用優先順位 = new int[7]; this.nRESULTMOVIE用優先順位 = new int[7]; - this.nRESULTSOUND用優先順位 = new int[7]; - + this.nRESULTSOUND用優先順位 = new int[7]; + #region [ 2011.1.1 yyagi GDA->DTX変換テーブル リファクタ後 ] STGDAPARAM[] stgdaparamArray = new STGDAPARAM[] { // GDA->DTX conversion table new STGDAPARAM("TC", 0x03), new STGDAPARAM("BL", 0x02), new STGDAPARAM("GS", 0x29), @@ -1257,13 +821,13 @@ internal class CDTX : CActivity { new STGDAPARAM("B7", 0xA7), new STGDAPARAM("BW", 0xA8), new STGDAPARAM("G0", 0x20), new STGDAPARAM("B0", 0xA0) }; - this.stGDAParam = stgdaparamArray; + this.stGDAParam = stgdaparamArray; #endregion this.nBGMAdjust = 0; this.nPolyphonicSounds = OpenTaiko.ConfigIni.nPoliphonicSounds; - this.dbDTXVPlaySpeed = 1.0f; - - //this.nScoreModeTmp = 1; + this.dbDTXVPlaySpeed = 1.0f; + + //this.nScoreModeTmp = 1; for (int y = 0; y < (int)Difficulty.Total; y++) { this.nScoreInit[0, y] = 300; this.nScoreInit[1, y] = 1000; @@ -1280,34 +844,34 @@ internal class CDTX : CActivity { this.SongVol = CSound.DefaultSongVol; this.SongLoudnessMetadata = null; - GaugeIncreaseMode = GaugeIncreaseMode.Normal; - + GaugeIncreaseMode = GaugeIncreaseMode.Normal; + #if TEST_NOTEOFFMODE this.bHH演奏で直前のHHを消音する = true; this.bGUITAR演奏で直前のGUITARを消音する = true; this.bBASS演奏で直前のBASSを消音する = true; #endif - - Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; // Change default culture to invariant, fixes (Purota) + + Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; // Change default culture to invariant, fixes (Purota) Dan_C = new Dan_C[CExamInfo.cMaxExam]; pDan_LastChip = new CChip[1]; DanSongs.Number = 0; } - public CDTX(string strファイル名, bool bヘッダのみ, double db再生速度, int nBGMAdjust, int difficulty) + public CTja(string strファイル名, bool bヘッダのみ, double db再生速度, int nBGMAdjust, int difficulty) : this() { this.Activate(); this.t入力(strファイル名, bヘッダのみ, db再生速度, nBGMAdjust, 0, 0, false, difficulty); } - public CDTX(string strファイル名, bool bヘッダのみ, double db再生速度, int nBGMAdjust, int nReadVersionUnused, int nPlayerSide, bool bSession, int difficulty) + public CTja(string strファイル名, bool bヘッダのみ, double db再生速度, int nBGMAdjust, int nReadVersionUnused, int nPlayerSide, bool bSession, int difficulty) : this() { this.Activate(); this.t入力(strファイル名, bヘッダのみ, db再生速度, nBGMAdjust, nReadVersionUnused, nPlayerSide, bSession, difficulty); - } - - - // メソッド - + } + + + // メソッド + public void tAVIの読み込み() { if (!this.bヘッダのみ) { if (this.listVD != null) { @@ -1330,8 +894,8 @@ internal class CDTX : CActivity { if ((wc.rSound[i] != null) && (wc.rSound[i].IsPlaying)) { long nCurrentTime = SoundManager.PlayTimer.SystemTimeMs; if (nCurrentTime > wc.n再生開始時刻[i]) { - long nAbsTimeFromStartPlaying = nCurrentTime - wc.n再生開始時刻[i]; - // WASAPI/ASIO用↓ + long nAbsTimeFromStartPlaying = nCurrentTime - wc.n再生開始時刻[i]; + // WASAPI/ASIO用↓ if (!OpenTaiko.stage演奏ドラム画面.bPAUSE) { if (wc.rSound[i].IsPaused) wc.rSound[i].Resume(nAbsTimeFromStartPlaying); else wc.rSound[i].tSetPositonToBegin(nAbsTimeFromStartPlaying); @@ -1363,23 +927,23 @@ internal class CDTX : CActivity { string str = string.IsNullOrEmpty(this.PATH_WAV) ? this.strフォルダ名 : this.PATH_WAV; str = str + cwav.strファイル名; - try { + try { #region [ 同時発音数を、チャンネルによって変える ] - + int nPoly = nPolyphonicSounds; - if (OpenTaiko.SoundManager.GetCurrentSoundDeviceType() != "DirectSound") // DShowでの再生の場合はミキシング負荷が高くないため、 - { - // チップのライフタイム管理を行わない + if (OpenTaiko.SoundManager.GetCurrentSoundDeviceType() != "DirectSound") // DShowでの再生の場合はミキシング負荷が高くないため、 + { + // チップのライフタイム管理を行わない if (cwav.bIsBassSound) nPoly = (nPolyphonicSounds >= 2) ? 2 : 1; else if (cwav.bIsGuitarSound) nPoly = (nPolyphonicSounds >= 2) ? 2 : 1; else if (cwav.bIsSESound) nPoly = 1; else if (cwav.bIsBGMSound) nPoly = 1; } - if (cwav.bIsBGMSound) nPoly = 1; - + if (cwav.bIsBGMSound) nPoly = 1; + #endregion - + for (int i = 0; i < nPoly; i++) { try { cwav.rSound[i] = OpenTaiko.SoundManager.tCreateSound(str, ESoundGroup.SongPlayback); @@ -1404,18 +968,18 @@ internal class CDTX : CActivity { for (int j = 0; j < nPolyphonicSounds; j++) { cwav.rSound[j] = null; - } - - //continue; + } + + //continue; } } public static string tZZ(int n) { if (n < 0 || n >= 36 * 36) - return "!!"; // オーバー/アンダーフロー。 - - // n を36進数2桁の文字列にして返す。 - + return "!!"; // オーバー/アンダーフロー。 + + // n を36進数2桁の文字列にして返す。 + string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; return new string(new char[] { str[n / 36], str[n % 36] }); } @@ -1435,13 +999,13 @@ internal class CDTX : CActivity { if (NotesManager.IsMissableNote(chip)) { int n = rnd.Next(100); - if (n < bombFactor) chip.nチャンネル番号 = 0x1C; + if (n < bombFactor) chip.nChannelNo = 0x1C; } if (NotesManager.IsBalloon(chip)) { int n = rnd.Next(100); - if (n < fuseRollFactor) chip.nチャンネル番号 = 0x1D; + if (n < fuseRollFactor) chip.nChannelNo = 0x1D; } } @@ -1460,8 +1024,8 @@ internal class CDTX : CActivity { } } - public void tRandomizeTaikoChips(int player = 0) { - //2016.02.11 kairera0467 + public void tRandomizeTaikoChips(int player = 0) { + //2016.02.11 kairera0467 Random rnd = new System.Random(); var eRandom = OpenTaiko.ConfigIni.eRandom[OpenTaiko.GetActualPlayer(player)]; @@ -1469,19 +1033,19 @@ internal class CDTX : CActivity { switch (eRandom) { case ERandomMode.Mirror: foreach (var chip in this.listChip) { - switch (chip.nチャンネル番号) { + switch (chip.nChannelNo) { case 0x11: - chip.nチャンネル番号 = 0x12; + chip.nChannelNo = 0x12; break; case 0x12: - chip.nチャンネル番号 = 0x11; + chip.nChannelNo = 0x11; break; case 0x13: - chip.nチャンネル番号 = 0x14; + chip.nChannelNo = 0x14; chip.nSenote = 6; break; case 0x14: - chip.nチャンネル番号 = 0x13; + chip.nChannelNo = 0x13; chip.nSenote = 5; break; } @@ -1492,19 +1056,19 @@ internal class CDTX : CActivity { int n = rnd.Next(100); if (n >= 0 && n <= 20) { - switch (chip.nチャンネル番号) { + switch (chip.nChannelNo) { case 0x11: - chip.nチャンネル番号 = 0x12; + chip.nChannelNo = 0x12; break; case 0x12: - chip.nチャンネル番号 = 0x11; + chip.nChannelNo = 0x11; break; case 0x13: - chip.nチャンネル番号 = 0x14; + chip.nChannelNo = 0x14; chip.nSenote = 6; break; case 0x14: - chip.nチャンネル番号 = 0x13; + chip.nChannelNo = 0x13; chip.nSenote = 5; break; } @@ -1516,19 +1080,19 @@ internal class CDTX : CActivity { int n = rnd.Next(100); if (n >= 0 && n <= 50) { - switch (chip.nチャンネル番号) { + switch (chip.nChannelNo) { case 0x11: - chip.nチャンネル番号 = 0x12; + chip.nChannelNo = 0x12; break; case 0x12: - chip.nチャンネル番号 = 0x11; + chip.nChannelNo = 0x11; break; case 0x13: - chip.nチャンネル番号 = 0x14; + chip.nChannelNo = 0x14; chip.nSenote = 6; break; case 0x14: - chip.nチャンネル番号 = 0x13; + chip.nChannelNo = 0x13; chip.nSenote = 5; break; } @@ -1540,19 +1104,19 @@ internal class CDTX : CActivity { int n = rnd.Next(100); if (n >= 0 && n <= 80) { - switch (chip.nチャンネル番号) { + switch (chip.nChannelNo) { case 0x11: - chip.nチャンネル番号 = 0x12; + chip.nChannelNo = 0x12; break; case 0x12: - chip.nチャンネル番号 = 0x11; + chip.nChannelNo = 0x11; break; case 0x13: - chip.nチャンネル番号 = 0x14; + chip.nChannelNo = 0x14; chip.nSenote = 6; break; case 0x14: - chip.nチャンネル番号 = 0x13; + chip.nChannelNo = 0x13; chip.nSenote = 5; break; } @@ -1566,38 +1130,38 @@ internal class CDTX : CActivity { if (OpenTaiko.Tx.Puchichara[PuchiChara.tGetPuchiCharaIndexByName(OpenTaiko.GetActualPlayer(nPlayerSide))].effect.AllPurple) { foreach (var chip in this.listChip) { - switch (chip.nチャンネル番号) { + switch (chip.nChannelNo) { case 0x13: case 0x1A: - chip.nチャンネル番号 = 0x101; + chip.nChannelNo = 0x101; break; case 0x14: case 0x1B: - chip.nチャンネル番号 = 0x101; + chip.nChannelNo = 0x101; break; } } } - if (eRandom != ERandomMode.Off) { + if (eRandom != ERandomMode.Off) { #region[ list作成 ] - //ひとまずチップだけのリストを作成しておく。 - List list音符のみのリスト; + //ひとまずチップだけのリストを作成しておく。 + List list音符のみのリスト; list音符のみのリスト = new List(); int nCount = 0; int dkdkCount = 0; foreach (CChip chip in this.listChip) { - if (chip.nチャンネル番号 >= 0x11 && chip.nチャンネル番号 < 0x18) { + if (chip.nChannelNo >= 0x11 && chip.nChannelNo < 0x18) { list音符のみのリスト.Add(chip); } - } + } #endregion - + this.tSenotes_Core_V2(list音符のみのリスト); } - } - + } + #region [ チップの再生と停止 ] public void tチップの再生(CChip pChip, long n再生開始システム時刻ms) { if (OpenTaiko.ConfigIni.bNoAudioIfNot1xSpeed && OpenTaiko.ConfigIni.nSongSpeed != 20) @@ -1612,12 +1176,12 @@ internal class CDTX : CActivity { } CSound sound = wc.rSound[index]; if (sound != null) { - sound.PlaySpeed = OpenTaiko.ConfigIni.SongPlaybackSpeed; - // 再生速度によって、WASAPI/ASIOで使う使用mixerが決まるため、付随情報の設定(音量/PAN)は、再生速度の設定後に行う - - // 2018-08-27 twopointzero - DON'T attempt to load (or queue scanning) loudness metadata here. - // This code is called right after loading the .tja, and that code - // will have just made such an attempt. + sound.PlaySpeed = OpenTaiko.ConfigIni.SongPlaybackSpeed; + // 再生速度によって、WASAPI/ASIOで使う使用mixerが決まるため、付随情報の設定(音量/PAN)は、再生速度の設定後に行う + + // 2018-08-27 twopointzero - DON'T attempt to load (or queue scanning) loudness metadata here. + // This code is called right after loading the .tja, and that code + // will have just made such an attempt. OpenTaiko.SongGainController.Set(wc.SongVol, wc.SongLoudnessMetadata, sound); sound.SoundPosition = wc.n位置; @@ -1632,7 +1196,7 @@ internal class CDTX : CActivity { this.nBGMAdjust += nBGMAdjustの増減値; for (int i = 0; i < this.listChip.Count; i++) { - int nChannelNumber = this.listChip[i].nチャンネル番号; + int nChannelNumber = this.listChip[i].nChannelNo; if ((( (nChannelNumber == 1) || ((0x61 <= nChannelNumber) && (nChannelNumber <= 0x69)) @@ -1681,22 +1245,22 @@ internal class CDTX : CActivity { foreach (CWAV cwav in this.listWAV.Values) { this.tWavの再生停止(cwav.n内部番号, true); } - } + } #endregion - + public void t入力(string strファイル名, bool bヘッダのみ, double db再生速度, int nBGMAdjust, int nReadVersionUnused, int nPlayerSide, bool bSession, int difficulty) { this.bヘッダのみ = bヘッダのみ; this.strファイル名の絶対パス = Path.GetFullPath(strファイル名); this.strファイル名 = Path.GetFileName(this.strファイル名の絶対パス); - this.strフォルダ名 = Path.GetDirectoryName(this.strファイル名の絶対パス) + Path.DirectorySeparatorChar; - - // Unique ID parsing/generation + this.strフォルダ名 = Path.GetDirectoryName(this.strファイル名の絶対パス) + Path.DirectorySeparatorChar; + + // Unique ID parsing/generation this.uniqueID = new CSongUniqueID(this.strフォルダ名 + @$"{Path.DirectorySeparatorChar}uniqueID.json"); try { this.nPlayerSide = nPlayerSide; - this.bSession譜面を読み込む = bSession; - //次郎方式 + this.bSession譜面を読み込む = bSession; + //次郎方式 StreamReader reader = new StreamReader(strファイル名, Encoding.GetEncoding(OpenTaiko.sEncType)); string str2 = reader.ReadToEnd(); reader.Close(); @@ -1708,9 +1272,9 @@ internal class CDTX : CActivity { } } public void t入力_全入力文字列から(string str全入力文字列, string str1Unused, double db再生速度, int nBGMAdjust, int Difficulty) { - if (!string.IsNullOrEmpty(str全入力文字列)) { + if (!string.IsNullOrEmpty(str全入力文字列)) { #region [ 改行カット ] - this.db再生速度 = db再生速度; + this.db再生速度 = db再生速度; #endregion #region [ 初期化 ] for (int j = 0; j < 36 * 36; j++) { @@ -1728,7 +1292,7 @@ internal class CDTX : CActivity { this.nRESULTIMAGE用優先順位[k] = 0; this.nRESULTMOVIE用優先順位[k] = 0; this.nRESULTSOUND用優先順位[k] = 0; - } + } #endregion #region [ 入力/行解析 ] #region[初期化] @@ -1736,16 +1300,16 @@ internal class CDTX : CActivity { this.dbNowSCROLL_Normal = new double[] { 1.0, 0.0 }; this.dbNowSCROLL_Expert = new double[] { 1.0, 0.0 }; this.dbNowSCROLL_Master = new double[] { 1.0, 0.0 }; - this.n現在のコース = ECourse.eNormal; + this.n現在のコース = ECourse.eNormal; #endregion - this.t入力_V4(str全入力文字列, Difficulty); - + this.t入力_V4(str全入力文字列, Difficulty); + #endregion this.n無限管理WAV = null; this.n無限管理BPM = null; this.n無限管理PAN = null; this.n無限管理SIZE = null; - if (!this.bヘッダのみ) { + if (!this.bヘッダのみ) { #region [ BPM/BMP初期化 ] int ch; CBPM cbpm = null; @@ -1763,18 +1327,18 @@ internal class CDTX : CActivity { this.listBPM.Add(cbpm.n内部番号, cbpm); CChip chip = new CChip(); chip.n発声位置 = 0; - chip.nチャンネル番号 = 8; // 拡張BPM + chip.nChannelNo = 8; // 拡張BPM chip.n整数値 = 0; chip.n整数値_内部番号 = cbpm.n内部番号; this.listChip.Insert(0, chip); } else { CChip chip = new CChip(); chip.n発声位置 = 0; - chip.nチャンネル番号 = 8; // 拡張BPM + chip.nChannelNo = 8; // 拡張BPM chip.n整数値 = 0; chip.n整数値_内部番号 = cbpm.n内部番号; this.listChip.Insert(0, chip); - } + } #endregion #region [ CWAV初期化 ] foreach (CWAV cwav in this.listWAV.Values) { @@ -1784,57 +1348,57 @@ internal class CDTX : CActivity { if (cwav.n位置 <= -10000) { cwav.n位置 = 0; } - } + } #endregion #region [ チップ倍率設定 ] // #28145 2012.4.22 yyagi 二重ループを1重ループに変更して高速化) foreach (CChip chip in this.listChip) { if (this.listWAV.TryGetValue(chip.n整数値_内部番号, out CWAV cwav)) { - chip.dbチップサイズ倍率 = ((double)cwav.nチップサイズ) / 100.0; + chip.dbChipSizeRatio = ((double)cwav.nチップサイズ) / 100.0; } - } + } #endregion #region [ 拍子_拍線の挿入 ] if (this.listChip.Count > 0) { - this.listChip.Sort(); // 高速化のためにはこれを削りたいが、listChipの最後がn発声位置の終端である必要があるので、 - // 保守性確保を優先してここでのソートは残しておく - // なお、093時点では、このソートを削除しても動作するようにはしてある。 - // (ここまでの一部チップ登録を、listChip.Add(c)から同Insert(0,c)に変更してある) - // これにより、数ms程度ながらここでのソートも高速化されている。 - } + this.listChip.Sort(); // 高速化のためにはこれを削りたいが、listChipの最後がn発声位置の終端である必要があるので、 + // 保守性確保を優先してここでのソートは残しておく + // なお、093時点では、このソートを削除しても動作するようにはしてある。 + // (ここまでの一部チップ登録を、listChip.Add(c)から同Insert(0,c)に変更してある) + // これにより、数ms程度ながらここでのソートも高速化されている。 + } #endregion #region [ C2 [拍線_小節線表示指定] の処理 ] // #28145 2012.4.21 yyagi; 2重ループをほぼ1重にして高速化 bool bShowBeatBarLine = true; for (int i = 0; i < this.listChip.Count; i++) { bool bChangedBeatBarStatus = false; - if ((this.listChip[i].nチャンネル番号 == 0xc2)) { - if (this.listChip[i].n整数値 == 1) // BAR/BEAT LINE = ON + if ((this.listChip[i].nChannelNo == 0xc2)) { + if (this.listChip[i].n整数値 == 1) // BAR/BEAT LINE = ON { bShowBeatBarLine = true; bChangedBeatBarStatus = true; - } else if (this.listChip[i].n整数値 == 2) // BAR/BEAT LINE = OFF + } else if (this.listChip[i].n整数値 == 2) // BAR/BEAT LINE = OFF { bShowBeatBarLine = false; bChangedBeatBarStatus = true; } } int startIndex = i; - if (bChangedBeatBarStatus) // C2チップの前に50/51チップが来ている可能性に配慮 + if (bChangedBeatBarStatus) // C2チップの前に50/51チップが来ている可能性に配慮 { while (startIndex > 0 && this.listChip[startIndex].n発声位置 == this.listChip[i].n発声位置) { startIndex--; } - startIndex++; // 1つ小さく過ぎているので、戻す + startIndex++; // 1つ小さく過ぎているので、戻す } for (int j = startIndex; j <= i; j++) { - if (((this.listChip[j].nチャンネル番号 == 0x50) || (this.listChip[j].nチャンネル番号 == 0x51)) && + if (((this.listChip[j].nChannelNo == 0x50) || (this.listChip[j].nChannelNo == 0x51)) && (this.listChip[j].n整数値 == (36 * 36 - 1))) { - this.listChip[j].b可視 = bShowBeatBarLine; + this.listChip[j].bVisible = bShowBeatBarLine; } } - } + } #endregion this.n内部番号BRANCH1to = 0; - this.n内部番号JSCROLL1to = 0; + this.n内部番号JSCROLL1to = 0; #region [ 発声時刻の計算 ] double bpm = 120.0; int n発声位置 = 0; @@ -1849,12 +1413,12 @@ internal class CDTX : CActivity { int BGM番号 = 0; foreach (CChip chip in this.listChip) { - if (chip.nチャンネル番号 == 0x02) { } else if (chip.nチャンネル番号 == 0x01) { } else if (chip.nチャンネル番号 == 0x08) { } else if (chip.nチャンネル番号 >= 0x11 && chip.nチャンネル番号 <= 0x1F) { } else if (chip.nチャンネル番号 == 0x50) { } else if (chip.nチャンネル番号 == 0x51) { } else if (chip.nチャンネル番号 == 0x54) { } else if (chip.nチャンネル番号 == 0x08) { } 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チャンネル番号 == 0xDF) { chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); } else if (chip.nチャンネル番号 < 0x93) + if (chip.nChannelNo == 0x02) { } else if (chip.nChannelNo == 0x01) { } else if (chip.nChannelNo == 0x08) { } else if (chip.nChannelNo >= 0x11 && chip.nChannelNo <= 0x1F) { } else if (chip.nChannelNo == 0x50) { } else if (chip.nChannelNo == 0x51) { } else if (chip.nChannelNo == 0x54) { } else if (chip.nChannelNo == 0x08) { } else if (chip.nChannelNo == 0xF1) { } else if (chip.nChannelNo == 0xF2) { } else if (chip.nChannelNo == 0xFF) { } else if (chip.nChannelNo == 0xDD) { chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); } else if (chip.nChannelNo == 0xDF) { chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); } else if (chip.nChannelNo < 0x93) chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); - else if ((chip.nチャンネル番号 > 0x9F && chip.nチャンネル番号 < 0xA0) || (chip.nチャンネル番号 >= 0xF0 && chip.nチャンネル番号 < 0xFE)) + else if ((chip.nChannelNo > 0x9F && chip.nChannelNo < 0xA0) || (chip.nChannelNo >= 0xF0 && chip.nChannelNo < 0xFE)) chip.n発声時刻ms = ms + ((int)(((625 * (chip.n発声位置 - n発声位置)) * this.dbBarLength) / bpm)); nBar = chip.n発声位置 / 384; - ch = chip.nチャンネル番号; + ch = chip.nChannelNo; nCount++; this.nNowRollCount++; @@ -1867,8 +1431,8 @@ internal class CDTX : CActivity { if (this.bOFFSETの値がマイナスである == false) chip.n発声時刻ms += this.nOFFSET; - ms = chip.n発声時刻ms; - + ms = chip.n発声時刻ms; + #region[listlyric2の時間合わせ] for (int ind = 0; ind < listLyric2.Count; ind++) { if (listLyric2[ind].index == BGM番号) { @@ -1881,11 +1445,11 @@ internal class CDTX : CActivity { } - BGM番号++; + BGM番号++; #endregion continue; } - case 0x02: // BarLength + case 0x02: // BarLength { n発声位置 = chip.n発声位置; if (this.bOFFSETの値がマイナスである == false) @@ -1894,7 +1458,7 @@ internal class CDTX : CActivity { dbBarLength = chip.db実数値; continue; } - case 0x03: // BPM + case 0x03: // BPM { n発声位置 = chip.n発声位置; if (this.bOFFSETの値がマイナスである == false) @@ -1904,8 +1468,8 @@ internal class CDTX : CActivity { this.dbNowBPM = bpm; continue; } - case 0x04: // BGA (レイヤBGA1) - case 0x07: // レイヤBGA2 + case 0x04: // BGA (レイヤBGA1) + case 0x07: // レイヤBGA2 break; case 0x15: @@ -1917,7 +1481,7 @@ internal class CDTX : CActivity { case 0x21: { if (this.bOFFSETの値がマイナスである) { chip.n発声時刻ms += this.nOFFSET; - chip.nノーツ終了時刻ms += this.nOFFSET; + chip.nNoteEndTimems += this.nOFFSET; } this.nNowRoll = this.nNowRollCount - 1; @@ -1952,18 +1516,18 @@ internal class CDTX : CActivity { continue; } - case 0x05: // Extended Object (非対応) - case 0x06: // Missアニメ (非対応) - case 0x5A: // 未定義 - case 0x5b: // 未定義 - case 0x5c: // 未定義 - case 0x5d: // 未定義 - case 0x5e: // 未定義 - case 0x5f: // 未定義 + case 0x05: // Extended Object (非対応) + case 0x06: // Missアニメ (非対応) + case 0x5A: // 未定義 + case 0x5b: // 未定義 + case 0x5c: // 未定義 + case 0x5d: // 未定義 + case 0x5e: // 未定義 + case 0x5f: // 未定義 { continue; } - case 0x08: // 拡張BPM + case 0x08: // 拡張BPM { n発声位置 = chip.n発声位置; if (this.bOFFSETの値がマイナスである == false) @@ -1975,7 +1539,7 @@ internal class CDTX : CActivity { } continue; } - case 0x54: // 動画再生 + case 0x54: // 動画再生 { if (this.bOFFSETの値がマイナスである == false) chip.n発声時刻ms += this.nOFFSET; @@ -1990,7 +1554,7 @@ internal class CDTX : CActivity { case 0x99: { if (this.bOFFSETの値がマイナスである) { chip.n発声時刻ms += this.nOFFSET; - chip.nノーツ終了時刻ms += this.nOFFSET; + chip.nNoteEndTimems += this.nOFFSET; } this.nNowRoll = this.nNowRollCount - 1; @@ -2016,7 +1580,7 @@ internal class CDTX : CActivity { chip.n発声時刻ms += this.nOFFSET; chip.n分岐時刻ms += this.nOFFSET; } - this.n現在のコース = chip.nコース; + this.n現在のコース = chip.nBranch; continue; } case 0x52: { @@ -2024,7 +1588,7 @@ internal class CDTX : CActivity { chip.n発声時刻ms += this.nOFFSET; chip.n分岐時刻ms += this.nOFFSET; } - this.n現在のコース = chip.nコース; + this.n現在のコース = chip.nBranch; continue; } case 0xDF: { @@ -2048,39 +1612,39 @@ internal class CDTX : CActivity { foreach (CChip chip in this.listChip) { chip.n発声時刻ms = (int)(((double)chip.n発声時刻ms) / _db再生速度); chip.db発声時刻ms = (((double)chip.n発声時刻ms) / _db再生速度); - chip.nノーツ終了時刻ms = (int)(((double)chip.nノーツ終了時刻ms) / _db再生速度); + chip.nNoteEndTimems = (int)(((double)chip.nNoteEndTimems) / _db再生速度); } - } + } #endregion - + #region[listlyricを時間順に並び替え。] this.listLyric2 = tmplistlyric; - this.listLyric2.Sort((a, b) => a.Time.CompareTo(b.Time)); + this.listLyric2.Sort((a, b) => a.Time.CompareTo(b.Time)); #endregion - + this.nBGMAdjust = 0; - this.t各自動再生音チップの再生時刻を変更する(nBGMAdjust); - + this.t各自動再生音チップの再生時刻を変更する(nBGMAdjust); + #region [ 可視チップ数カウント ] for (int n = 0; n < 14; n++) { this.n可視チップ数[n] = 0; } foreach (CChip chip in this.listChip) { - int c = chip.nチャンネル番号; + int c = chip.nChannelNo; if ((0x11 <= c) && (c <= 0x14)) { if (c == 0x11 || c == 0x13) this.n可視チップ数.Taiko_Red++; else if (c == 0x12 || c == 0x14) this.n可視チップ数.Taiko_Blue++; } - } + } #endregion #region [ チップの種類を分類し、対応するフラグを立てる ] foreach (CChip chip in this.listChip) { - if ((chip.nチャンネル番号 == 0x01 && this.listWAV.TryGetValue(chip.n整数値_内部番号, out CWAV cwav)) && !cwav.listこのWAVを使用するチャンネル番号の集合.Contains(chip.nチャンネル番号)) { - cwav.listこのWAVを使用するチャンネル番号の集合.Add(chip.nチャンネル番号); + if ((chip.nChannelNo == 0x01 && this.listWAV.TryGetValue(chip.n整数値_内部番号, out CWAV cwav)) && !cwav.listこのWAVを使用するチャンネル番号の集合.Contains(chip.nChannelNo)) { + cwav.listこのWAVを使用するチャンネル番号の集合.Add(chip.nChannelNo); - int c = chip.nチャンネル番号 >> 4; + int c = chip.nChannelNo >> 4; switch (c) { case 0x01: cwav.bIsDrumsSound = true; break; @@ -2094,20 +1658,20 @@ internal class CDTX : CActivity { case 0x09: cwav.bIsSESound = true; break; case 0x00: - if (chip.nチャンネル番号 == 0x01) { + if (chip.nChannelNo == 0x01) { cwav.bIsBGMSound = true; break; } break; } } - } + } #endregion #region[ seNotes計算 ] if (this.listBRANCH.Count != 0) this.tSetSenotes_branch(); else - this.tSetSenotes(); - + this.tSetSenotes(); + #endregion #region [ bLogDTX詳細ログ出力 ] if (OpenTaiko.ConfigIni.bOutputDetailedDTXLog) { @@ -2120,11 +1684,11 @@ internal class CDTX : CActivity { foreach (CChip chip in this.listChip) { Trace.TraceInformation(chip.ToString()); } - } + } #endregion int n整数値管理 = 0; foreach (CChip chip in this.listChip) { - if (chip.nチャンネル番号 != 0x54) + if (chip.nChannelNo != 0x54) chip.n整数値 = n整数値管理; n整数値管理++; } @@ -2134,8 +1698,8 @@ internal class CDTX : CActivity { } private string tコメントを削除する(string input) { - string strOutput = Regex.Replace(input, @" *//.*", ""); //2017.01.28 DD コメント前のスペースも削除するように修正 - + string strOutput = Regex.Replace(input, @" *//.*", ""); //2017.01.28 DD コメント前のスペースも削除するように修正 + return strOutput; } @@ -2144,17 +1708,17 @@ internal class CDTX : CActivity { } private string[] tコマンド行を削除したTJAを返す(string[] input, int nMode) { - var sb = new StringBuilder(); - - // 18/11/11 AioiLight 譜面にSpace、スペース、Tab等が入っているとおかしくなるので修正。 - // 多分コマンドもスペースが抜かれちゃっているが、コマンド行を除く譜面を返すので大丈夫(たぶん)。 + var sb = new StringBuilder(); + + // 18/11/11 AioiLight 譜面にSpace、スペース、Tab等が入っているとおかしくなるので修正。 + // 多分コマンドもスペースが抜かれちゃっているが、コマンド行を除く譜面を返すので大丈夫(たぶん)。 for (int i = 0; i < input.Length; i++) { input[i] = input[i].Trim(); } for (int n = 0; n < input.Length; n++) { if (nMode == 0) { - if (!string.IsNullOrEmpty(input[n]) && NotesManager.FastFlankedParsing(input[n]))//this.CharConvertNote(input[n].Substring(0, 1)) != -1) + if (!string.IsNullOrEmpty(input[n]) && NotesManager.FastFlankedParsing(input[n]))//this.CharConvertNote(input[n].Substring(0, 1)) != -1) { sb.Append(input[n] + "\n"); } @@ -2163,16 +1727,16 @@ internal class CDTX : CActivity { (input[n].Substring(0, 1) == "#" || input[n].StartsWith("EXAM") || NotesManager.FastFlankedParsing(input[n]))) { - if (input[n].StartsWith("BALLOON") || input[n].StartsWith("BPM")) { - //A~Fで始まる命令が削除されない不具合の対策 + if (input[n].StartsWith("BALLOON") || input[n].StartsWith("BPM")) { + //A~Fで始まる命令が削除されない不具合の対策 } else { sb.Append(input[n] + "\n"); } } } else if (nMode == 2) { if (!string.IsNullOrEmpty(input[n]) && NotesManager.FastFlankedParsing(input[n])) { - if (input[n].StartsWith("BALLOON") || input[n].StartsWith("BPM")) { - //A~Fで始まる命令が削除されない不具合の対策 + if (input[n].StartsWith("BALLOON") || input[n].StartsWith("BPM")) { + //A~Fで始まる命令が削除されない不具合の対策 } else { sb.Append(input[n] + "\n"); } @@ -2215,8 +1779,8 @@ internal class CDTX : CActivity { } return sb.ToString(); - } - + } + /// /// /// @@ -2224,8 +1788,8 @@ internal class CDTX : CActivity { /// 1小節内の文字数 private int t1小節の文字数をカウントする(string InputText) { return InputText.Length - 1; - } - + } + /// /// /// @@ -2257,8 +1821,8 @@ internal class CDTX : CActivity { line.n小節番号 = this.n現在の小節数; this.listLine.Add(line); this.n現在の小節数++; - } - + } + /// /// 0:改行文字を削除して、デリミタとしてスペースを入れる。(返り値:string) /// 1:改行文字を削除、さらにSplitして返す(返り値:string[n]) @@ -2293,8 +1857,8 @@ internal class CDTX : CActivity { } return str; - } - + } + /// /// コースごとに譜面を分割する。 /// @@ -2303,14 +1867,14 @@ internal class CDTX : CActivity { private string[] tコースで譜面を分割する(string strTJA) { string[] strCourseTJA = new string[(int)Difficulty.Total]; - if (strTJA.IndexOf("COURSE", 0) != -1) { - //tja内に「COURSE」があればここを使う。 + if (strTJA.IndexOf("COURSE", 0) != -1) { + //tja内に「COURSE」があればここを使う。 string[] strTemp = strTJA.Split(this.dlmtCOURSE, StringSplitOptions.RemoveEmptyEntries); for (int n = 1; n < strTemp.Length; n++) { int nCourse = 0; string nNC = ""; - while (strTemp[n].Substring(0, 1) != "\n") //2017.01.29 DD COURSE単語表記に対応 + while (strTemp[n].Substring(0, 1) != "\n") //2017.01.29 DD COURSE単語表記に対応 { nNC += strTemp[n].Substring(0, 1); strTemp[n] = strTemp[n].Remove(0, 1); @@ -2326,16 +1890,16 @@ internal class CDTX : CActivity { } return strCourseTJA; - } - - // Regexes + } + + // Regexes private static readonly Regex regexForPrefixingCommaStartingLinesWithZero = new Regex(@"^,", RegexOptions.Multiline | RegexOptions.Compiled); private static readonly Regex regexForStrippingHeadingLines = new Regex( @"^(?!(TITLE|LEVEL|BPM|WAVE|OFFSET|BALLOON|EXAM1|EXAM2|EXAM3|EXAM4|EXAM5|EXAM6|EXAM7|DANTICK|DANTICKCOLOR|RENREN22|RENREN23|RENREN32|RENREN33|RENREN42|RENREN43|BALLOONNOR|BALLOONEXP|BALLOONMAS|SONGVOL|SEVOL|SCOREINIT|SCOREDIFF|COURSE|STYLE|TOWERTYPE|GAME|LIFE|DEMOSTART|SIDE|SUBTITLE|SCOREMODE|GENRE|MAKER|SELECTBG|MOVIEOFFSET|BGIMAGE|BGMOVIE|HIDDENBRANCH|GAUGEINCR|LYRICFILE|#HBSCROLL|#BMSCROLL)).+\n", RegexOptions.Multiline | RegexOptions.Compiled); - private int nDifficulty; - + private int nDifficulty; + /// /// 新型。 /// ○未実装 @@ -2346,63 +1910,63 @@ internal class CDTX : CActivity { /// 譜面のデータ private void t入力_V4(string strInput, int difficulty) { nDifficulty = difficulty; - if (!String.IsNullOrEmpty(strInput)) //空なら通さない - { - - //2017.01.31 DD カンマのみの行を0,に置き換え - strInput = regexForPrefixingCommaStartingLinesWithZero.Replace(strInput, "0,"); - - //2017.02.03 DD ヘッダ内にある命令以外の文字列を削除 + if (!String.IsNullOrEmpty(strInput)) //空なら通さない + { + + //2017.01.31 DD カンマのみの行を0,に置き換え + strInput = regexForPrefixingCommaStartingLinesWithZero.Replace(strInput, "0,"); + + //2017.02.03 DD ヘッダ内にある命令以外の文字列を削除 var startIndex = strInput.IndexOf("#START"); if (startIndex < 0) { Trace.TraceWarning($"#START命令が少なくとも1つは必要です。 ({strファイル名の絶対パス})"); } string strInputHeader = strInput.Remove(startIndex); strInput = strInput.Remove(0, startIndex); - strInput = strInputHeader + "\n" + strInput; - - //どうせ使わないので先にSplitしてコメントを削除。 + strInput = strInputHeader + "\n" + strInput; + + //どうせ使わないので先にSplitしてコメントを削除。 var strSplitした譜面 = (string[])this.str改行文字を削除する(strInput, 1); for (int i = 0; strSplitした譜面.Length > i; i++) { int idx = strSplitした譜面[i].IndexOf("//"); if (idx >= 0) strSplitした譜面[i] = strSplitした譜面[i].Substring(0, idx); - } - //空のstring配列を詰める - strSplitした譜面 = this.t空のstring配列を詰めたstring配列を返す(strSplitした譜面); - + } + //空のstring配列を詰める + strSplitした譜面 = this.t空のstring配列を詰めたstring配列を返す(strSplitした譜面); + #region[ヘッダ] - - //2015.05.21 kairera0467 - //ヘッダの読み込みは譜面全体から該当する命令を探す。 - //少し処理が遅くなる可能性はあるが、ここは正確性を重視する。 - //点数などの指定は後から各コースで行うので問題は無いだろう。 - - //SplitしたヘッダのLengthの回数だけ、forで回して各種情報を読み取っていく。 + + //2015.05.21 kairera0467 + //ヘッダの読み込みは譜面全体から該当する命令を探す。 + //少し処理が遅くなる可能性はあるが、ここは正確性を重視する。 + //点数などの指定は後から各コースで行うので問題は無いだろう。 + + //SplitしたヘッダのLengthの回数だけ、forで回して各種情報を読み取っていく。 for (int i = 0; strSplitした譜面.Length > i; i++) { this.t入力_行解析ヘッダ(strSplitした譜面[i]); - } + } #endregion - + #region[譜面] - + int n読み込むコース = 3; - int n譜面数 = 0; //2017.07.22 kairera0467 tjaに含まれる譜面の数 - bool b新処理 = false; - - //まずはコースごとに譜面を分割。 + int n譜面数 = 0; //2017.07.22 kairera0467 tjaに含まれる譜面の数 + bool b新処理 = false; + + //まずはコースごとに譜面を分割。 strSplitした譜面 = this.tコースで譜面を分割する(this.StringArrayToString(strSplitした譜面, "\n")); - string strTest = ""; - //存在するかのフラグ作成。 + string strTest = ""; + //存在するかのフラグ作成。 for (int i = 0; i < strSplitした譜面.Length; i++) { if (!String.IsNullOrEmpty(strSplitした譜面[i])) { this.b譜面が存在する[i] = true; n譜面数++; } else this.b譜面が存在する[i] = false; - } - + } + #region[ 読み込ませるコースを決定 ] if (this.b譜面が存在する[difficulty] == false) { n読み込むコース = difficulty; @@ -2416,27 +1980,27 @@ internal class CDTX : CActivity { break; } } else - n読み込むコース = difficulty; + n読み込むコース = difficulty; #endregion - - //指定したコースの譜面の命令を消去する。 + + //指定したコースの譜面の命令を消去する。 strSplitした譜面[n読み込むコース] = CDTXStyleExtractor.tセッション譜面がある( strSplitした譜面[n読み込むコース], OpenTaiko.ConfigIni.nPlayerCount > 1 ? (this.nPlayerSide + 1) : 0, - this.strファイル名の絶対パス); - - //命令をすべて消去した譜面 + this.strファイル名の絶対パス); + + //命令をすべて消去した譜面 var str命令消去譜面 = strSplitした譜面[n読み込むコース].Split(this.dlmtEnter, StringSplitOptions.RemoveEmptyEntries); - str命令消去譜面 = this.tコマンド行を削除したTJAを返す(str命令消去譜面, 2); - - //ここで1行の文字数をカウント。配列にして返す。 + str命令消去譜面 = this.tコマンド行を削除したTJAを返す(str命令消去譜面, 2); + + //ここで1行の文字数をカウント。配列にして返す。 var strSplit読み込むコース = strSplitした譜面[n読み込むコース].Split(this.dlmtEnter, StringSplitOptions.RemoveEmptyEntries); string str = ""; try { - if (n譜面数 > 0) { - //2017.07.22 kairera0467 譜面が2つ以上ある場合はCOURSE以下のBALLOON命令を使う + if (n譜面数 > 0) { + //2017.07.22 kairera0467 譜面が2つ以上ある場合はCOURSE以下のBALLOON命令を使う this.listBalloon.Clear(); this.listBalloon_Normal.Clear(); this.listBalloon_Expert.Clear(); @@ -2457,7 +2021,7 @@ internal class CDTX : CActivity { this.t1小節の文字数をカウントしてリストに追加する(str + str命令消去譜面[i]); } - if (NotesManager.FastFlankedParsing(str命令消去譜面[i]))//this.CharConvertNote(str命令消去譜面[i].Substring(0, 1)) != -1) + if (NotesManager.FastFlankedParsing(str命令消去譜面[i]))//this.CharConvertNote(str命令消去譜面[i].Substring(0, 1)) != -1) str += str命令消去譜面[i]; } else { this.t1小節の文字数をカウントしてリストに追加する(str + str命令消去譜面[i]); @@ -2467,25 +2031,25 @@ internal class CDTX : CActivity { } catch (Exception ex) { Trace.TraceError(ex.ToString()); Trace.TraceError("例外が発生しましたが処理を継続します。 (9e401212-0b78-4073-88d0-f7e791f36a91)"); - } - - //読み込み部分本体に渡す譜面を作成。 - //0:ヘッダー情報 1:#START以降 となる。個数の定義は後からされるため、ここでは省略。 - var strSplitした後の譜面 = strSplit読み込むコース; //strSplitした譜面[ n読み込むコース ].Split( this.dlmtEnter, StringSplitOptions.RemoveEmptyEntries ); + } + + //読み込み部分本体に渡す譜面を作成。 + //0:ヘッダー情報 1:#START以降 となる。個数の定義は後からされるため、ここでは省略。 + var strSplitした後の譜面 = strSplit読み込むコース; //strSplitした譜面[ n読み込むコース ].Split( this.dlmtEnter, StringSplitOptions.RemoveEmptyEntries ); strSplitした後の譜面 = this.tコマンド行を削除したTJAを返す(strSplitした後の譜面, 1); this.n現在の小節数 = 1; - try { + try { #region[ 最初の処理 ] - //1小節の時間を挿入して開始時間を調節。 - this.dbNowTime += ((15000.0 / 120.0 * (4.0 / 4.0)) * 16.0); + //1小節の時間を挿入して開始時間を調節。 + this.dbNowTime += ((15000.0 / 120.0 * (4.0 / 4.0)) * 16.0); #endregion for (int i = 0; strSplitした後の譜面.Length > i; i++) { nNowReadLine++; str = strSplitした後の譜面[i]; this.t入力_行解析譜面_V4(str); - } - - // Retrieve all the global exams (non individual) at the end + } + + // Retrieve all the global exams (non individual) at the end if (DanSongs.Number > 0) { for (int i = 0; i < CExamInfo.cMaxExam; i++) { if (Dan_C[i] != null && List_DanSongs[0].Dan_C[i] == null) { @@ -2497,25 +2061,25 @@ internal class CDTX : CActivity { } catch (Exception ex) { Trace.TraceError(ex.ToString()); Trace.TraceError("例外が発生しましたが処理を継続します。 (2da1e880-6b63-4e82-b018-bf18c3568335)"); - } + } #endregion } } - private CChip t発声位置から過去方向で一番近くにある指定チャンネルのチップを返す(int n発声時刻, int nチャンネル番号) { - //過去方向への検索 + private CChip t発声位置から過去方向で一番近くにある指定チャンネルのチップを返す(int n発声時刻, int nチャンネル番号) { + //過去方向への検索 for (int i = this.listChip.Count - 1; i >= 0; i--) { - if (this.listChip[i].nチャンネル番号 == nチャンネル番号) { + if (this.listChip[i].nChannelNo == nチャンネル番号) { return this.listChip[i]; } } return null; - } - - //現在、以下のような行には対応できていません。 - //_パラメータを持つ命令がある - //_行の途中に命令がある + } + + //現在、以下のような行には対応できていません。 + //_パラメータを持つ命令がある + //_行の途中に命令がある private int t文字数解析(string InputText) { int n文字数 = 0; @@ -2549,58 +2113,58 @@ internal class CDTX : CActivity { var result = new List(); var workingIndex = 0; for (int i = 0; i < input.Length; i++) { - if (input[i].Equals(',')) // カンマにぶち当たった + if (input[i].Equals(',')) // カンマにぶち当たった { - if (i - 1 >= 0)// &&演算子でも、例外が起きるので... + if (i - 1 >= 0)// &&演算子でも、例外が起きるので... { - if (input[i - 1].Equals('\\')) // 1文字前がバックスラッシュ + if (input[i - 1].Equals('\\')) // 1文字前がバックスラッシュ { input = input.Remove(i - 1, 1); - } else { - // workingIndexから今の位置までをリストにブチ込む - result.Add(input.Substring(workingIndex, i - workingIndex)); - // workingIndexに今の位置+1を代入 + } else { + // workingIndexから今の位置までをリストにブチ込む + result.Add(input.Substring(workingIndex, i - workingIndex)); + // workingIndexに今の位置+1を代入 workingIndex = i + 1; } - } else { - // workingIndexから今の位置までをリストにブチ込む - result.Add(input.Substring(workingIndex, i - workingIndex)); - // workingIndexに今の位置+1を代入 + } else { + // workingIndexから今の位置までをリストにブチ込む + result.Add(input.Substring(workingIndex, i - workingIndex)); + // workingIndexに今の位置+1を代入 workingIndex = i + 1; } } - if (i + 1 == input.Length) // 最後に + if (i + 1 == input.Length) // 最後に { result.Add(input.Substring(workingIndex, input.Length - workingIndex)); } } return result.ToArray(); - } - + } + /// /// 譜面読み込みメソッドV4で使用。 /// /// - private void t命令を挿入する(string InputText) { + private void t命令を挿入する(string InputText) { #region [Split comma and arguments values] - + string[] SplitComma(string input) { var result = new List(); var workingIndex = 0; for (int i = 0; i < input.Length; i++) { - if (input[i] == ',') // カンマにぶち当たった + if (input[i] == ',') // カンマにぶち当たった { - if (input[i - 1] == '\\') // 1文字前がバックスラッシュ + if (input[i - 1] == '\\') // 1文字前がバックスラッシュ { input = input.Remove(i - 1, 1); - } else { - // workingIndexから今の位置までをリストにブチ込む - result.Add(input.Substring(workingIndex, i - workingIndex)); - // workingIndexに今の位置+1を代入 + } else { + // workingIndexから今の位置までをリストにブチ込む + result.Add(input.Substring(workingIndex, i - workingIndex)); + // workingIndexに今の位置+1を代入 workingIndex = i + 1; } } - if (i + 1 == input.Length) // 最後に + if (i + 1 == input.Length) // 最後に { result.Add(input.Substring(workingIndex, input.Length - workingIndex)); } @@ -2618,7 +2182,7 @@ internal class CDTX : CActivity { var argumentMatchGroup = match.Groups[2]; var argument = argumentMatchGroup.Success ? argumentMatchGroup.Value : null; - while (true) {//命令の最後に,が残ってしまっているときの対応 + while (true) {//命令の最後に,が残ってしまっているときの対応 if (argument != null && argument[argument.Length - 1] == ',') argument = argument.Substring(0, argument.Length - 1); else @@ -2626,29 +2190,29 @@ internal class CDTX : CActivity { } char[] chDelimiter = new char[] { ' ' }; - string[] strArray = null; - + string[] strArray = null; + #endregion - - if (command == "#START") { - //#STARTと同時に鳴らすのはどうかと思うけどしゃーなしだな。 - AddMusicPreTimeMs(); // 音源を鳴らす前に遅延。 + + if (command == "#START") { + //#STARTと同時に鳴らすのはどうかと思うけどしゃーなしだな。 + AddMusicPreTimeMs(); // 音源を鳴らす前に遅延。 var chip = new CChip(); - chip.nチャンネル番号 = 0x01; + chip.nChannelNo = 0x01; chip.n発声位置 = 384; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.fBMSCROLLTime = this.dbNowBMScollTime; chip.n整数値 = 0x01; - chip.n整数値_内部番号 = 1; - - // チップを配置。 + chip.n整数値_内部番号 = 1; + + // チップを配置。 this.listChip.Add(chip); var chip1 = new CChip(); - chip1.nチャンネル番号 = 0x54; + chip1.nChannelNo = 0x54; if (this.nMOVIEOFFSET == 0) chip1.n発声時刻ms = (int)this.dbNowTime; else @@ -2658,24 +2222,24 @@ internal class CDTX : CActivity { chip1.fNow_Measure_s = this.fNow_Measure_s; chip1.dbSCROLL = this.dbNowScroll; chip1.n整数値 = 0x01; - chip1.n整数値_内部番号 = 1; - - // チップを配置。 - + chip1.n整数値_内部番号 = 1; + + // チップを配置。 + this.listChip.Add(chip1); - } else if (command == "#END") { - //ためしに割り込む。 + } else if (command == "#END") { + //ためしに割り込む。 var chip = new CChip(); - chip.nチャンネル番号 = 0xFF; + chip.nChannelNo = 0xFF; chip.n発声位置 = ((this.n現在の小節数 + 2) * 384); - chip.n発声時刻ms = (int)(this.dbNowTime + 1000); //2016.07.16 kairera0467 終了時から1秒後に設置するよう変更。 + chip.n発声時刻ms = (int)(this.dbNowTime + 1000); //2016.07.16 kairera0467 終了時から1秒後に設置するよう変更。 chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値 = 0xFF; - chip.n整数値_内部番号 = 1; - // チップを配置。 - + chip.n整数値_内部番号 = 1; + // チップを配置。 + if (n参照中の難易度 == (int)Difficulty.Dan) { for (int i = listChip.Count - 1; i >= 0; i--) { if (NotesManager.IsHittableNote(listChip[i])) { @@ -2703,27 +2267,27 @@ internal class CDTX : CActivity { MinBPM = dbBPM; } - this.listBPM.Add(this.n内部番号BPM1to - 1, new CBPM() { n内部番号 = this.n内部番号BPM1to - 1, n表記上の番号 = 0, dbBPM値 = dbBPM, bpm_change_time = this.dbNowTime - nNextSongOffset, bpm_change_bmscroll_time = this.dbNowBMScollTime, bpm_change_course = this.n現在のコース }); - - - //チップ追加して割り込んでみる。 + this.listBPM.Add(this.n内部番号BPM1to - 1, new CBPM() { n内部番号 = this.n内部番号BPM1to - 1, n表記上の番号 = 0, dbBPM値 = dbBPM, bpm_change_time = this.dbNowTime - nNextSongOffset, bpm_change_bmscroll_time = this.dbNowBMScollTime, bpm_change_course = this.n現在のコース }); + + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x08; + chip.nChannelNo = 0x08; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.fBMSCROLLTime = (float)this.dbNowBMScollTime; chip.dbBPM = dbBPM; - chip.n整数値_内部番号 = this.n内部番号BPM1to - 1; - - // チップを配置。 - + chip.n整数値_内部番号 = this.n内部番号BPM1to - 1; + + // チップを配置。 + this.listChip.Add(chip); var chip1 = new CChip(); - chip1.nチャンネル番号 = 0x9C; + chip1.nChannelNo = 0x9C; chip1.n発声位置 = ((this.n現在の小節数) * 384); chip1.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; @@ -2731,18 +2295,18 @@ internal class CDTX : CActivity { chip1.fBMSCROLLTime = (float)this.dbNowBMScollTime; chip1.dbBPM = dbBPM; chip1.dbSCROLL = this.dbNowScroll; - chip1.n整数値_内部番号 = this.n内部番号BPM1to - 1; - - // チップを配置。 - + chip1.n整数値_内部番号 = this.n内部番号BPM1to - 1; + + // チップを配置。 + this.listChip.Add(chip1); this.n内部番号BPM1to++; - } else if (command == "#SCROLL") { - //2016.08.13 kairera0467 複素数スクロールもどきのテスト - if (argument.IndexOf('i') != -1) { - //iが入っていた場合、複素数スクロールとみなす。 - + } else if (command == "#SCROLL") { + //2016.08.13 kairera0467 複素数スクロールもどきのテスト + if (argument.IndexOf('i') != -1) { + //iが入っていた場合、複素数スクロールとみなす。 + double[] dbComplexNum = new double[2]; try { this.tParsedComplexNumber(argument, ref dbComplexNum); @@ -2774,12 +2338,12 @@ internal class CDTX : CActivity { this.dbNowSCROLL_Normal[0] = dbComplexNum[0]; this.dbNowSCROLL_Normal[1] = dbComplexNum[1]; break; - } - - //チップ追加して割り込んでみる。 + } + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x9D; + chip.nChannelNo = 0x9D; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; @@ -2787,10 +2351,10 @@ internal class CDTX : CActivity { chip.n整数値_内部番号 = this.n内部番号SCROLL1to; chip.dbSCROLL = dbComplexNum[0]; chip.dbSCROLL_Y = dbComplexNum[1]; - chip.nコース = this.n現在のコース; - - // チップを配置。 - + chip.nBranch = this.n現在のコース; + + // チップを配置。 + this.listChip.Add(chip); } else { double dbSCROLL = 1.0; @@ -2814,12 +2378,12 @@ internal class CDTX : CActivity { case ECourse.eMaster: this.dbNowSCROLL_Master[0] = dbSCROLL; break; - } - - //チップ追加して割り込んでみる。 + } + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x9D; + chip.nChannelNo = 0x9D; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; @@ -2827,10 +2391,10 @@ internal class CDTX : CActivity { chip.n整数値_内部番号 = this.n内部番号SCROLL1to; chip.dbSCROLL = dbSCROLL; chip.dbSCROLL_Y = 0.0; - chip.nコース = this.n現在のコース; - - // チップを配置。 - + chip.nBranch = this.n現在のコース; + + // チップを配置。 + this.listChip.Add(chip); } this.n内部番号SCROLL1to++; @@ -2853,16 +2417,16 @@ internal class CDTX : CActivity { var chip = new CChip(); - chip.nチャンネル番号 = 0x02; + chip.nChannelNo = 0x02; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.dbSCROLL = this.dbNowScroll; chip.db実数値 = db小節長倍率; - chip.n整数値_内部番号 = 1; - // チップを配置。 - + chip.n整数値_内部番号 = 1; + // チップを配置。 + this.listChip.Add(chip); } else if (command == "#DELAY") { double nDELAY = 0; @@ -2872,20 +2436,20 @@ internal class CDTX : CActivity { } nDELAY *= 1000; - this.listDELAY.Add(this.n内部番号DELAY1to, new CDELAY() { n内部番号 = this.n内部番号DELAY1to, n表記上の番号 = 0, nDELAY値 = (int)nDELAY, delay_bmscroll_time = this.dbLastBMScrollTime, delay_bpm = this.dbNowBPM, delay_course = this.n現在のコース, delay_time = this.dbLastTime }); - //チップ追加して割り込んでみる。 + this.listDELAY.Add(this.n内部番号DELAY1to, new CDELAY() { n内部番号 = this.n内部番号DELAY1to, n表記上の番号 = 0, nDELAY値 = (int)nDELAY, delay_bmscroll_time = this.dbLastBMScrollTime, delay_bpm = this.dbNowBPM, delay_course = this.n現在のコース, delay_time = this.dbLastTime }); + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0xDC; + chip.nChannelNo = 0xDC; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.db発声時刻ms = this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; - chip.nコース = this.n現在のコース; + chip.nBranch = this.n現在のコース; chip.n整数値_内部番号 = this.n内部番号DELAY1to; - chip.fBMSCROLLTime = this.dbNowBMScollTime; - // チップを配置。 - + chip.fBMSCROLLTime = this.dbNowBMScollTime; + // チップを配置。 + this.dbNowTime += nDELAY; this.dbNowBMScollTime += nDELAY * this.dbNowBPM / 15000; @@ -2894,30 +2458,30 @@ internal class CDTX : CActivity { } else if (command == "#GOGOSTART") { var chip = new CChip(); - chip.nチャンネル番号 = 0x9E; + chip.nChannelNo = 0x9E; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 1; - this.bGOGOTIME = true; - - // チップを配置。 + this.bGOGOTIME = true; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#GOGOEND") { var chip = new CChip(); - chip.nチャンネル番号 = 0x9F; + chip.nChannelNo = 0x9F; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.dbBPM = this.dbNowBPM; chip.n整数値_内部番号 = 1; - this.bGOGOTIME = false; - - // チップを配置。 + this.bGOGOTIME = false; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#BGAON") { try { @@ -2927,7 +2491,7 @@ internal class CDTX : CActivity { int index = (10 * int.Parse(listvdIndex[0].ToString())) + int.Parse(listvdIndex[1].ToString()) + 2; var chip = new CChip(); - chip.nチャンネル番号 = 0x54; + chip.nChannelNo = 0x54; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -2936,9 +2500,9 @@ internal class CDTX : CActivity { chip.n整数値_内部番号 = index; chip.n整数値 = index; - chip.VideoStartTimeMs = (int)(float.Parse(bgaStartTime) * 1000); - - // チップを配置。 + chip.VideoStartTimeMs = (int)(float.Parse(bgaStartTime) * 1000); + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -2946,24 +2510,24 @@ internal class CDTX : CActivity { } else if (command == "#BGAOFF") { int index = (10 * int.Parse(argument[0].ToString())) + int.Parse(argument[1].ToString()) + 2; var chip = new CChip(); - chip.nチャンネル番号 = 0x55; + chip.nChannelNo = 0x55; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = index; - chip.n整数値 = index; - - // チップを配置。 + chip.n整数値 = index; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#CAMVMOVESTART") { - if (currentCamVMoveChip == null) { - //starts vertical camera moving - //arguments: ,,, + if (currentCamVMoveChip == null) { + //starts vertical camera moving + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xA0; + chip.nChannelNo = 0xA0; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3005,9 +2569,9 @@ internal class CDTX : CActivity { chip.fCamMoveType = eType; - currentCamVMoveChip = chip; - - // チップを配置。 + currentCamVMoveChip = chip; + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -3017,11 +2581,11 @@ internal class CDTX : CActivity { Trace.TraceInformation("TJA ERROR: Missing #CAMVMOVEEND"); } } else if (command == "#CAMVMOVEEND") { - if (currentCamVMoveChip != null) { - //ends vertical camera moving + if (currentCamVMoveChip != null) { + //ends vertical camera moving var chip = new CChip(); - chip.nチャンネル番号 = 0xA1; + chip.nChannelNo = 0xA1; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3035,21 +2599,21 @@ internal class CDTX : CActivity { currentCamVMoveChip.fCamTimeMs = msDiff; this.listChip[index] = currentCamVMoveChip; - currentCamVMoveChip = null; - - // チップを配置。 + currentCamVMoveChip = null; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMVMOVESTART"); Trace.TraceInformation("TJA ERROR: Missing #CAMVMOVESTART"); } } else if (command == "#CAMHMOVESTART") { - if (currentCamHMoveChip == null) { - //starts horizontal camera moving - //arguments: ,,, + if (currentCamHMoveChip == null) { + //starts horizontal camera moving + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xA2; + chip.nChannelNo = 0xA2; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3093,9 +2657,9 @@ internal class CDTX : CActivity { chip.fCamMoveType = eType; - currentCamHMoveChip = chip; - - // チップを配置。 + currentCamHMoveChip = chip; + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -3105,11 +2669,11 @@ internal class CDTX : CActivity { Trace.TraceInformation("TJA ERROR: Missing #CAMHMOVEEND"); } } else if (command == "#CAMHMOVEEND") { - if (currentCamHMoveChip != null) { - //ends horizontal camera moving + if (currentCamHMoveChip != null) { + //ends horizontal camera moving var chip = new CChip(); - chip.nチャンネル番号 = 0xA3; + chip.nChannelNo = 0xA3; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3123,21 +2687,21 @@ internal class CDTX : CActivity { currentCamHMoveChip.fCamTimeMs = msDiff; this.listChip[index] = currentCamHMoveChip; - currentCamHMoveChip = null; - - // チップを配置。 + currentCamHMoveChip = null; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMHMOVESTART"); Trace.TraceInformation("TJA ERROR: Missing #CAMHMOVESTART"); } } else if (command == "#CAMZOOMSTART") { - if (currentCamZoomChip == null) { - //starts zooming in/out the screen - //arguments: ,,, + if (currentCamZoomChip == null) { + //starts zooming in/out the screen + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xA4; + chip.nChannelNo = 0xA4; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3179,9 +2743,9 @@ internal class CDTX : CActivity { chip.fCamMoveType = eType; - currentCamZoomChip = chip; - - // チップを配置。 + currentCamZoomChip = chip; + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -3191,11 +2755,11 @@ internal class CDTX : CActivity { Trace.TraceInformation("TJA ERROR: Missing #CAMZOOMEND"); } } else if (command == "#CAMZOOMEND") { - if (currentCamZoomChip != null) { - //stops zooming + if (currentCamZoomChip != null) { + //stops zooming var chip = new CChip(); - chip.nチャンネル番号 = 0xA5; + chip.nChannelNo = 0xA5; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3209,21 +2773,21 @@ internal class CDTX : CActivity { currentCamZoomChip.fCamTimeMs = msDiff; this.listChip[index] = currentCamZoomChip; - currentCamZoomChip = null; - - // チップを配置。 + currentCamZoomChip = null; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMZOOMSTART"); Trace.TraceInformation("TJA ERROR: Missing #CAMZOOMSTART"); } } else if (command == "#CAMROTATIONSTART") { - if (currentCamRotateChip == null) { - //starts rotating the screen - //arguments: ,,, + if (currentCamRotateChip == null) { + //starts rotating the screen + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xA6; + chip.nChannelNo = 0xA6; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3267,9 +2831,9 @@ internal class CDTX : CActivity { chip.fCamMoveType = eType; - currentCamRotateChip = chip; - - // チップを配置。 + currentCamRotateChip = chip; + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -3279,11 +2843,11 @@ internal class CDTX : CActivity { Trace.TraceInformation("TJA ERROR: Missing #CAMROTATIONEND"); } } else if (command == "#CAMROTATIONEND") { - if (currentCamRotateChip != null) { - //stops screen rotation + if (currentCamRotateChip != null) { + //stops screen rotation var chip = new CChip(); - chip.nチャンネル番号 = 0xA7; + chip.nChannelNo = 0xA7; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3297,21 +2861,21 @@ internal class CDTX : CActivity { currentCamRotateChip.fCamTimeMs = msDiff; this.listChip[index] = currentCamRotateChip; - currentCamRotateChip = null; - - // チップを配置。 + currentCamRotateChip = null; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMROTATIONSTART"); Trace.TraceInformation("TJA ERROR: Missing #CAMROTATIONSTART"); } } else if (command == "#CAMVSCALESTART") { - if (currentCamVScaleChip == null) { - //starts vertical camera scale changing - //arguments: ,,, + if (currentCamVScaleChip == null) { + //starts vertical camera scale changing + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xA8; + chip.nChannelNo = 0xA8; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3355,9 +2919,9 @@ internal class CDTX : CActivity { chip.fCamMoveType = eType; - currentCamVScaleChip = chip; - - // チップを配置。 + currentCamVScaleChip = chip; + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -3367,11 +2931,11 @@ internal class CDTX : CActivity { Trace.TraceInformation("TJA ERROR: Missing #CAMVSCALEEND"); } } else if (command == "#CAMVSCALEEND") { - if (currentCamVScaleChip != null) { - //ends vertical camera scaling + if (currentCamVScaleChip != null) { + //ends vertical camera scaling var chip = new CChip(); - chip.nチャンネル番号 = 0xA9; + chip.nChannelNo = 0xA9; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3385,21 +2949,21 @@ internal class CDTX : CActivity { currentCamVScaleChip.fCamTimeMs = msDiff; this.listChip[index] = currentCamVScaleChip; - currentCamVScaleChip = null; - - // チップを配置。 + currentCamVScaleChip = null; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMVSCALESTART"); Trace.TraceInformation("TJA ERROR: Missing #CAMVSCALESTART"); } } else if (command == "#CAMHSCALESTART") { - if (currentCamHScaleChip == null) { - //starts horizontal camera scale changing - //arguments: ,,, + if (currentCamHScaleChip == null) { + //starts horizontal camera scale changing + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xB0; + chip.nChannelNo = 0xB0; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3443,9 +3007,9 @@ internal class CDTX : CActivity { chip.fCamMoveType = eType; - currentCamHScaleChip = chip; - - // チップを配置。 + currentCamHScaleChip = chip; + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -3455,11 +3019,11 @@ internal class CDTX : CActivity { Trace.TraceInformation("TJA ERROR: Missing #CAMHSCALEEND"); } } else if (command == "#CAMHSCALEEND") { - if (currentCamHScaleChip != null) { - //ends horizontal camera scaling + if (currentCamHScaleChip != null) { + //ends horizontal camera scaling var chip = new CChip(); - chip.nチャンネル番号 = 0xB1; + chip.nChannelNo = 0xB1; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3473,20 +3037,20 @@ internal class CDTX : CActivity { currentCamHScaleChip.fCamTimeMs = msDiff; this.listChip[index] = currentCamHScaleChip; - currentCamHScaleChip = null; - - // チップを配置。 + currentCamHScaleChip = null; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMHSCALESTART"); Trace.TraceInformation("TJA ERROR: Missing #CAMHSCALESTART"); } - } else if (command == "#BORDERCOLOR") { - //sets border color - //arguments: ,, + } else if (command == "#BORDERCOLOR") { + //sets border color + //arguments: ,, var chip = new CChip(); - chip.nチャンネル番号 = 0xB2; + chip.nChannelNo = 0xB2; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3495,17 +3059,17 @@ internal class CDTX : CActivity { chip.n整数値_内部番号 = 1; string[] args = argument.Split(','); - chip.borderColor = new Color4(1f, float.Parse(args[0]) / 255, float.Parse(args[1]) / 255, float.Parse(args[2]) / 255); - - // チップを配置。 + chip.borderColor = new Color4(1f, float.Parse(args[0]) / 255, float.Parse(args[1]) / 255, float.Parse(args[2]) / 255); + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#CAMHOFFSET") { - if (currentCamHMoveChip == null) { - //sets camera x offset - //argument: + if (currentCamHMoveChip == null) { + //sets camera x offset + //argument: var chip = new CChip(); - chip.nチャンネル番号 = 0xB3; + chip.nChannelNo = 0xB3; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3519,21 +3083,21 @@ internal class CDTX : CActivity { } else { AddError(command, argument); } - chip.strCamEaseType = "IN_OUT"; - - // チップを配置。 + chip.strCamEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMHMOVEEND"); Trace.TraceInformation("TJA ERROR: Missing #CAMHMOVEEND"); } } else if (command == "#CAMVOFFSET") { - if (currentCamVMoveChip == null) { - //sets camera y offset - //argument: + if (currentCamVMoveChip == null) { + //sets camera y offset + //argument: var chip = new CChip(); - chip.nチャンネル番号 = 0xB4; + chip.nChannelNo = 0xB4; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3547,21 +3111,21 @@ internal class CDTX : CActivity { } else { AddError(command, argument); } - chip.strCamEaseType = "IN_OUT"; - - // チップを配置。 + chip.strCamEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMVMOVEEND"); Trace.TraceInformation("TJA ERROR: Missing #CAMVMOVEEND"); } } else if (command == "#CAMZOOM") { - if (currentCamZoomChip == null) { - //sets camera zoom factor - //argument: + if (currentCamZoomChip == null) { + //sets camera zoom factor + //argument: var chip = new CChip(); - chip.nチャンネル番号 = 0xB5; + chip.nChannelNo = 0xB5; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3575,21 +3139,21 @@ internal class CDTX : CActivity { } else { AddError(command, argument); } - chip.strCamEaseType = "IN_OUT"; - - // チップを配置。 + chip.strCamEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMZOOMEND"); Trace.TraceInformation("TJA ERROR: Missing #CAMZOOMEND"); } } else if (command == "#CAMROTATION") { - if (currentCamRotateChip == null) { - //sets camera rotation - //argument: + if (currentCamRotateChip == null) { + //sets camera rotation + //argument: var chip = new CChip(); - chip.nチャンネル番号 = 0xB6; + chip.nChannelNo = 0xB6; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3603,21 +3167,21 @@ internal class CDTX : CActivity { } else { AddError(command, argument); } - chip.strCamEaseType = "IN_OUT"; - - // チップを配置。 + chip.strCamEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMROTATIONEND"); Trace.TraceInformation("TJA ERROR: Missing #CAMROTATIONEND"); } } else if (command == "#CAMHSCALE") { - if (currentCamHScaleChip == null) { - //sets camera x scale - //argument: + if (currentCamHScaleChip == null) { + //sets camera x scale + //argument: var chip = new CChip(); - chip.nチャンネル番号 = 0xB7; + chip.nChannelNo = 0xB7; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3631,21 +3195,21 @@ internal class CDTX : CActivity { } else { AddError(command, argument); } - chip.strCamEaseType = "IN_OUT"; - - // チップを配置。 + chip.strCamEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMHSCALEEND"); Trace.TraceInformation("TJA ERROR: Missing #CAMHSCALEEND"); } } else if (command == "#CAMVSCALE") { - if (currentCamVScaleChip == null) { - //sets camera y scale - //argument: + if (currentCamVScaleChip == null) { + //sets camera y scale + //argument: var chip = new CChip(); - chip.nチャンネル番号 = 0xB8; + chip.nChannelNo = 0xB8; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3659,19 +3223,19 @@ internal class CDTX : CActivity { } else { AddError(command, argument); } - chip.strCamEaseType = "IN_OUT"; - - // チップを配置。 + chip.strCamEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #CAMVSCALEEND"); Trace.TraceInformation("TJA ERROR: Missing #CAMVSCALEEND"); } - } else if (command == "#CAMRESET") { - //resets camera properties + } else if (command == "#CAMRESET") { + //resets camera properties var chip = new CChip(); - chip.nチャンネル番号 = 0xB9; + chip.nChannelNo = 0xB9; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3694,43 +3258,43 @@ internal class CDTX : CActivity { chip.fCamScaleStartY = 1.0f; chip.fCamScaleEndY = 1.0f; - chip.strCamEaseType = "IN_OUT"; - - // チップを配置。 + chip.strCamEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); - } else if (command == "#ENABLEDORON") { - //resets camera properties + } else if (command == "#ENABLEDORON") { + //resets camera properties var chip = new CChip(); - chip.nチャンネル番号 = 0xBA; + chip.nChannelNo = 0xBA; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; - chip.n整数値_内部番号 = 1; - - // チップを配置。 + chip.n整数値_内部番号 = 1; + + // チップを配置。 this.listChip.Add(chip); - } else if (command == "#DISABLEDORON") { - //resets camera properties + } else if (command == "#DISABLEDORON") { + //resets camera properties var chip = new CChip(); - chip.nチャンネル番号 = 0xBB; + chip.nChannelNo = 0xBB; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; - chip.n整数値_内部番号 = 1; - - // チップを配置。 + chip.n整数値_内部番号 = 1; + + // チップを配置。 this.listChip.Add(chip); - } else if (command == "#ADDOBJECT") { - //adds object + } else if (command == "#ADDOBJECT") { + //adds object var chip = new CChip(); - chip.nチャンネル番号 = 0xBC; + chip.nChannelNo = 0xBC; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3749,18 +3313,18 @@ internal class CDTX : CActivity { if (this.bSession譜面を読み込む) { var obj = new CSongObject(chip.strObjName, chip.fObjX, chip.fObjY, txPath); this.listObj.Add(args[0], obj); - } - - // チップを配置。 + } + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); } - } else if (command == "#REMOVEOBJECT") { - //removes object + } else if (command == "#REMOVEOBJECT") { + //removes object var chip = new CChip(); - chip.nチャンネル番号 = 0xBD; + chip.nChannelNo = 0xBD; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3768,9 +3332,9 @@ internal class CDTX : CActivity { chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 1; - chip.strObjName = argument; - - // チップを配置。 + chip.strObjName = argument; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#OBJVMOVESTART") { string[] args = argument.Split(','); @@ -3778,12 +3342,12 @@ internal class CDTX : CActivity { try { string name = args[0]; - if (!currentObjAnimations.ContainsKey("vmove_" + name)) { - //starts vertical object movement - //arguments: ,,, + if (!currentObjAnimations.ContainsKey("vmove_" + name)) { + //starts vertical object movement + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xBE; + chip.nChannelNo = 0xBE; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3826,9 +3390,9 @@ internal class CDTX : CActivity { chip.objCalcType = eType; - currentObjAnimations.Add("vmove_" + name, chip); - - // チップを配置。 + currentObjAnimations.Add("vmove_" + name, chip); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJVMOVEEND"); @@ -3840,11 +3404,11 @@ internal class CDTX : CActivity { } else if (command == "#OBJVMOVEEND") { string name = argument; - if (currentObjAnimations.ContainsKey("vmove_" + name)) { - //ends vertical camera moving + if (currentObjAnimations.ContainsKey("vmove_" + name)) { + //ends vertical camera moving var chip = new CChip(); - chip.nチャンネル番号 = 0xBF; + chip.nChannelNo = 0xBF; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3861,9 +3425,9 @@ internal class CDTX : CActivity { startChip.fObjTimeMs = msDiff; this.listChip[index] = startChip; - currentObjAnimations.Remove("vmove_" + name); - - // チップを配置。 + currentObjAnimations.Remove("vmove_" + name); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJVMOVESTART"); @@ -3874,12 +3438,12 @@ internal class CDTX : CActivity { try { string name = args[0]; - if (!currentObjAnimations.ContainsKey("hmove_" + name)) { - //starts horizontal object movement - //arguments: ,,, + if (!currentObjAnimations.ContainsKey("hmove_" + name)) { + //starts horizontal object movement + //arguments: ,,, var chip = new CChip(); - chip.nチャンネル番号 = 0xC0; + chip.nChannelNo = 0xC0; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3922,9 +3486,9 @@ internal class CDTX : CActivity { chip.objCalcType = eType; - currentObjAnimations.Add("hmove_" + name, chip); - - // チップを配置。 + currentObjAnimations.Add("hmove_" + name, chip); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJHMOVEEND"); @@ -3936,11 +3500,11 @@ internal class CDTX : CActivity { } else if (command == "#OBJHMOVEEND") { string name = argument; - if (currentObjAnimations.ContainsKey("hmove_" + name)) { - //ends horizontal camera moving + if (currentObjAnimations.ContainsKey("hmove_" + name)) { + //ends horizontal camera moving var chip = new CChip(); - chip.nチャンネル番号 = 0xC1; + chip.nChannelNo = 0xC1; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -3957,9 +3521,9 @@ internal class CDTX : CActivity { startChip.fObjTimeMs = msDiff; this.listChip[index] = startChip; - currentObjAnimations.Remove("hmove_" + name); - - // チップを配置。 + currentObjAnimations.Remove("hmove_" + name); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJHMOVESTART"); @@ -3973,7 +3537,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("vscale_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC2; + chip.nChannelNo = 0xC2; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4016,9 +3580,9 @@ internal class CDTX : CActivity { chip.objCalcType = eType; - currentObjAnimations.Add("vscale_" + name, chip); - - // チップを配置。 + currentObjAnimations.Add("vscale_" + name, chip); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJVSCALEEND"); @@ -4033,7 +3597,7 @@ internal class CDTX : CActivity { if (currentObjAnimations.ContainsKey("vscale_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC3; + chip.nChannelNo = 0xC3; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4050,9 +3614,9 @@ internal class CDTX : CActivity { startChip.fObjTimeMs = msDiff; this.listChip[index] = startChip; - currentObjAnimations.Remove("vscale_" + name); - - // チップを配置。 + currentObjAnimations.Remove("vscale_" + name); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJVSCALESTART"); @@ -4066,7 +3630,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("hscale_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC4; + chip.nChannelNo = 0xC4; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4107,9 +3671,9 @@ internal class CDTX : CActivity { chip.objCalcType = eType; - currentObjAnimations.Add("hscale_" + name, chip); - - // チップを配置。 + currentObjAnimations.Add("hscale_" + name, chip); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJHSCALEEND"); @@ -4124,7 +3688,7 @@ internal class CDTX : CActivity { if (currentObjAnimations.ContainsKey("hscale_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC5; + chip.nChannelNo = 0xC5; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4141,9 +3705,9 @@ internal class CDTX : CActivity { startChip.fObjTimeMs = msDiff; this.listChip[index] = startChip; - currentObjAnimations.Remove("hscale_" + name); - - // チップを配置。 + currentObjAnimations.Remove("hscale_" + name); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJHSCALESTART"); @@ -4157,7 +3721,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("rotation_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC6; + chip.nChannelNo = 0xC6; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4200,9 +3764,9 @@ internal class CDTX : CActivity { chip.objCalcType = eType; - currentObjAnimations.Add("rotation_" + name, chip); - - // チップを配置。 + currentObjAnimations.Add("rotation_" + name, chip); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJROTATIONEND"); @@ -4217,7 +3781,7 @@ internal class CDTX : CActivity { if (currentObjAnimations.ContainsKey("rotation_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC7; + chip.nChannelNo = 0xC7; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4234,9 +3798,9 @@ internal class CDTX : CActivity { startChip.fObjTimeMs = msDiff; this.listChip[index] = startChip; - currentObjAnimations.Remove("rotation_" + name); - - // チップを配置。 + currentObjAnimations.Remove("rotation_" + name); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJROTATIONSTART"); @@ -4250,7 +3814,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("opacity_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC8; + chip.nChannelNo = 0xC8; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4291,9 +3855,9 @@ internal class CDTX : CActivity { chip.objCalcType = eType; - currentObjAnimations.Add("opacity_" + name, chip); - - // チップを配置。 + currentObjAnimations.Add("opacity_" + name, chip); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJOPACITYEND"); @@ -4308,7 +3872,7 @@ internal class CDTX : CActivity { if (currentObjAnimations.ContainsKey("opacity_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xC9; + chip.nChannelNo = 0xC9; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4325,9 +3889,9 @@ internal class CDTX : CActivity { startChip.fObjTimeMs = msDiff; this.listChip[index] = startChip; - currentObjAnimations.Remove("opacity_" + name); - - // チップを配置。 + currentObjAnimations.Remove("opacity_" + name); + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJOPACITYSTART"); @@ -4336,7 +3900,7 @@ internal class CDTX : CActivity { } else if (command == "#OBJCOLOR") { var chip = new CChip(); - chip.nチャンネル番号 = 0xCA; + chip.nChannelNo = 0xCA; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4347,9 +3911,9 @@ internal class CDTX : CActivity { try { string[] args = argument.Split(','); chip.strObjName = args[0]; - chip.borderColor = new Color4(1f, float.Parse(args[1]) / 255, float.Parse(args[2]) / 255, float.Parse(args[3]) / 255); - - // チップを配置。 + chip.borderColor = new Color4(1f, float.Parse(args[1]) / 255, float.Parse(args[2]) / 255, float.Parse(args[3]) / 255); + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -4362,7 +3926,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("vmove_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xCB; + chip.nChannelNo = 0xCB; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4373,9 +3937,9 @@ internal class CDTX : CActivity { chip.strObjName = args[0]; chip.fObjStart = float.Parse(args[1]); chip.fObjEnd = float.Parse(args[1]); - chip.strObjEaseType = "IN_OUT"; - - // チップを配置。 + chip.strObjEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJVMOVEEND"); @@ -4392,7 +3956,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("hmove_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xCC; + chip.nChannelNo = 0xCC; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4403,9 +3967,9 @@ internal class CDTX : CActivity { chip.strObjName = args[0]; chip.fObjStart = float.Parse(args[1]); chip.fObjEnd = float.Parse(args[1]); - chip.strObjEaseType = "IN_OUT"; - - // チップを配置。 + chip.strObjEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJHMOVEEND"); @@ -4422,7 +3986,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("vscale_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xCD; + chip.nChannelNo = 0xCD; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4433,9 +3997,9 @@ internal class CDTX : CActivity { chip.strObjName = args[0]; chip.fObjStart = float.Parse(args[1]); chip.fObjEnd = float.Parse(args[1]); - chip.strObjEaseType = "IN_OUT"; - - // チップを配置。 + chip.strObjEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJVSCALEEND"); @@ -4452,7 +4016,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("hscale_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xCE; + chip.nChannelNo = 0xCE; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4463,9 +4027,9 @@ internal class CDTX : CActivity { chip.strObjName = args[0]; chip.fObjStart = float.Parse(args[1]); chip.fObjEnd = float.Parse(args[1]); - chip.strObjEaseType = "IN_OUT"; - - // チップを配置。 + chip.strObjEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJHSCALEEND"); @@ -4482,7 +4046,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("rotation_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xCF; + chip.nChannelNo = 0xCF; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4493,9 +4057,9 @@ internal class CDTX : CActivity { chip.strObjName = args[0]; chip.fObjStart = float.Parse(args[1]); chip.fObjEnd = float.Parse(args[1]); - chip.strObjEaseType = "IN_OUT"; - - // チップを配置。 + chip.strObjEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJROTATIONEND"); @@ -4512,7 +4076,7 @@ internal class CDTX : CActivity { if (!currentObjAnimations.ContainsKey("opacity_" + name)) { var chip = new CChip(); - chip.nチャンネル番号 = 0xD0; + chip.nChannelNo = 0xD0; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4523,9 +4087,9 @@ internal class CDTX : CActivity { chip.strObjName = args[0]; chip.fObjStart = float.Parse(args[1]); chip.fObjEnd = float.Parse(args[1]); - chip.strObjEaseType = "IN_OUT"; - - // チップを配置。 + chip.strObjEaseType = "IN_OUT"; + + // チップを配置。 this.listChip.Add(chip); } else { AddError_Single("Missing #OBJOPACITYEND"); @@ -4537,7 +4101,7 @@ internal class CDTX : CActivity { } else if (command == "#CHANGETEXTURE") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD1; + chip.nChannelNo = 0xD1; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4559,9 +4123,9 @@ internal class CDTX : CActivity { CTexture tx = OpenTaiko.Tx.TxCSong(chip.strNewPath); this.listTextures.Add(chip.strNewPath, tx); } - } - - // チップを配置。 + } + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -4569,7 +4133,7 @@ internal class CDTX : CActivity { } else if (command == "#RESETTEXTURE") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD2; + chip.nChannelNo = 0xD2; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4577,14 +4141,14 @@ internal class CDTX : CActivity { chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 1; - chip.strTargetTxName = argument.Replace("/", "\\"); - - // チップを配置。 + chip.strTargetTxName = argument.Replace("/", "\\"); + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#SETCONFIG") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD3; + chip.nChannelNo = 0xD3; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4592,14 +4156,14 @@ internal class CDTX : CActivity { chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 1; - chip.strConfigValue = argument; - - // チップを配置。 + chip.strConfigValue = argument; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#OBJANIMSTART") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD4; + chip.nChannelNo = 0xD4; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4610,9 +4174,9 @@ internal class CDTX : CActivity { string[] args = argument.Split(','); try { chip.strObjName = args[0]; - chip.dbAnimInterval = double.Parse(args[1]); - - // チップを配置。 + chip.dbAnimInterval = double.Parse(args[1]); + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -4620,7 +4184,7 @@ internal class CDTX : CActivity { } else if (command == "#OBJANIMSTARTLOOP") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD5; + chip.nChannelNo = 0xD5; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4631,9 +4195,9 @@ internal class CDTX : CActivity { string[] args = argument.Split(','); try { chip.strObjName = args[0]; - chip.dbAnimInterval = double.Parse(args[1]); - - // チップを配置。 + chip.dbAnimInterval = double.Parse(args[1]); + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -4641,7 +4205,7 @@ internal class CDTX : CActivity { } else if (command == "#OBJANIMEND") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD6; + chip.nChannelNo = 0xD6; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4649,14 +4213,14 @@ internal class CDTX : CActivity { chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 1; - chip.strObjName = argument; - - // チップを配置。 + chip.strObjName = argument; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#OBJFRAME") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD7; + chip.nChannelNo = 0xD7; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4667,9 +4231,9 @@ internal class CDTX : CActivity { string[] args = argument.Split(','); try { chip.strObjName = args[0]; - chip.intFrame = int.Parse(args[1]); - - // チップを配置。 + chip.intFrame = int.Parse(args[1]); + + // チップを配置。 this.listChip.Add(chip); } catch (Exception ex) { AddError(command, argument); @@ -4677,7 +4241,7 @@ internal class CDTX : CActivity { } else if (command == "#GAMETYPE") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD8; + chip.nChannelNo = 0xD8; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; @@ -4692,40 +4256,40 @@ internal class CDTX : CActivity { case "Konga": chip.eGameType = EGameType.Konga; break; - } - - // チップを配置。 + } + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#SPLITLANE") { var chip = new CChip(); - chip.nチャンネル番号 = 0xD9; + chip.nChannelNo = 0xD9; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; - chip.n整数値_内部番号 = 1; - - // チップを配置。 + chip.n整数値_内部番号 = 1; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#MERGELANE") { var chip = new CChip(); - chip.nチャンネル番号 = 0xE3; + chip.nChannelNo = 0xE3; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; - chip.n整数値_内部番号 = 1; - - // チップを配置。 + chip.n整数値_内部番号 = 1; + + // チップを配置。 this.listChip.Add(chip); } else if (command == "#BARLINE") { var chip = new CChip(); - chip.nチャンネル番号 = 0xE4; + chip.nChannelNo = 0xE4; chip.n発声位置 = ((this.n現在の小節数) * 384); chip.dbBPM = this.dbNowBPM; chip.dbSCROLL = this.dbNowScroll; @@ -4734,125 +4298,125 @@ internal class CDTX : CActivity { chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 1; - chip.bHideBarLine = false; - - // チップを配置。 + chip.bHideBarLine = false; + + // チップを配置。 this.listChip.Add(chip); - } else if (command == "#SECTION") { - //分岐:条件リセット + } else if (command == "#SECTION") { + //分岐:条件リセット var chip = new CChip(); - chip.nチャンネル番号 = 0xDD; + chip.nChannelNo = 0xDD; chip.n発声位置 = ((this.n現在の小節数 - 1) * 384); chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 1; - chip.db発声時刻ms = this.dbNowTime; - // チップを配置。 + chip.db発声時刻ms = this.dbNowTime; + // チップを配置。 this.listChip.Add(chip); - } else if (command == "#BRANCHSTART") { + } else if (command == "#BRANCHSTART") { #region [ 譜面分岐のパース方法を作り直し ] this.bチップがある.Branch = true; this.b最初の分岐である = false; - this.b分岐を一回でも開始した = true; - - //分岐:分岐スタート - E分岐種類 e条件; - - //条件数値。 - double[] nNum = new double[2]; - - //名前と条件Aの間に,が無いと正常に動作しなくなる.2020.04.23.akasoko26 + this.b分岐を一回でも開始した = true; + + //分岐:分岐スタート + EBranchConditionType e条件; + + //条件数値。 + double[] nNum = new double[2]; + + //名前と条件Aの間に,が無いと正常に動作しなくなる.2020.04.23.akasoko26 #region [ 名前と条件Aの間に,が無いと正常に動作しなくなる ] - //空白を削除する。 - argument = Regex.Replace(argument, @"\s", ""); - //2文字目が,か数値かをチェック - var IsNumber = bIsNumber(argument[1]); - //IsNumber == true であったら,が無いということなので,を2文字目にぶち込む・・・ + //空白を削除する。 + argument = Regex.Replace(argument, @"\s", ""); + //2文字目が,か数値かをチェック + var IsNumber = bIsNumber(argument[1]); + //IsNumber == true であったら,が無いということなので,を2文字目にぶち込む・・・ if (IsNumber) - argument = argument.Insert(1, ","); + argument = argument.Insert(1, ","); #endregion - + var branchStartArgumentMatch = BranchStartArgumentRegex.Match(argument); nNum[0] = Convert.ToDouble(branchStartArgumentMatch.Groups[2].Value); nNum[1] = Convert.ToDouble(branchStartArgumentMatch.Groups[3].Value); switch (branchStartArgumentMatch.Groups[1].Value) { case "p": - e条件 = E分岐種類.e精度分岐; + e条件 = EBranchConditionType.Accuracy; break; case "r": - e条件 = E分岐種類.e連打分岐; + e条件 = EBranchConditionType.Drumroll; break; case "s": - e条件 = E分岐種類.eスコア分岐; + e条件 = EBranchConditionType.Score; break; case "d": - e条件 = E分岐種類.e大音符のみ精度分岐; + e条件 = EBranchConditionType.Accuracy_BigNotesOnly; break; default: - e条件 = E分岐種類.e精度分岐; + e条件 = EBranchConditionType.Accuracy; break; - } - + } + #region [ 分岐開始時のチップ情報を記録 ] - //現在のチップ情報を記録する必要がある。 - this.t現在のチップ情報を記録する(true); + //現在のチップ情報を記録する必要がある。 + this.t現在のチップ情報を記録する(true); #endregion - + #region [ 一小節前の分岐開始Chip ] - //16分前に戻す計算なんか当てにしちゃだめよ。。(by Akasoko) + //16分前に戻す計算なんか当てにしちゃだめよ。。(by Akasoko) var c小節前の小節線情報 = c一小節前の小節線情報を返す(listChip, e条件); CChip c小節前の連打開始位置 = null; var chip = new CChip(); - if (e条件 == E分岐種類.e連打分岐) { + if (e条件 == EBranchConditionType.Drumroll) { /* c小節前の連打開始位置 = c一小節前の小節線情報を返す(listChip, e条件, true); //連打分岐の位置を再現 //この計算式はあてにならないと思うが、まあどうしようもないんでこれで //なるべく連打のケツの部分に var f連打の長さの半分 = (c小節前の小節線情報.n発声時刻ms - c小節前の連打開始位置.n発声時刻ms) / 2.0f; - */ - + */ + chip.n発声時刻ms = c小節前の小節線情報.n発声時刻ms; } else chip.n発声時刻ms = c小節前の小節線情報.n発声時刻ms; - chip.nチャンネル番号 = 0xDE; + chip.nChannelNo = 0xDE; chip.fNow_Measure_m = c小節前の小節線情報.fNow_Measure_m; - chip.fNow_Measure_s = c小節前の小節線情報.fNow_Measure_s; - - //ノーツ * 0.5分後ろにして、ノーツが残らないようにする + chip.fNow_Measure_s = c小節前の小節線情報.fNow_Measure_s; + + //ノーツ * 0.5分後ろにして、ノーツが残らないようにする chip.n分岐時刻ms = this.dbNowTime - ((15000.0 / this.dbNowBPM * (this.fNow_Measure_s / this.fNow_Measure_m)) * 0.5); - chip.e分岐の種類 = e条件; - chip.n条件数値A = nNum[0];// listに追加していたが仕様を変更。 - chip.n条件数値B = nNum[1];// "" + chip.eBranchCondition = e条件; + chip.nBranchCondition1_Professional = nNum[0];// listに追加していたが仕様を変更。 + chip.nBranchCondition2_Master = nNum[1];// "" chip.dbSCROLL = c小節前の小節線情報.dbSCROLL; chip.dbBPM = c小節前の小節線情報.dbBPM; - this.listChip.Add(chip); + this.listChip.Add(chip); #endregion - + for (int i = 0; i < 3; i++) - IsBranchBarDraw[i] = true;//3コース分の黄色小説線表示㋫ラブ - - IsEndedBranching = false; + IsBranchBarDraw[i] = true;//3コース分の黄色小説線表示㋫ラブ + + IsEndedBranching = false; #endregion - } else if (command == "#N" || command == "#E" || command == "#M")//これCourseを全部集めてあとから分岐させればいい件 - { - //開始時の情報にセット + } else if (command == "#N" || command == "#E" || command == "#M")//これCourseを全部集めてあとから分岐させればいい件 + { + //開始時の情報にセット t現在のチップ情報を記録する(false); if (command == "#N") - this.n現在のコース = ECourse.eNormal;//分岐:普通譜面 + this.n現在のコース = ECourse.eNormal;//分岐:普通譜面 else if (command == "#E") - this.n現在のコース = ECourse.eExpert;//分岐:玄人譜面 + this.n現在のコース = ECourse.eExpert;//分岐:玄人譜面 else if (command == "#M") - this.n現在のコース = ECourse.eMaster;//分岐:達人譜面 + this.n現在のコース = ECourse.eMaster;//分岐:達人譜面 } else if (command == "#LEVELHOLD") { var chip = new CChip(); - chip.nチャンネル番号 = 0xE1; + chip.nChannelNo = 0xE1; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; @@ -4861,10 +4425,10 @@ internal class CDTX : CActivity { this.listChip.Add(chip); } else if (command == "#BRANCHEND") { - var GoBranch = new CChip(); - - //End用チャンネルをEmptyから引っ張ってきた。 - GoBranch.nチャンネル番号 = 0x52; + var GoBranch = new CChip(); + + //End用チャンネルをEmptyから引っ張ってきた。 + GoBranch.nChannelNo = 0x52; GoBranch.n発声位置 = ((this.n現在の小節数) * 384) - 1; GoBranch.n発声時刻ms = (int)this.dbNowTime; GoBranch.fNow_Measure_m = this.fNow_Measure_m; @@ -4873,73 +4437,73 @@ internal class CDTX : CActivity { GoBranch.dbBPM = this.dbNowBPM; GoBranch.n整数値_内部番号 = 1; - this.listChip.Add(GoBranch); - - //End時にも黄色い小節線あったべ? + this.listChip.Add(GoBranch); + + //End時にも黄色い小節線あったべ? for (int i = 0; i < 3; i++) - IsBranchBarDraw[i] = true;//3コース分の黄色小説線表示㋫ラブ - + IsBranchBarDraw[i] = true;//3コース分の黄色小説線表示㋫ラブ + IsEndedBranching = true; } else if (command == "#BARLINEOFF") { var chip = new CChip(); - chip.nチャンネル番号 = 0xE0; + chip.nChannelNo = 0xE0; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime + 1; chip.n整数値_内部番号 = 1; - chip.nコース = this.n現在のコース; + chip.nBranch = this.n現在のコース; this.bBARLINECUE[0] = 1; this.listChip.Add(chip); } else if (command == "#BARLINEON") { var chip = new CChip(); - chip.nチャンネル番号 = 0xE0; + chip.nChannelNo = 0xE0; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime + 1; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 2; - chip.nコース = this.n現在のコース; + chip.nBranch = this.n現在のコース; this.bBARLINECUE[0] = 0; this.listChip.Add(chip); - } else if (command == "#LYRIC" && !usingLyricsFile && OpenTaiko.ConfigIni.nPlayerCount < 4) // Do not parse LYRIC tags if a lyric file is already loaded + } else if (command == "#LYRIC" && !usingLyricsFile && OpenTaiko.ConfigIni.nPlayerCount < 4) // Do not parse LYRIC tags if a lyric file is already loaded { - if (OpenTaiko.r現在のステージ.eStageID == CStage.EStage.SongLoading)//起動時に重たくなってしまう問題の修正用 + if (OpenTaiko.r現在のステージ.eStageID == CStage.EStage.SongLoading)//起動時に重たくなってしまう問題の修正用 this.listLyric.Add(this.pf歌詞フォント.DrawText(argument, OpenTaiko.Skin.Game_Lyric_ForeColor, OpenTaiko.Skin.Game_Lyric_BackColor, null, 30)); var chip = new CChip(); - chip.nチャンネル番号 = 0xF1; + chip.nChannelNo = 0xF1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 0; - chip.nコース = this.n現在のコース; - - // チップを配置。 - + chip.nBranch = this.n現在のコース; + + // チップを配置。 + this.listChip.Add(chip); this.bLyrics = true; } else if (command == "#DIRECTION") { double dbSCROLL = Convert.ToDouble(argument); - this.nスクロール方向 = (int)dbSCROLL; - - //チップ追加して割り込んでみる。 + this.nスクロール方向 = (int)dbSCROLL; + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0xF2; + chip.nChannelNo = 0xF2; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 0; - chip.nスクロール方向 = (int)dbSCROLL; - chip.nコース = this.n現在のコース; - - // チップを配置。 - + chip.nScrollDirection = (int)dbSCROLL; + chip.nBranch = this.n現在のコース; + + // チップを配置。 + this.listChip.Add(chip); } else if (command == "#SUDDEN") { strArray = argument.Split(chDelimiter); @@ -4947,12 +4511,12 @@ internal class CDTX : CActivity { double db出現時刻 = Convert.ToDouble(strArray[0]); double db移動待機時刻 = Convert.ToDouble(strArray[1]); this.db出現時刻 = db出現時刻; - this.db移動待機時刻 = db移動待機時刻; - - //チップ追加して割り込んでみる。 + this.db移動待機時刻 = db移動待機時刻; + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0xF3; + chip.nChannelNo = 0xF3; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; @@ -4960,10 +4524,10 @@ internal class CDTX : CActivity { chip.n整数値_内部番号 = 0; chip.nノーツ出現時刻ms = (int)this.db出現時刻; chip.nノーツ移動開始時刻ms = (int)this.db移動待機時刻; - chip.nコース = this.n現在のコース; - - // チップを配置。 - + chip.nBranch = this.n現在のコース; + + // チップを配置。 + this.listChip.Add(chip); } else if (command == "#JPOSSCROLL") { strArray = argument.Split(chDelimiter); @@ -4980,21 +4544,21 @@ internal class CDTX : CActivity { n移動px = Convert.ToInt32(strArray[1]); - int n移動方向 = (strArray.Length >= 3) ? Convert.ToInt32(strArray[2]) : 0; - - //チップ追加して割り込んでみる。 + int n移動方向 = (strArray.Length >= 3) ? Convert.ToInt32(strArray[2]) : 0; + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0xE2; + chip.nChannelNo = 0xE2; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = 0; - chip.nコース = this.n現在のコース; - - // チップを配置。 - + chip.nBranch = this.n現在のコース; + + // チップを配置。 + this.listJPOSSCROLL.Add(this.n内部番号JSCROLL1to, new CJPOSSCROLL() { n内部番号 = this.n内部番号JSCROLL1to, n表記上の番号 = 0, db移動時間 = db移動時刻, n移動距離px = n移動px, n移動方向 = n移動方向, nVerticalMove = nComplexMove }); this.listChip.Add(chip); this.n内部番号JSCROLL1to++; @@ -5003,11 +4567,11 @@ internal class CDTX : CActivity { IsEnabledFixSENote = true; } else if (command == "#NEXTSONG") { nNextSongOffset += nOFFSET; - var delayTime = 6200.0 + nOFFSET; // 6.2秒ディレイ - //チップ追加して割り込んでみる。 + var delayTime = 6200.0 + nOFFSET; // 6.2秒ディレイ + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x9B; + chip.nChannelNo = 0x9B; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; @@ -5015,17 +4579,17 @@ internal class CDTX : CActivity { this.dbNowTime += delayTime; this.dbNowBMScollTime += (delayTime - nOFFSET) * this.dbNowBPM / 15000; chip.n整数値_内部番号 = 0; - chip.nコース = this.n現在のコース; - - // チップを配置。 + chip.nBranch = this.n現在のコース; + + // チップを配置。 this.listChip.Add(chip); - AddMusicPreTimeMs(); // 段位の幕が開いてからの遅延。 - - strArray = SplitComma(argument); // \,をエスケープ処理するメソッドだぞっ - - for (int i = listChip.Count - 1; i >= 0; i--) { - //if (listChip[i].nチャンネル番号 >= 0x11 && listChip[i].nチャンネル番号 <= 0x18) + AddMusicPreTimeMs(); // 段位の幕が開いてからの遅延。 + + strArray = SplitComma(argument); // \,をエスケープ処理するメソッドだぞっ + + for (int i = listChip.Count - 1; i >= 0; i--) { + //if (listChip[i].nチャンネル番号 >= 0x11 && listChip[i].nチャンネル番号 <= 0x18) if (NotesManager.IsHittableNote(listChip[i])) { if (DanSongs.Number != 0) { Array.Resize(ref this.pDan_LastChip, this.pDan_LastChip.Length + 1); @@ -5076,7 +4640,7 @@ internal class CDTX : CActivity { var nextSongnextSongChip = new CChip(); - nextSongnextSongChip.nチャンネル番号 = 0x01; + nextSongnextSongChip.nChannelNo = 0x01; nextSongnextSongChip.n発声位置 = 384; nextSongnextSongChip.n発声時刻ms = (int)this.dbNowTime; nextSongnextSongChip.fNow_Measure_m = this.fNow_Measure_m; @@ -5087,63 +4651,63 @@ internal class CDTX : CActivity { this.listWAV[1].strファイル名 = ""; Array.Resize(ref bHasBranchDan, List_DanSongs.Count); - bHasBranchDan[bHasBranchDan.Length - 1] = false; - - // チップを配置。 + bHasBranchDan[bHasBranchDan.Length - 1] = false; + + // チップを配置。 this.listChip.Add(nextSongnextSongChip); - } else if (command == "#NMSCROLL") { - //チップ追加して割り込んでみる。 + } else if (command == "#NMSCROLL") { + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x09; + chip.nChannelNo = 0x09; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = this.n内部番号SCROLL1to; - chip.nコース = this.n現在のコース; - - // チップを配置。 + chip.nBranch = this.n現在のコース; + + // チップを配置。 eScrollMode = EScrollMode.Normal; this.listChip.Add(chip); - } else if (command == "#BMSCROLL") { - //チップ追加して割り込んでみる。 + } else if (command == "#BMSCROLL") { + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x0A; + chip.nChannelNo = 0x0A; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = this.n内部番号SCROLL1to; - chip.nコース = this.n現在のコース; - - // チップを配置。 + chip.nBranch = this.n現在のコース; + + // チップを配置。 eScrollMode = EScrollMode.BMScroll; this.listChip.Add(chip); - } else if (command == "#HBSCROLL") { - //チップ追加して割り込んでみる。 + } else if (command == "#HBSCROLL") { + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x0B; + chip.nChannelNo = 0x0B; chip.n発声位置 = ((this.n現在の小節数) * 384) - 1; chip.n発声時刻ms = (int)this.dbNowTime; chip.fNow_Measure_m = this.fNow_Measure_m; chip.fNow_Measure_s = this.fNow_Measure_s; chip.n整数値_内部番号 = this.n内部番号SCROLL1to; - chip.nコース = this.n現在のコース; - - // チップを配置。 + chip.nBranch = this.n現在のコース; + + // チップを配置。 eScrollMode = EScrollMode.HBScroll; this.listChip.Add(chip); } } - void t現在のチップ情報を記録する(bool bInPut) { - //2020.04.21 こうなってしまったのは仕方がないな。。 - if (bInPut) { + void t現在のチップ情報を記録する(bool bInPut) { + //2020.04.21 こうなってしまったのは仕方がないな。。 + if (bInPut) { #region [ 記録する ] cBranchStart.dbTime = this.dbNowTime; cBranchStart.dbSCROLL = this.dbNowScroll; @@ -5155,9 +4719,9 @@ internal class CDTX : CActivity { cBranchStart.nMeasureCount = this.n現在の小節数; cBranchStart.db移動待機時刻 = this.db移動待機時刻; cBranchStart.db再生速度 = this.db再生速度; - cBranchStart.db出現時刻 = this.db出現時刻; + cBranchStart.db出現時刻 = this.db出現時刻; #endregion - } else { + } else { #region [ 記録した情報をNow~に適応 ] this.dbNowTime = cBranchStart.dbTime; this.dbNowScroll = cBranchStart.dbSCROLL; @@ -5169,45 +4733,45 @@ internal class CDTX : CActivity { this.n現在の小節数 = cBranchStart.nMeasureCount; this.db移動待機時刻 = cBranchStart.db移動待機時刻; this.db再生速度 = cBranchStart.db再生速度; - this.db出現時刻 = cBranchStart.db出現時刻; + this.db出現時刻 = cBranchStart.db出現時刻; #endregion } - } - + } + /// /// 一小節前の小節線情報を返すMethod 2020.04.21.akasoko26 /// /// /// - private CChip c一小節前の小節線情報を返す(List listChips, E分岐種類 e分岐種類, bool b分岐前の連打開始 = false) { - //2020.04.20 c一小節前の小節線情報を返すMethodを追加 - //連打分岐時は現在の小節以降の連打の終わり部分の時刻を取得する - - int? nReturnChip = null; - - //--して取得しないとだめよ~ダメダメ💛 - //:damedane: + private CChip c一小節前の小節線情報を返す(List listChips, EBranchConditionType e分岐種類, bool b分岐前の連打開始 = false) { + //2020.04.20 c一小節前の小節線情報を返すMethodを追加 + //連打分岐時は現在の小節以降の連打の終わり部分の時刻を取得する + + int? nReturnChip = null; + + //--して取得しないとだめよ~ダメダメ💛 + //:damedane: for (int i = listChips.Count - 1; i >= 0; i--) { - if (b分岐前の連打開始) { - //if (listChips[i].nチャンネル番号 == 0x15 || listChips[i].nチャンネル番号 == 0x16) + if (b分岐前の連打開始) { + //if (listChips[i].nチャンネル番号 == 0x15 || listChips[i].nチャンネル番号 == 0x16) if (NotesManager.IsRoll(listChips[i]) || NotesManager.IsFuzeRoll(listChips[i])) { if (nReturnChip == null) - nReturnChip = i; - - //ReturnChipがnullであったら適応 + nReturnChip = i; + + //ReturnChipがnullであったら適応 } } else { - var Flag = e分岐種類 == E分岐種類.e連打分岐 ? 0x18 : 0x50; + var Flag = e分岐種類 == EBranchConditionType.Drumroll ? 0x18 : 0x50; - if (listChips[i].nチャンネル番号 == Flag) { + if (listChips[i].nChannelNo == Flag) { if (nReturnChip == null) - nReturnChip = i; - //ReturnChipがnullであったら適応 + nReturnChip = i; + //ReturnChipがnullであったら適応 } } - } - - //もし、nReturnChipがnullだったらlistChipのCount - 1にセットする。 + } + + //もし、nReturnChipがnullだったらlistChipのCount - 1にセットする。 return listChips[nReturnChip == null ? listChips.Count - 1 : (int)nReturnChip]; } @@ -5220,9 +4784,9 @@ internal class CDTX : CActivity { private void t入力_行解析譜面_V4(string InputText) { if (!String.IsNullOrEmpty(InputText)) { - int n文字数 = 16; - - //現在のコース、小節に当てはまるものをリストから探して文字数を返す。 + int n文字数 = 16; + + //現在のコース、小節に当てはまるものをリストから探して文字数を返す。 for (int i = 0; i < this.listLine.Count; i++) { if (this.listLine[i].n小節番号 == this.n現在の小節数 && this.listLine[i].nコース == this.n現在のコース) { n文字数 = this.listLine[i].n文字数; @@ -5230,22 +4794,22 @@ internal class CDTX : CActivity { } - if (InputText.StartsWith("#")) { - // Call orders here + if (InputText.StartsWith("#")) { + // Call orders here this.t命令を挿入する(InputText); return; } else if (InputText.StartsWith("EXAM")) { this.tDanExamLoad(InputText); return; } else { - if (this.b小節線を挿入している == false) { - // 小節線にもやってあげないと - // IsEndedBranchingがfalseで1回 - // trueで3回だよ3回 + if (this.b小節線を挿入している == false) { + // 小節線にもやってあげないと + // IsEndedBranchingがfalseで1回 + // trueで3回だよ3回 for (int i = 0; i < (IsEndedBranching == true ? 3 : 1); i++) { CChip chip = new CChip(); chip.n発声位置 = ((this.n現在の小節数) * 384); - chip.nチャンネル番号 = 0x50; + chip.nChannelNo = 0x50; chip.n発声時刻ms = (int)this.dbNowTime; chip.n整数値 = this.n現在の小節数; chip.n文字数 = n文字数; @@ -5260,12 +4824,12 @@ internal class CDTX : CActivity { chip.eScrollMode = eScrollMode; if (IsEndedBranching) - chip.nコース = (ECourse)i; + chip.nBranch = (ECourse)i; else - chip.nコース = n現在のコース; + chip.nBranch = n現在のコース; - chip.b可視 = true; - chip.bHideBarLine = this.bBARLINECUE[0] == 1; + chip.bVisible = true; + chip.bHideBarLine = this.bBARLINECUE[0] == 1; #region [ 作り直し ] if (IsEndedBranching) { if (this.IsBranchBarDraw[i]) @@ -5273,31 +4837,31 @@ internal class CDTX : CActivity { } else { if (this.IsBranchBarDraw[(int)n現在のコース]) chip.bBranch = true; - } + } #endregion - - this.listChip.Add(chip); - + + this.listChip.Add(chip); + #region [ 作り直し ] if (IsEndedBranching) this.IsBranchBarDraw[i] = false; - else this.IsBranchBarDraw[(int)n現在のコース] = false; + else this.IsBranchBarDraw[(int)n現在のコース] = false; #endregion } this.dbLastTime = this.dbNowTime; - this.b小節線を挿入している = true; - + this.b小節線を挿入している = true; + #region[ 拍線チップテスト ] - //1拍の時間を計算 - double db1拍 = (60.0 / this.dbNowBPM) / 4.0; - //forループ(拍数) + //1拍の時間を計算 + double db1拍 = (60.0 / this.dbNowBPM) / 4.0; + //forループ(拍数) for (int measure = 1; measure < this.fNow_Measure_s; measure++) { CChip hakusen = new CChip(); hakusen.n発声位置 = ((this.n現在の小節数) * 384); hakusen.n発声時刻ms = (int)(this.dbNowTime + (((db1拍 * 4.0)) * measure) * 1000.0); - hakusen.nチャンネル番号 = 0x51; + hakusen.nChannelNo = 0x51; hakusen.fBMSCROLLTime = this.dbNowBMScollTime; hakusen.n整数値_内部番号 = this.n現在の小節数; hakusen.n整数値 = 0; @@ -5306,13 +4870,13 @@ internal class CDTX : CActivity { hakusen.fNow_Measure_m = this.fNow_Measure_m; hakusen.fNow_Measure_s = this.fNow_Measure_s; hakusen.dbSCROLL_Y = this.dbNowScrollY; - hakusen.nコース = n現在のコース; + hakusen.nBranch = n現在のコース; hakusen.eScrollMode = eScrollMode; this.listChip.Add(hakusen); - } - + } + #endregion - + } for (int n = 0; n < InputText.Length; n++) { @@ -5341,23 +4905,23 @@ internal class CDTX : CActivity { this.nNowRollCountBranch[i] = listChip_Branch[i].Count; nNowRoll = nObjectNum; } - } - - // IsEndedBranchingがfalseで1回 - // trueで3回だよ3回 + } + + // IsEndedBranchingがfalseで1回 + // trueで3回だよ3回 for (int i = 0; i < (IsEndedBranching == true ? 3 : 1); i++) { var chip = new CChip(); chip.IsMissed = false; chip.bHit = false; - chip.b可視 = true; + chip.bVisible = true; chip.bShow = true; chip.bShowRoll = true; - chip.nチャンネル番号 = 0x10 + nObjectNum; - //chip.n発声位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + chip.nChannelNo = 0x10 + nObjectNum; + //chip.n発声位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); chip.n発声位置 = (int)((this.n現在の小節数 * 384.0) + ((384.0 * n) / n文字数)); chip.db発声位置 = this.dbNowTime; - chip.n発声時刻ms = (int)this.dbNowTime; - //chip.fBMSCROLLTime = (float)(( this.dbBarLength ) * (16.0f / this.n各小節の文字数[this.n現在の小節数])); + chip.n発声時刻ms = (int)this.dbNowTime; + //chip.fBMSCROLLTime = (float)(( this.dbBarLength ) * (16.0f / this.n各小節の文字数[this.n現在の小節数])); chip.fBMSCROLLTime = (float)this.dbNowBMScollTime; chip.n整数値 = nObjectNum; chip.n整数値_内部番号 = 1; @@ -5367,16 +4931,15 @@ internal class CDTX : CActivity { chip.dbBPM = this.dbNowBPM; chip.dbSCROLL = this.dbNowScroll; chip.dbSCROLL_Y = this.dbNowScrollY; - chip.nスクロール方向 = this.nスクロール方向; + chip.nScrollDirection = this.nスクロール方向; chip.eScrollMode = eScrollMode; if (IsEndedBranching) - chip.nコース = (ECourse)i; + chip.nBranch = (ECourse)i; else - chip.nコース = n現在のコース; + chip.nBranch = n現在のコース; chip.n分岐回数 = this.n内部番号BRANCH1to; - chip.e楽器パート = EInstrumentPad.Taiko; chip.nノーツ出現時刻ms = (int)(this.db出現時刻 * 1000.0); chip.nノーツ移動開始時刻ms = (int)(this.db移動待機時刻 * 1000.0); chip.nPlayerSide = this.nPlayerSide; @@ -5384,18 +4947,18 @@ internal class CDTX : CActivity { if (NotesManager.IsKusudama(chip)) { if (IsEndedBranching) { - } else { - // Balloon in branches - chip.nチャンネル番号 = 0x19; + } else { + // Balloon in branches + chip.nChannelNo = 0x19; } } - if (NotesManager.IsGenericBalloon(chip)) { - //this.n現在のコースをswitchで分岐していたため風船の値がうまく割り当てられていない 2020.04.21 akasoko26 - + if (NotesManager.IsGenericBalloon(chip)) { + //this.n現在のコースをswitchで分岐していたため風船の値がうまく割り当てられていない 2020.04.21 akasoko26 + #region [Balloons] - - switch (chip.nコース) { + + switch (chip.nBranch) { case ECourse.eNormal: if (this.listBalloon_Normal.Count == 0) { chip.nBalloon = 5; @@ -5432,14 +4995,14 @@ internal class CDTX : CActivity { break; } break; - } - + } + #endregion - + } if (NotesManager.IsRollEnd(chip)) { - chip.nノーツ終了位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); - chip.nノーツ終了時刻ms = (int)this.dbNowTime; + chip.nNoteEndPosition = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + chip.nNoteEndTimems = (int)this.dbNowTime; chip.fBMSCROLLTime_end = (float)this.dbNowBMScollTime; chip.nノーツ出現時刻ms = listChip[nNowRollCount].nノーツ出現時刻ms; @@ -5448,16 +5011,16 @@ internal class CDTX : CActivity { chip.n連打音符State = nNowRoll; if (!IsEndedBranching || i == 0) { - listChip[nNowRollCount].nノーツ終了位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); - listChip[nNowRollCount].nノーツ終了時刻ms = (int)this.dbNowTime; + listChip[nNowRollCount].nNoteEndPosition = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + listChip[nNowRollCount].nNoteEndTimems = (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; + listChip_Branch[(int)chip.nBranch][nNowRollCountBranch[(int)chip.nBranch]].nNoteEndPosition = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + listChip_Branch[(int)chip.nBranch][nNowRollCountBranch[(int)chip.nBranch]].nNoteEndTimems = (int)this.dbNowTime; + listChip_Branch[(int)chip.nBranch][nNowRollCountBranch[(int)chip.nBranch]].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]].nNoteEndPosition = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + listChip_Branch[i][nNowRollCountBranch[i]].nNoteEndTimems = (int)this.dbNowTime; listChip_Branch[i][nNowRollCountBranch[i]].fBMSCROLLTime_end = (int)this.dbNowBMScollTime; } @@ -5468,8 +5031,8 @@ internal class CDTX : CActivity { if (IsEnabledFixSENote) { chip.IsFixedSENote = true; chip.nSenote = FixSENote - 1; - } - + } + #region[ 固定される種類のsenotesはここで設定しておく。 ] switch (nObjectNum) { case 3: @@ -5505,14 +5068,14 @@ internal class CDTX : CActivity { case 0xF1: chip.nSenote = 5; break; - } + } #endregion - - - if (NotesManager.IsMissableNote(chip)) { + + + if (NotesManager.IsMissableNote(chip)) { #region [ 作り直し ] - //譜面分岐がない譜面でも値は加算されてしまうがしゃあない - //分岐を開始しない間は共通譜面としてみなす。 + //譜面分岐がない譜面でも値は加算されてしまうがしゃあない + //分岐を開始しない間は共通譜面としてみなす。 if (IsEndedBranching) { this.nノーツ数_Branch[i]++; @@ -5523,27 +5086,27 @@ internal class CDTX : CActivity { this.nノーツ数[3]++; } } else { - this.nノーツ数_Branch[(int)chip.nコース]++; - if (this.n参照中の難易度 == (int)Difficulty.Dan && chip.nコース == ECourse.eMaster) { + this.nノーツ数_Branch[(int)chip.nBranch]++; + if (this.n参照中の難易度 == (int)Difficulty.Dan && chip.nBranch == ECourse.eMaster) { this.nDan_NotesCount[DanSongs.Number - 1]++; } - if (!this.b分岐を一回でも開始した) { - //IsEndedBranching==false = forloopが行われていないときのみ + if (!this.b分岐を一回でも開始した) { + //IsEndedBranching==false = forloopが行われていないときのみ for (int l = 0; l < 3; l++) this.nノーツ数_Branch[l]++; } - } - + } + #endregion - } else if (NotesManager.IsGenericBalloon(chip)) { - //風船はこのままでも機能しているので何もしない. + } else if (NotesManager.IsGenericBalloon(chip)) { + //風船はこのままでも機能しているので何もしない. if (IsEndedBranching) { if (this.n参照中の難易度 == (int)Difficulty.Dan) { this.nDan_BalloonCount[DanSongs.Number - 1]++; } } else { - if (this.n参照中の難易度 == (int)Difficulty.Dan && chip.nコース == ECourse.eMaster) { + if (this.n参照中の難易度 == (int)Difficulty.Dan && chip.nBranch == ECourse.eMaster) { this.nDan_BalloonCount[DanSongs.Number - 1]++; } } @@ -5563,7 +5126,7 @@ internal class CDTX : CActivity { if (i == 0) this.listChip.Add(chip); } else { - this.listChip_Branch[(int)chip.nコース].Add(chip); + this.listChip_Branch[(int)chip.nBranch].Add(chip); this.listChip.Add(chip); } @@ -5579,8 +5142,8 @@ internal class CDTX : CActivity { } } } - } - + } + /// /// 難易度ごとによって変わるヘッダ値を読み込む。 /// (BALLOONなど。) @@ -5614,11 +5177,11 @@ internal class CDTX : CActivity { if (strCommandName.Equals("BALLOON") || strCommandName.Equals("BALLOONNOR")) { ParseBalloon(strCommandParam, this.listBalloon_Normal); } else if (strCommandName.Equals("BALLOONEXP")) { - ParseBalloon(strCommandParam, this.listBalloon_Expert); - //tbBALLOON.Text = strCommandParam; + ParseBalloon(strCommandParam, this.listBalloon_Expert); + //tbBALLOON.Text = strCommandParam; } else if (strCommandName.Equals("BALLOONMAS")) { - ParseBalloon(strCommandParam, this.listBalloon_Master); - //tbBALLOON.Text = strCommandParam; + ParseBalloon(strCommandParam, this.listBalloon_Master); + //tbBALLOON.Text = strCommandParam; } else if (strCommandName.Equals("SCOREMODE")) { ParseOptionalInt16(value => this.nScoreModeTmp = value); } else if (strCommandName.Equals("SCOREINIT")) { @@ -5663,11 +5226,11 @@ internal class CDTX : CActivity { this.b配点が指定されている[1, this.n参照中の難易度] = true; } } - if (this.nScoreModeTmp == 99) //2017.01.28 DD SCOREMODEを入力していない場合のみConfigで設定したモードにする + if (this.nScoreModeTmp == 99) //2017.01.28 DD SCOREMODEを入力していない場合のみConfigで設定したモードにする { this.nScoreModeTmp = OpenTaiko.ConfigIni.nScoreMode; } - if (OpenTaiko.ConfigIni.nScoreMode == 3 && !this.b配点が指定されている[2, this.n参照中の難易度]) { //2017.06.04 kairera0467 + if (OpenTaiko.ConfigIni.nScoreMode == 3 && !this.b配点が指定されている[2, this.n参照中の難易度]) { //2017.06.04 kairera0467 this.nScoreModeTmp = 3; } } @@ -5680,10 +5243,10 @@ internal class CDTX : CActivity { if (strArray.Length == 2) { strCommandName = strArray[0].Trim(); strCommandParam = strArray[1].Trim(); - } - - // Adapt to EXAM until 7, optimise condition - + } + + // Adapt to EXAM until 7, optimise condition + if (strCommandName.StartsWith("EXAM")) { if (!string.IsNullOrEmpty(strCommandParam)) { Exam.Type examType; @@ -5791,34 +5354,34 @@ internal class CDTX : CActivity { listBalloon.Add(n打数); } } - private void t入力_行解析ヘッダ(string InputText) { - //やべー。先頭にコメント行あったらやばいやん。 + private void t入力_行解析ヘッダ(string InputText) { + //やべー。先頭にコメント行あったらやばいやん。 string[] strArray = InputText.Split(new char[] { ':' }, 2); string strCommandName = ""; string strCommandParam = ""; - if (InputText.StartsWith("#BRANCHSTART")) { - //2015.08.18 kairera0467 - //本来はヘッダ命令ではありませんが、難易度ごとに違う項目なのでここで読み込ませます。 - //Lengthのチェックをされる前ににif文を入れています。 + if (InputText.StartsWith("#BRANCHSTART")) { + //2015.08.18 kairera0467 + //本来はヘッダ命令ではありませんが、難易度ごとに違う項目なのでここで読み込ませます。 + //Lengthのチェックをされる前ににif文を入れています。 this.bHasBranch[this.n参照中の難易度] = true; if (this.n参照中の難易度 == (int)Difficulty.Dan) { this.bHasBranchDan[this.bHasBranchDan.Length - 1] = true; } - } - - //まずは「:」でSplitして割り当てる。 + } + + //まずは「:」でSplitして割り当てる。 if (strArray.Length == 2) { strCommandName = strArray[0].Trim(); strCommandParam = strArray[1].Trim(); - } else if (strArray.Length > 2) { - //strArrayが2じゃない場合、ヘッダのSplitを通していない可能性がある。 - //この処理自体は「t入力」を改造したもの。STARTでSplitしていない等、一部の処理が異なる。 - + } else if (strArray.Length > 2) { + //strArrayが2じゃない場合、ヘッダのSplitを通していない可能性がある。 + //この処理自体は「t入力」を改造したもの。STARTでSplitしていない等、一部の処理が異なる。 + #region [Header] - InputText = InputText.Replace(Environment.NewLine, "\n"); //改行文字を別の文字列に差し替え。 - InputText = InputText.Replace('\t', ' '); //何の文字か知らないけどスペースに差し替え。 + InputText = InputText.Replace(Environment.NewLine, "\n"); //改行文字を別の文字列に差し替え。 + InputText = InputText.Replace('\t', ' '); //何の文字か知らないけどスペースに差し替え。 InputText = InputText + "\n"; string[] strDelimiter2 = { "\n" }; @@ -5829,17 +5392,17 @@ internal class CDTX : CActivity { WarnSplitLength("Header Name & Value", strArray, 2); strCommandName = strArray[0].Trim(); - strCommandParam = strArray[1].Trim(); - + strCommandParam = strArray[1].Trim(); + #endregion - //lblMessage.Text = "おや?strArrayのLengthが2じゃないようですね。お兄様。"; + //lblMessage.Text = "おや?strArrayのLengthが2じゃないようですね。お兄様。"; } void ParseOptionalInt16(Action setValue) { this.ParseOptionalInt16(strCommandName, strCommandParam, setValue); - } - - //パラメータを分別、そこから割り当てていきます。 + } + + //パラメータを分別、そこから割り当てていきます。 if (strCommandName.Equals("TITLE")) { this.TITLE.SetString("default", strCommandParam); } else if (strCommandName.StartsWith("TITLE")) { @@ -5865,8 +5428,8 @@ internal class CDTX : CActivity { this.LEVELtaiko[this.n参照中の難易度] = (int)level; } else if (strCommandName.StartsWith("NOTESDESIGNER")) { this.NOTESDESIGNER[this.n参照中の難易度] = strCommandParam; - } else if (strCommandName.Equals("LIFE")) { - // LIFE here + } else if (strCommandName.Equals("LIFE")) { + // LIFE here var life = (int)Convert.ToDouble(strCommandParam); this.LIFE = life; } else if (strCommandName.Equals("PREIMAGE")) { @@ -5891,30 +5454,30 @@ internal class CDTX : CActivity { this.dbNowBPM = dbBPM; this.listBPM.Add(this.n内部番号BPM1to - 1, new CBPM() { n内部番号 = this.n内部番号BPM1to - 1, n表記上の番号 = this.n内部番号BPM1to - 1, dbBPM値 = dbBPM, }); - this.n内部番号BPM1to++; - - - //チップ追加して割り込んでみる。 + this.n内部番号BPM1to++; + + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x03; + chip.nChannelNo = 0x03; chip.n発声位置 = ((this.n現在の小節数 - 1) * 384); chip.n整数値 = 0x00; chip.n整数値_内部番号 = 1; - this.listChip.Add(chip); - //tbBPM.Text = strCommandParam; + this.listChip.Add(chip); + //tbBPM.Text = strCommandParam; } else if (strCommandName.Equals("WAVE")) { if (strBGM_PATH != null) { - Trace.TraceWarning($"{nameof(CDTX)} is ignoring an extra WAVE header in {this.strファイル名の絶対パス}"); + Trace.TraceWarning($"{nameof(CTja)} is ignoring an extra WAVE header in {this.strファイル名の絶対パス}"); } else { - this.strBGM_PATH = CDTXCompanionFileFinder.FindFileName(this.strフォルダ名, strファイル名, strCommandParam); - //tbWave.Text = strCommandParam; - if (this.listWAV != null) { - // 2018-08-27 twopointzero - DO attempt to load (or queue scanning) loudness metadata here. - // TJAP3 is either launching, enumerating songs, or is about to - // begin playing a song. If metadata is available, we want it now. - // If is not yet available then we wish to queue scanning. + this.strBGM_PATH = CDTXCompanionFileFinder.FindFileName(this.strフォルダ名, strファイル名, strCommandParam); + //tbWave.Text = strCommandParam; + if (this.listWAV != null) { + // 2018-08-27 twopointzero - DO attempt to load (or queue scanning) loudness metadata here. + // TJAP3 is either launching, enumerating songs, or is about to + // begin playing a song. If metadata is available, we want it now. + // If is not yet available then we wish to queue scanning. var absoluteBgmPath = Path.Combine(this.strフォルダ名, this.strBGM_PATH); this.SongLoudnessMetadata = LoudnessMetadataScanner.LoadForAudioPath(absoluteBgmPath); @@ -5940,28 +5503,28 @@ internal class CDTX : CActivity { this.listBPM[0].bpm_change_bmscroll_time = -2000 * this.dbNowBPM / 15000; if (this.bOFFSETの値がマイナスである == true) - this.nOFFSET = this.nOFFSET * -1; //OFFSETは秒を加算するので、必ず正の数にすること。 - //tbOFFSET.Text = strCommandParam; - - // Substract global offset + this.nOFFSET = this.nOFFSET * -1; //OFFSETは秒を加算するので、必ず正の数にすること。 + //tbOFFSET.Text = strCommandParam; + + // Substract global offset this.nOFFSET += ((this.bOFFSETの値がマイナスである == true) ? -OpenTaiko.ConfigIni.nGlobalOffsetMs : OpenTaiko.ConfigIni.nGlobalOffsetMs); } else if (strCommandName.Equals("MOVIEOFFSET")) { this.nMOVIEOFFSET = (int)(Convert.ToDouble(strCommandParam) * 1000); this.bMOVIEOFFSETの値がマイナスである = this.nMOVIEOFFSET < 0 ? true : false; if (this.bMOVIEOFFSETの値がマイナスである == true) - this.nMOVIEOFFSET = this.nMOVIEOFFSET * -1; //OFFSETは秒を加算するので、必ず正の数にすること。 - //tbOFFSET.Text = strCommandParam; - } + this.nMOVIEOFFSET = this.nMOVIEOFFSET * -1; //OFFSETは秒を加算するので、必ず正の数にすること。 + //tbOFFSET.Text = strCommandParam; + } #region[移動→不具合が起こるのでここも一応復活させておく] else if (strCommandName.Equals("BALLOON") || strCommandName.Equals("BALLOONNOR")) { ParseBalloon(strCommandParam, this.listBalloon_Normal); } else if (strCommandName.Equals("BALLOONEXP")) { - ParseBalloon(strCommandParam, this.listBalloon_Expert); - //tbBALLOON.Text = strCommandParam; + ParseBalloon(strCommandParam, this.listBalloon_Expert); + //tbBALLOON.Text = strCommandParam; } else if (strCommandName.Equals("BALLOONMAS")) { - ParseBalloon(strCommandParam, this.listBalloon_Master); - //tbBALLOON.Text = strCommandParam; + ParseBalloon(strCommandParam, this.listBalloon_Master); + //tbBALLOON.Text = strCommandParam; } else if (strCommandName.Equals("SCOREMODE")) { ParseOptionalInt16(value => this.nScoreModeTmp = value); } else if (strCommandName.Equals("SCOREINIT")) { @@ -6003,7 +5566,7 @@ internal class CDTX : CActivity { } } else if (strCommandName.Equals("SCOREDIFF")) { ParseOptionalInt16(value => this.nScoreDiff[this.n参照中の難易度] = value); - } + } #endregion else if (strCommandName.Equals("SONGVOL") && !string.IsNullOrEmpty(strCommandParam)) { this.SongVol = Convert.ToInt32(strCommandParam).Clamp(CSound.MinimumSongVol, CSound.MaximumSongVol); @@ -6011,43 +5574,43 @@ internal class CDTX : CActivity { foreach (var kvp in this.listWAV) { kvp.Value.SongVol = this.SongVol; } - } else if (strCommandName.Equals("SEVOL")) { - //tbSeVol.Text = strCommandParam; + } else if (strCommandName.Equals("SEVOL")) { + //tbSeVol.Text = strCommandParam; } else if (strCommandName.Equals("COURSE")) { - if (!string.IsNullOrEmpty(strCommandParam)) { - //this.n参照中の難易度 = Convert.ToInt16( strCommandParam ); + if (!string.IsNullOrEmpty(strCommandParam)) { + //this.n参照中の難易度 = Convert.ToInt16( strCommandParam ); this.n参照中の難易度 = this.strConvertCourse(strCommandParam); } - } else if (strCommandName.Equals("HEADSCROLL")) { - //新定義:初期スクロール速度設定(というよりこのシステムに合わせるには必須。) - //どうしても一番最初に1小節挿入されるから、こうするしかなかったんだ___ - + } else if (strCommandName.Equals("HEADSCROLL")) { + //新定義:初期スクロール速度設定(というよりこのシステムに合わせるには必須。) + //どうしても一番最初に1小節挿入されるから、こうするしかなかったんだ___ + this.dbScrollSpeed = Convert.ToDouble(strCommandParam); - this.listSCROLL.Add(this.n内部番号SCROLL1to, new CSCROLL() { n内部番号 = this.n内部番号SCROLL1to, n表記上の番号 = 0, dbSCROLL値 = this.dbScrollSpeed, }); - - - //チップ追加して割り込んでみる。 + this.listSCROLL.Add(this.n内部番号SCROLL1to, new CSCROLL() { n内部番号 = this.n内部番号SCROLL1to, n表記上の番号 = 0, dbSCROLL値 = this.dbScrollSpeed, }); + + + //チップ追加して割り込んでみる。 var chip = new CChip(); - chip.nチャンネル番号 = 0x9D; + chip.nChannelNo = 0x9D; chip.n発声位置 = ((this.n現在の小節数 - 2) * 384); chip.n整数値 = 0x00; chip.n整数値_内部番号 = this.n内部番号SCROLL1to; - chip.dbSCROLL = this.dbScrollSpeed; - - // チップを配置。 - + chip.dbSCROLL = this.dbScrollSpeed; + + // チップを配置。 + this.listChip.Add(chip); - this.n内部番号SCROLL1to++; - - //this.nScoreDiff = Convert.ToInt16( strCommandParam ); - //tbScoreDiff.Text = strCommandParam; - } else if (strCommandName.Equals("GENRE")) { - //2015.03.28 kairera0467 - //ジャンルの定義。DTXから入力もできるが、tjaからも入力できるようにする。 - //日本語名だと選曲画面でバグが出るので、そこもどうにかしていく予定。 - + this.n内部番号SCROLL1to++; + + //this.nScoreDiff = Convert.ToInt16( strCommandParam ); + //tbScoreDiff.Text = strCommandParam; + } else if (strCommandName.Equals("GENRE")) { + //2015.03.28 kairera0467 + //ジャンルの定義。DTXから入力もできるが、tjaからも入力できるようにする。 + //日本語名だと選曲画面でバグが出るので、そこもどうにかしていく予定。 + if (!string.IsNullOrEmpty(strCommandParam)) { this.GENRE = strCommandParam; } @@ -6070,9 +5633,9 @@ internal class CDTX : CActivity { if (!string.IsNullOrEmpty(strCommandParam)) { this.scenePreset = strCommandParam; } - } else if (strCommandName.Equals("DEMOSTART")) { - //2015.04.10 kairera0467 - + } else if (strCommandName.Equals("DEMOSTART")) { + //2015.04.10 kairera0467 + if (!string.IsNullOrEmpty(strCommandParam)) { int nOFFSETms; try { @@ -6084,10 +5647,10 @@ internal class CDTX : CActivity { this.nデモBGMオフセット = nOFFSETms; } - } else if (strCommandName.Equals("BGMOVIE")) { - //2016.02.02 kairera0467 - //背景動画の定義。DTXから入力もできるが、tjaからも入力できるようにする。 - + } else if (strCommandName.Equals("BGMOVIE")) { + //2016.02.02 kairera0467 + //背景動画の定義。DTXから入力もできるが、tjaからも入力できるようにする。 + if (!string.IsNullOrEmpty(strCommandParam)) { this.strBGVIDEO_PATH = CDTXCompanionFileFinder.FindFileName(this.strフォルダ名, strファイル名, strCommandParam); @@ -6112,10 +5675,10 @@ internal class CDTX : CActivity { if (this.listVD.ContainsKey(1)) this.listVD.Remove(1); } - } else if (strCommandName.Contains("BGA")) { - //2016.02.02 kairera0467 - //背景動画の定義。DTXから入力もできるが、tjaからも入力できるようにする。 - + } else if (strCommandName.Contains("BGA")) { + //2016.02.02 kairera0467 + //背景動画の定義。DTXから入力もできるが、tjaからも入力できるようにする。 + string videoPath = ""; if (!string.IsNullOrEmpty(strCommandParam)) { videoPath = @@ -6140,13 +5703,13 @@ internal class CDTX : CActivity { if (this.listVD.ContainsKey(1)) this.listVD.Remove(1); } - } else if (strCommandName.Equals("BGIMAGE")) { - //2016.02.02 kairera0467 + } else if (strCommandName.Equals("BGIMAGE")) { + //2016.02.02 kairera0467 if (!string.IsNullOrEmpty(strCommandParam)) { this.strBGIMAGE_PATH = strCommandParam; } - } else if (strCommandName.Equals("HIDDENBRANCH")) { - //2016.04.01 kairera0467 パラメーターは + } else if (strCommandName.Equals("HIDDENBRANCH")) { + //2016.04.01 kairera0467 パラメーターは if (!string.IsNullOrEmpty(strCommandParam)) { this.bHIDDENBRANCH = true; } @@ -6186,7 +5749,7 @@ internal class CDTX : CActivity { strFilePath[index] = this.strフォルダ名 + strFiles[index]; if (File.Exists(strFilePath[index])) { try { - if (OpenTaiko.r現在のステージ.eStageID == CStage.EStage.SongLoading)//起動時に重たくなってしまう問題の修正用 + if (OpenTaiko.r現在のステージ.eStageID == CStage.EStage.SongLoading)//起動時に重たくなってしまう問題の修正用 this.LyricFileParser(strFilePath[index], index); this.bLyrics = true; this.usingLyricsFile = true; @@ -6198,11 +5761,11 @@ internal class CDTX : CActivity { } } } - if (this.nScoreModeTmp == 99) { - //2017.01.28 DD + if (this.nScoreModeTmp == 99) { + //2017.01.28 DD this.nScoreModeTmp = OpenTaiko.ConfigIni.nScoreMode; } - } + } /// /// 指定した文字が数値かを返すメソッド /// @@ -6213,8 +5776,8 @@ internal class CDTX : CActivity { return true; else return false; - } - + } + /// /// string型からint型に変換する。 /// TJAP2から持ってきた。 @@ -6223,12 +5786,12 @@ internal class CDTX : CActivity { return (NotesManager.GetNoteValueFromChar(str)); } - private int strConvertCourse(string str) { - //2016.08.24 kairera0467 - //正規表現を使っているため、easyでもEASYでもOK。 - - // 小文字大文字区別しない正規表現で仮対応。 (AioiLight) - // 相変わらず原始的なやり方だが、正常に動作した。 + private int strConvertCourse(string str) { + //2016.08.24 kairera0467 + //正規表現を使っているため、easyでもEASYでもOK。 + + // 小文字大文字区別しない正規表現で仮対応。 (AioiLight) + // 相変わらず原始的なやり方だが、正常に動作した。 string[] Matchptn = new string[7] { "easy", "normal", "hard", "oni", "edit", "tower", "dan" }; for (int i = 0; i < Matchptn.Length; i++) { if (Regex.IsMatch(str, Matchptn[i], RegexOptions.IgnoreCase)) { @@ -6254,14 +5817,14 @@ internal class CDTX : CActivity { default: return 3; } - } - + } + /// /// Lyricファイルのパースもどき /// 自力で作ったので、うまくパースしてくれないかも /// /// lrcファイルのパス - private void LyricFileParser(string strFilePath, int ordnumber)//lrcファイルのパース用 + private void LyricFileParser(string strFilePath, int ordnumber)//lrcファイルのパース用 { string str = CJudgeTextEncoding.ReadTextFile(strFilePath); var strSplit後 = str.Split(this.dlmtEnter, StringSplitOptions.RemoveEmptyEntries); @@ -6300,9 +5863,9 @@ internal class CDTX : CActivity { } } } - } - - + } + + /// /// 複素数のパースもどき /// @@ -6312,10 +5875,10 @@ internal class CDTX : CActivity { dbScroll[1] = cpx[1]; } - private void tSetSenotes() { + private void tSetSenotes() { #region[ list作成 ] - //ひとまずチップだけのリストを作成しておく。 - List list音符のみのリスト; + //ひとまずチップだけのリストを作成しておく。 + List list音符のみのリスト; list音符のみのリスト = new List(); int nCount = 0; int dkdkCount = 0; @@ -6324,12 +5887,12 @@ internal class CDTX : CActivity { if (NotesManager.IsCommonNote(chip)) { list音符のみのリスト.Add(chip); } - } + } #endregion - - //時間判定は、「次のチップの発声時刻」から「現在(過去)のチップの発声時刻」で引く必要がある。 - //逆にしてしまうと計算がとてつもないことになるので注意。 - + + //時間判定は、「次のチップの発声時刻」から「現在(過去)のチップの発声時刻」で引く必要がある。 + //逆にしてしまうと計算がとてつもないことになるので注意。 + try { this.tSenotes_Core_V2(list音符のみのリスト, true); } catch (Exception ex) { @@ -6337,18 +5900,18 @@ internal class CDTX : CActivity { Trace.TraceError("例外が発生しましたが処理を継続します。 (b67473e4-1930-44f1-b320-4ead5786e74c)"); } - } - + } + /// /// 譜面分岐がある場合はこちらを使う /// - private void tSetSenotes_branch() { + private void tSetSenotes_branch() { #region[ list作成 ] - //ひとまずチップだけのリストを作成しておく。 - List list音符のみのリスト; - List list普通譜面のみのリスト; - List list玄人譜面のみのリスト; - List list達人譜面のみのリスト; + //ひとまずチップだけのリストを作成しておく。 + List list音符のみのリスト; + List list普通譜面のみのリスト; + List list玄人譜面のみのリスト; + List list達人譜面のみのリスト; list音符のみのリスト = new List(); list普通譜面のみのリスト = new List(); list玄人譜面のみのリスト = new List(); @@ -6360,7 +5923,7 @@ internal class CDTX : CActivity { if (NotesManager.IsCommonNote(chip)) { list音符のみのリスト.Add(chip); - switch (chip.nコース) { + switch (chip.nBranch) { case ECourse.eNormal: list普通譜面のみのリスト.Add(chip); break; @@ -6372,10 +5935,10 @@ internal class CDTX : CActivity { break; } } - } + } #endregion - - //forで処理。 + + //forで処理。 for (int n = 0; n < 3; n++) { switch (n) { case 0: @@ -6392,8 +5955,8 @@ internal class CDTX : CActivity { this.tSenotes_Core_V2(list音符のみのリスト, true); } - } - + } + /// /// コア部分Ver2。TJAP2から移植しただけ。 /// @@ -6417,7 +5980,7 @@ internal class CDTX : CActivity { time[j] = 1000000000; scroll[j] = 1.0; } else { - sort[j] = list音符のみのリスト[i + (j - 3)].nチャンネル番号; + sort[j] = list音符のみのリスト[i + (j - 3)].nChannelNo; time[j] = list音符のみのリスト[i + (j - 3)].fBMSCROLLTime; scroll[j] = list音符のみのリスト[i + (j - 3)].dbSCROLL; } @@ -6430,16 +5993,16 @@ internal class CDTX : CActivity { if (ignoreSENote && list音符のみのリスト[i].IsFixedSENote) continue; - switch (list音符のみのリスト[i].nチャンネル番号) { - case 0x11: - - //(左2より離れている|)_右2_右ドン_右右4_右右ドン… + switch (list音符のみのリスト[i].nChannelNo) { + case 0x11: + + //(左2より離れている|)_右2_右ドン_右右4_右右ドン… if ((time[DATA - 1] > 2/* || (sort[DATA-1] != 1 && time[DATA-1] >= 2 && time[DATA-2] >= 4 && time[DATA-3] <= 5)*/) && time[DATA + 1] == 2 && sort[DATA + 1] == 1 && time[DATA + 2] == 4 && sort[DATA + 2] == 0x11 && time[DATA + 3] == 6 && sort[DATA + 3] == 0x11) { list音符のみのリスト[i].nSenote = 1; doco_count = 1; break; - } - //ドコドコ中_左2_右2_右ドン + } + //ドコドコ中_左2_右2_右ドン else if (doco_count != 0 && time[DATA - 1] == 2 && time[DATA + 1] == 2 && (sort[DATA + 1] == 0x11 || sort[DATA + 1] == 0x11)) { if (doco_count % 2 == 0) list音符のみのリスト[i].nSenote = 1; @@ -6449,9 +6012,9 @@ internal class CDTX : CActivity { break; } else { doco_count = 0; - } - - //8分ドコドン + } + + //8分ドコドン if ((time[DATA - 2] >= 4.1 && time[DATA - 1] == 2 && time[DATA + 1] == 2 && time[DATA + 2] >= 4.1) && (sort[DATA - 1] == 0x11 && sort[DATA + 1] == 0x11)) { if (list音符のみのリスト[i].dbBPM >= 120.0) { list音符のみのリスト[i - 1].nSenote = 1; @@ -6464,45 +6027,45 @@ internal class CDTX : CActivity { list音符のみのリスト[i + 1].nSenote = 0; break; } - } - - //BPM120以下のみ - //8分間隔の「ドドド」→「ドンドンドン」 - + } + + //BPM120以下のみ + //8分間隔の「ドドド」→「ドンドンドン」 + if (time[DATA - 1] >= 2 && time[DATA + 1] >= 2) { if (list音符のみのリスト[i].dbBPM < 120.0) { list音符のみのリスト[i].nSenote = 0; break; } - } - - //ドコドコドン + } + + //ドコドコドン if (time[DATA - 3] >= 3.4 && time[DATA - 2] == 2 && time[DATA - 1] == 1 && time[DATA + 1] == 1 && time[DATA + 2] == 2 && time[DATA + 3] >= 3.4 && sort[DATA - 2] == 0x11 && sort[DATA - 1] == 0x11 && sort[DATA + 1] == 0x11 && sort[DATA + 2] == 0x11) { list音符のみのリスト[i - 2].nSenote = 1; list音符のみのリスト[i - 1].nSenote = 2; list音符のみのリスト[i + 0].nSenote = 1; list音符のみのリスト[i + 1].nSenote = 2; list音符のみのリスト[i + 2].nSenote = 0; - i += 2; - //break; - } - //ドコドン + i += 2; + //break; + } + //ドコドン else if (time[DATA - 2] >= 2.4 && time[DATA - 1] == 1 && time[DATA + 1] == 1 && time[DATA + 2] >= 2.4 && sort[DATA - 1] == 0x11 && sort[DATA + 1] == 0x11) { list音符のみのリスト[i].nSenote = 2; - } - //右の音符が2以上離れている + } + //右の音符が2以上離れている else if (time[DATA + 1] > 2) { list音符のみのリスト[i].nSenote = 0; - } - //右の音符が1.4以上_左の音符が1.4以内 + } + //右の音符が1.4以上_左の音符が1.4以内 else if (time[DATA + 1] >= 1.4 && time[DATA - 1] <= 1.4) { list音符のみのリスト[i].nSenote = 0; - } - //右の音符が2以上_右右の音符が3以内 + } + //右の音符が2以上_右右の音符が3以内 else if (time[DATA + 1] >= 2 && time[DATA + 2] <= 3) { list音符のみのリスト[i].nSenote = 0; - } - //右の音符が2以上_大音符 + } + //右の音符が2以上_大音符 else if (time[DATA + 1] >= 2 && (sort[DATA + 1] == 0x13 || sort[DATA + 1] == 0x14)) { list音符のみのリスト[i].nSenote = 0; } else { @@ -6510,30 +6073,30 @@ internal class CDTX : CActivity { } break; case 0x12: - doco_count = 0; - - //BPM120以下のみ - //8分間隔の「ドドド」→「ドンドンドン」 + doco_count = 0; + + //BPM120以下のみ + //8分間隔の「ドドド」→「ドンドンドン」 if (time[DATA - 1] == 2 && time[DATA + 1] == 2) { if (list音符のみのリスト[i - 1].dbBPM < 120.0 && list音符のみのリスト[i].dbBPM < 120.0 && list音符のみのリスト[i + 1].dbBPM < 120.0) { list音符のみのリスト[i].nSenote = 3; break; } - } - - //右の音符が2以上離れている + } + + //右の音符が2以上離れている if (time[DATA + 1] > 2) { list音符のみのリスト[i].nSenote = 3; - } - //右の音符が1.4以上_左の音符が1.4以内 + } + //右の音符が1.4以上_左の音符が1.4以内 else if (time[DATA + 1] >= 1.4 && time[DATA - 1] <= 1.4) { list音符のみのリスト[i].nSenote = 3; - } - //右の音符が2以上_右右の音符が3以内 + } + //右の音符が2以上_右右の音符が3以内 else if (time[DATA + 1] >= 2 && time[DATA + 2] <= 3) { list音符のみのリスト[i].nSenote = 3; - } - //右の音符が2以上_大音符 + } + //右の音符が2以上_大音符 else if (time[DATA + 1] >= 2 && (sort[DATA + 1] == 0x13 || sort[DATA + 1] == 0x14)) { list音符のみのリスト[i].nSenote = 3; } else { @@ -6545,14 +6108,14 @@ internal class CDTX : CActivity { break; } } - } - + } + /// /// サウンドミキサーにサウンドを登録_削除する時刻を事前に算出する /// public void PlanToAddMixerChannel() { - if (OpenTaiko.SoundManager.GetCurrentSoundDeviceType() == "DirectSound") // DShowでの再生の場合はミキシング負荷が高くないため、 - { // チップのライフタイム管理を行わない + if (OpenTaiko.SoundManager.GetCurrentSoundDeviceType() == "DirectSound") // DShowでの再生の場合はミキシング負荷が高くないため、 + { // チップのライフタイム管理を行わない return; } @@ -6561,33 +6124,33 @@ internal class CDTX : CActivity { List listRemoveTiming = new List(128); foreach (CChip pChip in listChip) { - switch (pChip.nチャンネル番号) { - // BGM, 演奏チャネル, 不可視サウンド, フィルインサウンド, 空打ち音はミキサー管理の対象 - // BGM: - case 0x01: - // Dr演奏チャネル - //case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: - // Gt演奏チャネル - //case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: - // Bs演奏チャネル - //case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: - // Dr不可視チップ - //case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: - //case 0x38: case 0x39: case 0x3A: - // Dr/Gt/Bs空打ち - //case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: - //case 0xB9: case 0xBA: case 0xBB: case 0xBC: - // フィルインサウンド - //case 0x1F: case 0x2F: case 0xAF: - // 自動演奏チップ - //case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: - //case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: case 0x79: - //case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: - //case 0x90: case 0x91: case 0x92: - + switch (pChip.nChannelNo) { + // BGM, 演奏チャネル, 不可視サウンド, フィルインサウンド, 空打ち音はミキサー管理の対象 + // BGM: + case 0x01: + // Dr演奏チャネル + //case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: + // Gt演奏チャネル + //case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: + // Bs演奏チャネル + //case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: + // Dr不可視チップ + //case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: + //case 0x38: case 0x39: case 0x3A: + // Dr/Gt/Bs空打ち + //case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: + //case 0xB9: case 0xBA: case 0xBB: case 0xBC: + // フィルインサウンド + //case 0x1F: case 0x2F: case 0xAF: + // 自動演奏チップ + //case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: + //case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: case 0x79: + //case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: + //case 0x90: case 0x91: case 0x92: + #region [ 発音1秒前のタイミングを算出 ] int n発音前余裕ms = 1000, n発音後余裕ms = 800; { - int ch = pChip.nチャンネル番号 >> 4; + int ch = pChip.nChannelNo >> 4; if (ch == 0x02 || ch == 0x0A) { n発音前余裕ms = 800; n発音前余裕ms = 500; @@ -6596,83 +6159,83 @@ internal class CDTX : CActivity { n発音前余裕ms = 200; n発音前余裕ms = 500; } - } + } #endregion #region [ 発音1秒前のタイミングを算出 ] int nAddMixer時刻ms, nAddMixer位置 = 0; t発声時刻msと発声位置を取得する(pChip.n発声時刻ms - n発音前余裕ms, out nAddMixer時刻ms, out nAddMixer位置); CChip c_AddMixer = new CChip() { - nチャンネル番号 = 0xDA, + nChannelNo = 0xDA, n整数値 = pChip.n整数値, n整数値_内部番号 = pChip.n整数値_内部番号, n発声時刻ms = nAddMixer時刻ms, n発声位置 = nAddMixer位置, b演奏終了後も再生が続くチップである = false }; - listAddMixerChannel.Add(c_AddMixer); + listAddMixerChannel.Add(c_AddMixer); #endregion - + int duration = 0; - if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CDTX.CWAV wc)) { + if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CTja.CWAV wc)) { double _db再生速度 = this.db再生速度; - duration = (wc.rSound[0] == null) ? 0 : (int)(wc.rSound[0].TotalPlayTime / _db再生速度); // #23664 durationに再生速度が加味されておらず、低速再生でBGMが途切れる問題を修正 (発声時刻msは、DTX読み込み時に再生速度加味済) + duration = (wc.rSound[0] == null) ? 0 : (int)(wc.rSound[0].TotalPlayTime / _db再生速度); // #23664 durationに再生速度が加味されておらず、低速再生でBGMが途切れる問題を修正 (発声時刻msは、DTX読み込み時に再生速度加味済) } int n新RemoveMixer時刻ms, n新RemoveMixer位置; t発声時刻msと発声位置を取得する(pChip.n発声時刻ms + duration + n発音後余裕ms, out n新RemoveMixer時刻ms, out n新RemoveMixer位置); - if (n新RemoveMixer時刻ms < pChip.n発声時刻ms + duration) // 曲の最後でサウンドが切れるような場合は + if (n新RemoveMixer時刻ms < pChip.n発声時刻ms + duration) // 曲の最後でサウンドが切れるような場合は { CChip c_AddMixer_noremove = c_AddMixer; c_AddMixer_noremove.b演奏終了後も再生が続くチップである = true; listAddMixerChannel[listAddMixerChannel.Count - 1] = c_AddMixer_noremove; break; - } - + } + #region [ 発音終了2秒後にmixerから削除するが、その前に再発音することになるのかを確認(再発音ならmixer削除タイミングを延期) ] int n整数値 = pChip.n整数値; int index = listRemoveTiming.FindIndex( delegate (CChip cchip) { return cchip.n整数値 == n整数値; } ); - if (index >= 0) // 過去に同じチップで発音中のものが見つかった場合 - { // 過去の発音のmixer削除を確定させるか、延期するかの2択。 + if (index >= 0) // 過去に同じチップで発音中のものが見つかった場合 + { // 過去の発音のmixer削除を確定させるか、延期するかの2択。 int n旧RemoveMixer時刻ms = listRemoveTiming[index].n発声時刻ms; int n旧RemoveMixer位置 = listRemoveTiming[index].n発声位置; - if (pChip.n発声時刻ms - n発音前余裕ms <= n旧RemoveMixer時刻ms) // mixer削除前に、同じ音の再発音がある場合は、 - { // mixer削除時刻を遅延させる(if-else後に行う) - //Debug.WriteLine( "remove TAIL of listAddMixerChannel. TAIL INDEX=" + listAddMixerChannel.Count ); - //DebugOut_CChipList( listAddMixerChannel ); - listAddMixerChannel.RemoveAt(listAddMixerChannel.Count - 1); // また、同じチップ音の「mixerへの再追加」は削除する - //Debug.WriteLine( "removed result:" ); - //DebugOut_CChipList( listAddMixerChannel ); - } else // 逆に、時間軸上、mixer削除後に再発音するような流れの場合は + if (pChip.n発声時刻ms - n発音前余裕ms <= n旧RemoveMixer時刻ms) // mixer削除前に、同じ音の再発音がある場合は、 + { // mixer削除時刻を遅延させる(if-else後に行う) + //Debug.WriteLine( "remove TAIL of listAddMixerChannel. TAIL INDEX=" + listAddMixerChannel.Count ); + //DebugOut_CChipList( listAddMixerChannel ); + listAddMixerChannel.RemoveAt(listAddMixerChannel.Count - 1); // また、同じチップ音の「mixerへの再追加」は削除する + //Debug.WriteLine( "removed result:" ); + //DebugOut_CChipList( listAddMixerChannel ); + } else // 逆に、時間軸上、mixer削除後に再発音するような流れの場合は { - listRemoveMixerChannel.Add(listRemoveTiming[index]); // mixer削除を確定させる - //Debug.WriteLine( "listRemoveMixerChannel:" ); - //DebugOut_CChipList( listRemoveMixerChannel ); - //listRemoveTiming.RemoveAt( index ); + listRemoveMixerChannel.Add(listRemoveTiming[index]); // mixer削除を確定させる + //Debug.WriteLine( "listRemoveMixerChannel:" ); + //DebugOut_CChipList( listRemoveMixerChannel ); + //listRemoveTiming.RemoveAt( index ); } - CChip c = new CChip() // mixer削除時刻を更新(遅延)する + CChip c = new CChip() // mixer削除時刻を更新(遅延)する { - nチャンネル番号 = 0xDB, + nChannelNo = 0xDB, n整数値 = listRemoveTiming[index].n整数値, n整数値_内部番号 = listRemoveTiming[index].n整数値_内部番号, n発声時刻ms = n新RemoveMixer時刻ms, n発声位置 = n新RemoveMixer位置 }; listRemoveTiming[index] = c; - } else // 過去に同じチップを発音していないor - { // 発音していたが既にmixer削除確定していたなら - CChip c = new CChip() // 新しくmixer削除候補として追加する + } else // 過去に同じチップを発音していないor + { // 発音していたが既にmixer削除確定していたなら + CChip c = new CChip() // 新しくmixer削除候補として追加する { - nチャンネル番号 = 0xDB, + nChannelNo = 0xDB, n整数値 = pChip.n整数値, n整数値_内部番号 = pChip.n整数値_内部番号, n発声時刻ms = n新RemoveMixer時刻ms, n発声位置 = n新RemoveMixer位置 }; listRemoveTiming.Add(c); - } + } #endregion break; } @@ -6685,29 +6248,29 @@ internal class CDTX : CActivity { } private void DebugOut_CChipList(List c) { for (int i = 0; i < c.Count; i++) { - Debug.WriteLine(i + ": ch=" + c[i].nチャンネル番号.ToString("x2") + ", WAV番号=" + c[i].n整数値 + ", time=" + c[i].n発声時刻ms); + Debug.WriteLine(i + ": ch=" + c[i].nChannelNo.ToString("x2") + ", WAV番号=" + c[i].n整数値 + ", time=" + c[i].n発声時刻ms); } } - private bool t発声時刻msと発声位置を取得する(int n希望発声時刻ms, out int n新発声時刻ms, out int n新発声位置) { - // 発声時刻msから発声位置を逆算することはできないため、近似計算する。 - // 具体的には、希望発声位置前後の2つのチップの発声位置の中間を取る。 - + private bool t発声時刻msと発声位置を取得する(int n希望発声時刻ms, out int n新発声時刻ms, out int n新発声位置) { + // 発声時刻msから発声位置を逆算することはできないため、近似計算する。 + // 具体的には、希望発声位置前後の2つのチップの発声位置の中間を取る。 + if (n希望発声時刻ms < 0) { n希望発声時刻ms = 0; } int index_min = -1, index_max = -1; - for (int i = 0; i < listChip.Count; i++) // 希望発声位置前後の「前」の方のチップを検索 + for (int i = 0; i < listChip.Count; i++) // 希望発声位置前後の「前」の方のチップを検索 { if (listChip[i].n発声時刻ms >= n希望発声時刻ms) { index_min = i; break; } } - if (index_min < 0) // 希望発声時刻に至らずに曲が終了してしまう場合 - { - // listの最終項目の時刻をそのまま使用する - //___のではダメ。BGMが尻切れになる。 - // そこで、listの最終項目の発声時刻msと発生位置から、希望発声時刻に相当する希望発声位置を比例計算して求める。 + if (index_min < 0) // 希望発声時刻に至らずに曲が終了してしまう場合 + { + // listの最終項目の時刻をそのまま使用する + //___のではダメ。BGMが尻切れになる。 + // そこで、listの最終項目の発声時刻msと発生位置から、希望発声時刻に相当する希望発声位置を比例計算して求める。 n新発声時刻ms = listChip[listChip.Count - 1].n発声時刻ms; n新発声位置 = listChip[listChip.Count - 1].n発声位置; return false; @@ -6723,22 +6286,22 @@ internal class CDTX : CActivity { } public void SwapGuitarBassInfos() { - } - - // SwapGuitarBassInfos_AutoFlags()は、CDTXからCConfigIniに移動。 - - // CActivity 実装 + } + + // SwapGuitarBassInfos_AutoFlags()は、CDTXからCConfigIniに移動。 + + // CActivity 実装 private CCachedFontRenderer pf歌詞フォント; public override void Activate() { - if (OpenTaiko.r現在のステージ.eStageID == CStage.EStage.SongLoading) { - //まさかこれが原因で曲の読み込みが停止するとは思わなかった... - //どういうことかというとスキンを読み込むときに...いや厳密には - //RefleshSkinを呼び出した後一回Disposeしてnullにして解放(その後にまたインスタンスを作成する)するんだけど - //その時にここでTJAPlayer3.Skinを参照して例外が出ていたんだ.... - //いやいや! なんでTJAPlayer3.Skinをnullにした瞬間に参照されるんだ!と思った方もいるかもしれないですが - //実は曲の読み込みはマルチスレッドで実行されているのでnullにした瞬間に参照される可能性も十分にある - //それならアプリが終了するんじゃないかと思ったのだけどtryを使ってい曲の読み込みを続行していた... - //いやーマルチスレッドって難しいね! + if (OpenTaiko.r現在のステージ.eStageID == CStage.EStage.SongLoading) { + //まさかこれが原因で曲の読み込みが停止するとは思わなかった... + //どういうことかというとスキンを読み込むときに...いや厳密には + //RefleshSkinを呼び出した後一回Disposeしてnullにして解放(その後にまたインスタンスを作成する)するんだけど + //その時にここでTJAPlayer3.Skinを参照して例外が出ていたんだ.... + //いやいや! なんでTJAPlayer3.Skinをnullにした瞬間に参照されるんだ!と思った方もいるかもしれないですが + //実は曲の読み込みはマルチスレッドで実行されているのでnullにした瞬間に参照される可能性も十分にある + //それならアプリが終了するんじゃないかと思ったのだけどtryを使ってい曲の読み込みを続行していた... + //いやーマルチスレッドって難しいね! if (!string.IsNullOrEmpty(OpenTaiko.Skin.Game_Lyric_FontName)) { this.pf歌詞フォント = new CCachedFontRenderer(OpenTaiko.Skin.Game_Lyric_FontName, OpenTaiko.Skin.Game_Lyric_FontSize); } else { @@ -6896,12 +6459,12 @@ internal class CDTX : CActivity { OpenTaiko.tDisposeSafely(ref this.pf歌詞フォント); base.ReleaseManagedResource(); } - } - - // その他 - + } + + // その他 + #region [ private ] - //----------------- + //----------------- /// /// GDAチャンネル番号に対応するDTXチャンネル番号。 /// @@ -6910,7 +6473,7 @@ internal class CDTX : CActivity { public string strGDAのチャンネル文字列; public int nDTXのチャンネル番号; - public STGDAPARAM(string strGDAのチャンネル文字列, int nDTXのチャンネル番号) // 2011.1.1 yyagi 構造体のコンストラクタ追加(初期化簡易化のため) + public STGDAPARAM(string strGDAのチャンネル文字列, int nDTXのチャンネル番号) // 2011.1.1 yyagi 構造体のコンストラクタ追加(初期化簡易化のため) { this.strGDAのチャンネル文字列 = strGDAのチャンネル文字列; this.nDTXのチャンネル番号 = nDTXのチャンネル番号; @@ -6924,8 +6487,8 @@ internal class CDTX : CActivity { private int n現在の行数; private int n現在の乱数; - private int nPolyphonicSounds = 4; // #28228 2012.5.1 yyagi - + private int nPolyphonicSounds = 4; // #28228 2012.5.1 yyagi + private int n内部番号BPM1to; private int n内部番号SCROLL1to; private int n内部番号JSCROLL1to; @@ -6953,15 +6516,15 @@ internal class CDTX : CActivity { int nCommentPos = strText.IndexOf("//"); if (nCommentPos != -1) strText = strText.Remove(nCommentPos); - } - + } + /// /// 音源再生前の空白を追加するメソッド。 /// private void AddMusicPreTimeMs() { this.dbNowTime += OpenTaiko.ConfigIni.MusicPreTimeMs; this.dbNowBMScollTime += OpenTaiko.ConfigIni.MusicPreTimeMs * this.dbNowBPM / 15000; - } - //----------------- + } + //----------------- #endregion } diff --git a/OpenTaiko/src/Songs/TJA/CChip.cs b/OpenTaiko/src/Songs/TJA/CChip.cs new file mode 100644 index 00000000..7ce89b36 --- /dev/null +++ b/OpenTaiko/src/Songs/TJA/CChip.cs @@ -0,0 +1,354 @@ +using FDK; +using static OpenTaiko.CTja; + +namespace OpenTaiko; + +internal class CChip : IComparable, ICloneable { + public EScrollMode eScrollMode; + public bool bHit; + public bool bVisible = true; + public bool bHideBarLine = true; + public bool bProcessed = false; + public bool bShow; + public bool bShowRoll; + public bool bBranch = false; + public double dbChipSizeRatio = 1.0; + public double db実数値; + public double dbBPM; + public float fNow_Measure_s = 4.0f;//強制分岐のために追加.2020.04.21.akasoko26 + public float fNow_Measure_m = 4.0f;//強制分岐のために追加.2020.04.21.akasoko26 + public bool IsEndedBranching = false;//分岐が終わった時の連打譜面が非可視化になってしまうためフラグを追加.2020.04.21.akasoko26 + public double dbSCROLL; + public double dbSCROLL_Y; + public ECourse nBranch; + public int nSenote; + public int nState; + public int nRollCount; + public int nBalloon; + public int nProcessTime; + public int nScrollDirection; + public int nDisplayPriority; //(特殊)現状連打との判断目的で使用 + public ENoteState eNoteState; + public int nChannelNo; + public int VideoStartTimeMs; + public int nHorizontalChipDistance; + public int nNoteTipDistance_X; + public int nNoteTipDistance_Y; + public int n整数値; + public int n文字数 = 16; + + public int n整数値_内部番号; + public int nOpacity = 255; + public int n発声位置; + public double nBranchCondition1_Professional; + public double nBranchCondition2_Master; + public EBranchConditionType eBranchCondition; + + public double db発声位置; // 発声時刻を格納していた変数のうちの1つをfloat型からdouble型に変更。(kairera0467) + public double fBMSCROLLTime; + public double fBMSCROLLTime_end; + public int n発声時刻ms; + public double n分岐時刻ms; + + + public double db発声時刻ms; + public int nNoteEndPosition; + public int nNoteEndTimems; + public int nノーツ出現時刻ms; + public int nノーツ移動開始時刻ms; + public int n分岐回数; + public int n連打音符State; + public int nLag; // 2011.2.1 yyagi + public double db発声時刻; + public double db判定終了時刻;//連打系音符で使用 + public double dbProcess_Time; + public int nPlayerSide; + public bool bGOGOTIME = false; //2018.03.11 k1airera0467 ゴーゴータイム内のチップであるか + public int nListPosition; + public bool IsFixedSENote; + public bool IsHitted = false; + public bool IsMissed = false; + + + + //EXTENDED COMMANDS + public int fCamTimeMs; + public string strCamEaseType; + public Easing.CalcType fCamMoveType; + + public float fCamScrollStartX; + public float fCamScrollStartY; + public float fCamScrollEndX; + public float fCamScrollEndY; + + public float fCamRotationStart; + public float fCamRotationEnd; + + public float fCamZoomStart; + public float fCamZoomEnd; + + public float fCamScaleStartX; + public float fCamScaleStartY; + public float fCamScaleEndX; + public float fCamScaleEndY; + + public Color4 borderColor; + + public int fObjTimeMs; + public string strObjName; + public string strObjEaseType; + public Easing.CalcType objCalcType; + + public float fObjX; + public float fObjY; + + public float fObjStart; + public float fObjEnd; + + public CSongObject obj; + + public string strTargetTxName; + public string strNewPath; + + public string strConfigValue; + + public double dbAnimInterval; + + public int intFrame; + + public EGameType eGameType; + // + + + public bool b自動再生音チャンネルである { + get { + int num = this.nChannelNo; + if ((((num != 1) && ((0x61 > num) || (num > 0x69))) && ((0x70 > num) || (num > 0x79))) && ((0x80 > num) || (num > 0x89))) { + return ((0x90 <= num) && (num <= 0x92)); + } + return true; + } + } + + + + public bool b演奏終了後も再生が続くチップである; // #32248 2013.10.14 yyagi + public CCounter RollDelay; // 18.9.22 AioiLight Add 連打時に赤くなるやつのタイマー + public CCounter RollInputTime; // 18.9.22 AioiLight Add 連打入力後、RollDelayが作動するまでのタイマー + public int RollEffectLevel; // 18.9.22 AioiLight Add 連打時に赤くなるやつの度合い + + public CChip() { + this.nHorizontalChipDistance = 0; + } + public void t初期化() { + this.bBranch = false; + this.nChannelNo = 0; + this.n整数値 = 0; //整数値をList上の番号として用いる。 + this.n整数値_内部番号 = 0; + this.db実数値 = 0.0; + this.n発声位置 = 0; + this.db発声位置 = 0.0D; + this.n発声時刻ms = 0; + this.db発声時刻ms = 0.0D; + this.fBMSCROLLTime = 0; + this.nNoteEndPosition = 0; + this.nNoteEndTimems = 0; + this.nDisplayPriority = 0; + this.nLag = -999; + this.b演奏終了後も再生が続くチップである = false; + this.nListPosition = 0; // Unused + this.dbChipSizeRatio = 1.0; // Unused + this.bHit = false; + this.IsMissed = false; + this.bVisible = true; + this.nOpacity = 0xff; + this.nHorizontalChipDistance = 0; + this.nNoteTipDistance_X = 0; + this.nNoteTipDistance_Y = 0; + this.dbBPM = 120.0; + this.fNow_Measure_m = 4.0f; + this.fNow_Measure_s = 4.0f; + this.nScrollDirection = 0; + this.dbSCROLL = 1.0; + this.dbSCROLL_Y = 0.0f; + } + public override string ToString() { + + //2016.10.07 kairera0467 近日中に再編成予定 + string[] chToStr = + { + //システム + "??", "バックコーラス", "小節長変更", "BPM変更", "??", "??", "??", "??", + "BPM変更(拡張)", "??", "??", "??", "??", "??", "??", "??", + + //太鼓1P(移動予定) + "??", "ドン", "カツ", "ドン(大)", "カツ(大)", "連打", "連打(大)", "ふうせん連打", + "連打終点", "芋", "ドン(手)", "カッ(手)", "Mine", "??", "??", "AD-LIB", + + //太鼓予備 + "??", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + + //太鼓予備 + "??", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + + //太鼓予備 + "??", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + + //システム + "小節線", "拍線", "??", "??", "AVI", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + + //システム(移動予定) + "SCROLL", "DELAY", "ゴーゴータイム開始", "ゴーゴータイム終了", "カメラ移動開始(縦)", "カメラ移動終了(縦)", "カメラ移動開始(横)", "カメラ移動終了(横)", + "カメラズーム開始", "カメラズーム終了", "カメラ回転開始", "カメラ回転終了", "カメラスケーリング開始(横)", "カメラスケーリング終了(横)", "カメラスケーリング開始(縦)", "カメラスケーリング終了(縦)", + + "ボーダーカラー変更", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + + "??", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + + //太鼓1P、システム(現行) + "??", "??", "??", "太鼓_赤", "太鼓_青", "太鼓_赤(大)", "太鼓_青(大)", "太鼓_黄", + "太鼓_黄(大)", "太鼓_風船", "太鼓_連打末端", "太鼓_芋", "??", "SCROLL", "ゴーゴータイム開始", "ゴーゴータイム終了", + + "??", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "太鼓 AD-LIB", + + "??", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + + "??", "??", "??", "??", "0xC4", "0xC5", "0xC6", "??", + "??", "??", "0xCA", "??", "??", "??", "??", "0xCF", + + //システム(現行) + "0xD0", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "ミキサー追加", "ミキサー削除", "DELAY", "譜面分岐リセット", "譜面分岐アニメ", "譜面分岐内部処理", + + //システム(現行) + "小節線ON/OFF", "分岐固定", "判定枠移動", "", "", "", "", "", + "", "", "", "", "", "", "", "", + + "0xF0", "歌詞", "??", "SUDDEN", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", "譜面終了", + + // Extra notes + + "KaDon", "??", "??", "??", "??", "??", "??", "??", + "??", "??", "??", "??", "??", "??", "??", "??", + }; + return string.Format("CChip: 位置:{0:D4}.{1:D3}, 時刻{2:D6}, Ch:{3:X2}({4}), Pn:{5}({11})(内部{6}), Pd:{7}, Sz:{8}, BMScroll:{9}, Auto:{10}, コース:{11}", + this.n発声位置 / 384, this.n発声位置 % 384, + this.n発声時刻ms, + this.nChannelNo, chToStr[this.nChannelNo], + this.n整数値, this.n整数値_内部番号, + this.db実数値, + this.dbChipSizeRatio, + this.fBMSCROLLTime, + this.b自動再生音チャンネルである, + this.nBranch, + CTja.tZZ(this.n整数値)); + } + /// + /// チップの再生長を取得する。現状、WAVチップとBGAチップでのみ使用可能。 + /// + /// 再生長(ms) + public int GetDuration() { + int nDuration = 0; + + if (this.nChannelNo == 0x01) // WAV + { + CTja.CWAV wc; + OpenTaiko.TJA.listWAV.TryGetValue(this.n整数値_内部番号, out wc); + if (wc == null) { + nDuration = 0; + } else { + nDuration = (wc.rSound[0] == null) ? 0 : wc.rSound[0].TotalPlayTime; + } + } else if (this.nChannelNo == 0x54) // AVI + { + CVideoDecoder wc; + OpenTaiko.TJA.listVD.TryGetValue(this.n整数値_内部番号, out wc); + if (wc == null) { + nDuration = 0; + } else { + nDuration = (int)(wc.Duration * 1000); + } + } + + double _db再生速度 = OpenTaiko.TJA.db再生速度; + return (int)(nDuration / _db再生速度); + } + + #region [ IComparable 実装 ] + //----------------- + + private static readonly byte[] n優先度 = new byte[] { + 5, 5, 3, 7, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, //0x00 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x10 + 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, //0x20 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x30 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x40 + 9, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x50 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x60 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x70 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x80 + 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9, //0x90 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xA0 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xB0 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xC0 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 4, 4, //0xD0 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xE0 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xF0 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0x100 + }; + + public int CompareTo(CChip other) { + // まずは位置で比較。 + + //BGMチップだけ発声位置 + //if( this.nチャンネル番号 == 0x01 || this.nチャンネル番号 == 0x02 ) + //{ + // if( this.n発声位置 < other.n発声位置 ) + // return -1; + + // if( this.n発声位置 > other.n発声位置 ) + // return 1; + //} + + //if( this.n発声位置 < other.n発声位置 ) + // return -1; + + //if( this.n発声位置 > other.n発声位置 ) + // return 1; + + //譜面解析メソッドV4では発声時刻msで比較する。 + var n発声時刻msCompareToResult = 0; + n発声時刻msCompareToResult = this.n発声時刻ms.CompareTo(other.n発声時刻ms); + if (n発声時刻msCompareToResult != 0) { + return n発声時刻msCompareToResult; + } + + n発声時刻msCompareToResult = this.db発声時刻ms.CompareTo(other.db発声時刻ms); + if (n発声時刻msCompareToResult != 0) { + return n発声時刻msCompareToResult; + } + + // 位置が同じなら優先度で比較。 + return n優先度[this.nChannelNo].CompareTo(n優先度[other.nChannelNo]); + } + //----------------- + #endregion + + + /// + /// shallow copy。 + /// + /// + public object Clone() { + return MemberwiseClone(); + } +} diff --git a/OpenTaiko/src/Songs/VTTParser.cs b/OpenTaiko/src/Songs/VTTParser.cs index 9ec6afbc..5d9b76e5 100644 --- a/OpenTaiko/src/Songs/VTTParser.cs +++ b/OpenTaiko/src/Songs/VTTParser.cs @@ -4,7 +4,7 @@ using System.Net; using System.Text.RegularExpressions; using FDK; using SkiaSharp; -using static OpenTaiko.CDTX; +using static OpenTaiko.CTja; namespace OpenTaiko; diff --git a/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs b/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs index 865561bd..87a4d52c 100644 --- a/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs +++ b/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs @@ -1249,7 +1249,7 @@ class TextureLoader { #endregion if (OpenTaiko.ConfigIni.PreAssetsLoading) { - foreach (var act in OpenTaiko.app.listトップレベルActivities) { + foreach (var act in OpenTaiko.app.listTopLevelActivities) { act.CreateManagedResource(); act.CreateUnmanagedResource(); } @@ -2268,7 +2268,7 @@ class TextureLoader { //if (TJAPlayer3.ConfigIni.PreAssetsLoading) { - foreach (var act in OpenTaiko.app.listトップレベルActivities) { + foreach (var act in OpenTaiko.app.listTopLevelActivities) { act.ReleaseManagedResource(); act.ReleaseUnmanagedResource(); } diff --git a/OpenTaiko/src/Stages/05.DaniSelect/CActSelect段位リスト.cs b/OpenTaiko/src/Stages/05.DaniSelect/CActSelect段位リスト.cs index 9f78b40f..d7327a30 100644 --- a/OpenTaiko/src/Stages/05.DaniSelect/CActSelect段位リスト.cs +++ b/OpenTaiko/src/Stages/05.DaniSelect/CActSelect段位リスト.cs @@ -255,7 +255,7 @@ class CActSelect段位リスト : CStage { public int[] n曲難易度; public int[] n曲レベル; public CSongListNode.ENodeType eノード種別; - public List List_DanSongs; + public List List_DanSongs; public CTexture txBarCenter; public CTexture txDanPlate; diff --git a/OpenTaiko/src/Stages/05.SongSelect/CActSelectPopupMenu.cs b/OpenTaiko/src/Stages/05.SongSelect/CActSelectPopupMenu.cs index 085931e9..83bb3256 100644 --- a/OpenTaiko/src/Stages/05.SongSelect/CActSelectPopupMenu.cs +++ b/OpenTaiko/src/Stages/05.SongSelect/CActSelectPopupMenu.cs @@ -35,7 +35,6 @@ internal class CActSelectPopupMenu : CActivity { } public virtual void tActivatePopupMenu(EInstrumentPad einst) { nItemSelecting = -1; // #24757 2011.4.1 yyagi: Clear sorting status in each stating menu. - this.eInst = einst; this.bIsActivePopupMenu = true; this.bIsSelectingIntItem = false; this.bGotoDetailConfig = false; @@ -242,20 +241,13 @@ internal class CActSelectPopupMenu : CActivity { #region [ キー入力: 決定 ] // E楽器パート eInst = E楽器パート.UNKNOWN; ESortAction eAction = ESortAction.END; - if (OpenTaiko.Pad.bPressed(EInstrumentPad.Guitar, EPad.Decide)) { - eInst = EInstrumentPad.Guitar; - eAction = ESortAction.Decide; - } else if (OpenTaiko.Pad.bPressed(EInstrumentPad.Bass, EPad.Decide)) { - eInst = EInstrumentPad.Bass; - eAction = ESortAction.Decide; - } else if ( - OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.Decide) // #24756 2011.4.1 yyagi: Add condition "Drum-Decide" to enable CY in Sort Menu. + if ( + OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.Decide) || OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.RD) || OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.LC) || OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.LRed) || OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.RRed) || (OpenTaiko.ConfigIni.bEnterIsNotUsedInKeyAssignments && OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return))) { - eInst = EInstrumentPad.Drums; eAction = ESortAction.Decide; } if (eAction == ESortAction.Decide) // 決定 @@ -371,7 +363,6 @@ internal class CActSelectPopupMenu : CActivity { protected bool bEsc有効; internal int n現在の選択行; - internal EInstrumentPad eInst = EInstrumentPad.Unknown; //private CTexture txPopupMenuBackground; //private CTexture txCursor; diff --git a/OpenTaiko/src/Stages/05.SongSelect/CActSelect曲リスト.cs b/OpenTaiko/src/Stages/05.SongSelect/CActSelect曲リスト.cs index 82e955f2..2cdfd236 100644 --- a/OpenTaiko/src/Stages/05.SongSelect/CActSelect曲リスト.cs +++ b/OpenTaiko/src/Stages/05.SongSelect/CActSelect曲リスト.cs @@ -1757,7 +1757,7 @@ internal class CActSelect曲リスト : CActivity { if (diff == 5) { var _sidet = OpenTaiko.Tx.SongSelect_Tower_Side; if (_sidet != null) { - var _side = (OpenTaiko.stageSongSelect.rNowSelectedSong.nSide == CDTX.ESide.eNormal) ? 0 : 1; + var _side = (OpenTaiko.stageSongSelect.rNowSelectedSong.nSide == CTja.ESide.eNormal) ? 0 : 1; var _sc = _sidet.sz画像サイズ.Width / 2; _sidet.t2D描画( OpenTaiko.Skin.SongSelect_Tower_Side[0], @@ -2261,7 +2261,7 @@ internal class CActSelect曲リスト : CActivity { public bool BoxCharaChanged; public int[] ar難易度; - public CDTX.ELevelIcon[] nLevelIcon; + public CTja.ELevelIcon[] nLevelIcon; public bool[] b分岐; public string strジャンル; public string strサブタイトル; @@ -2955,9 +2955,9 @@ internal class CActSelect曲リスト : CActivity { } } - public void tDisplayLevelIcon(int x, int y, CDTX.ELevelIcon icon, CTexture iconTex = null) { + public void tDisplayLevelIcon(int x, int y, CTja.ELevelIcon icon, CTexture iconTex = null) { var _tex = (iconTex != null) ? iconTex : OpenTaiko.Tx.SongSelect_Level_Number_Big_Icon; - if (icon != CDTX.ELevelIcon.eNone && + if (icon != CTja.ELevelIcon.eNone && _tex != null) { var __width = _tex.sz画像サイズ.Width / 3; var __height = _tex.sz画像サイズ.Height; @@ -2970,7 +2970,7 @@ internal class CActSelect曲リスト : CActivity { } } - private void t小文字表示(int x, int y, int num, int diff, CDTX.ELevelIcon icon) { + private void t小文字表示(int x, int y, int num, int diff, CTja.ELevelIcon icon) { int[] nums = CConversion.SeparateDigits(num); float[] icon_coords = new float[2] { -999, -999 }; for (int j = 0; j < nums.Length; j++) { diff --git a/OpenTaiko/src/Stages/05.SongSelect/CActSelect難易度選択画面.cs b/OpenTaiko/src/Stages/05.SongSelect/CActSelect難易度選択画面.cs index dcd8483a..3bbdff7a 100644 --- a/OpenTaiko/src/Stages/05.SongSelect/CActSelect難易度選択画面.cs +++ b/OpenTaiko/src/Stages/05.SongSelect/CActSelect難易度選択画面.cs @@ -527,7 +527,7 @@ internal class CActSelect難易度選択画面 : CActivity { } private STレベル数字[] st小文字位置 = new STレベル数字[10]; - private void t小文字表示(int num, float x, float y, int diff, CDTX.ELevelIcon icon) { + private void t小文字表示(int num, float x, float y, int diff, CTja.ELevelIcon icon) { int[] nums = CConversion.SeparateDigits(num); float[] icon_coords = new float[2] { -999, -999 }; for (int j = 0; j < nums.Length; j++) { diff --git a/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs b/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs index eb58fbd5..52476430 100644 --- a/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs +++ b/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs @@ -340,32 +340,32 @@ internal class CStage曲読み込み : CStage { TimeSpan span; str = OpenTaiko.stageSongSelect.r確定されたスコア.ファイル情報.ファイルの絶対パス; - if ((OpenTaiko.DTX != null) && OpenTaiko.DTX.IsActivated) - OpenTaiko.DTX.DeActivate(); + if ((OpenTaiko.TJA != null) && OpenTaiko.TJA.IsActivated) + OpenTaiko.TJA.DeActivate(); //if( CDTXMania.DTX == null ) { - OpenTaiko.DTX = new CDTX(str, false, 1.0, 0, 0, 0, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]); + OpenTaiko.TJA = new CTja(str, false, 1.0, 0, 0, 0, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]); if (OpenTaiko.ConfigIni.nPlayerCount >= 2) - OpenTaiko.DTX_2P = new CDTX(str, false, 1.0, 0, 0, 1, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[1]); + OpenTaiko.TJA_2P = new CTja(str, false, 1.0, 0, 0, 1, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[1]); if (OpenTaiko.ConfigIni.nPlayerCount >= 3) - OpenTaiko.DTX_3P = new CDTX(str, false, 1.0, 0, 0, 2, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[2]); + OpenTaiko.TJA_3P = new CTja(str, false, 1.0, 0, 0, 2, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[2]); if (OpenTaiko.ConfigIni.nPlayerCount >= 4) - OpenTaiko.DTX_4P = new CDTX(str, false, 1.0, 0, 0, 3, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[3]); + OpenTaiko.TJA_4P = new CTja(str, false, 1.0, 0, 0, 3, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[3]); if (OpenTaiko.ConfigIni.nPlayerCount >= 5) - OpenTaiko.DTX_5P = new CDTX(str, false, 1.0, 0, 0, 4, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[4]); + OpenTaiko.TJA_5P = new CTja(str, false, 1.0, 0, 0, 4, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[4]); - if (OpenTaiko.DTX.listErrors.Count != 0) { + if (OpenTaiko.TJA.listErrors.Count != 0) { string message = ""; - foreach (var text in OpenTaiko.DTX.listErrors) { + foreach (var text in OpenTaiko.TJA.listErrors) { OpenTaiko.VisualLogManager.PushCard(CVisualLogManager.ELogCardType.LogError, text); //System.Windows.Forms.MessageBox.Show(text, "譜面にエラーが見つかりました"); } } Trace.TraceInformation("---- Song information -----------------"); - Trace.TraceInformation("TITLE: {0}", OpenTaiko.DTX.TITLE.GetString("")); - Trace.TraceInformation("FILE: {0}", OpenTaiko.DTX.strファイル名の絶対パス); + Trace.TraceInformation("TITLE: {0}", OpenTaiko.TJA.TITLE.GetString("")); + Trace.TraceInformation("FILE: {0}", OpenTaiko.TJA.strファイル名の絶対パス); Trace.TraceInformation("---------------------------"); span = (TimeSpan)(DateTime.Now - timeBeginLoad); @@ -373,25 +373,25 @@ internal class CStage曲読み込み : CStage { // 段位認定モード用。 #region [dan setup] - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan && OpenTaiko.DTX.List_DanSongs != null) { + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan && OpenTaiko.TJA.List_DanSongs != null) { var titleForeColor = OpenTaiko.Skin.Game_DanC_Title_ForeColor; var titleBackColor = OpenTaiko.Skin.Game_DanC_Title_BackColor; var subtitleForeColor = OpenTaiko.Skin.Game_DanC_SubTitle_ForeColor; var subtitleBackColor = OpenTaiko.Skin.Game_DanC_SubTitle_BackColor; - for (int i = 0; i < OpenTaiko.DTX.List_DanSongs.Count; i++) { - if (!string.IsNullOrEmpty(OpenTaiko.DTX.List_DanSongs[i].Title)) { - using (var bmpSongTitle = pfDanTitle.DrawText(OpenTaiko.DTX.List_DanSongs[i].Title, titleForeColor, titleBackColor, null, 30)) { - OpenTaiko.DTX.List_DanSongs[i].TitleTex = OpenTaiko.tテクスチャの生成(bmpSongTitle, false); - OpenTaiko.DTX.List_DanSongs[i].TitleTex.vcScaleRatio.X = OpenTaiko.GetSongNameXScaling(ref OpenTaiko.DTX.List_DanSongs[i].TitleTex, OpenTaiko.Skin.Game_DanC_Title_MaxWidth); + for (int i = 0; i < OpenTaiko.TJA.List_DanSongs.Count; i++) { + if (!string.IsNullOrEmpty(OpenTaiko.TJA.List_DanSongs[i].Title)) { + using (var bmpSongTitle = pfDanTitle.DrawText(OpenTaiko.TJA.List_DanSongs[i].Title, titleForeColor, titleBackColor, null, 30)) { + OpenTaiko.TJA.List_DanSongs[i].TitleTex = OpenTaiko.tテクスチャの生成(bmpSongTitle, false); + OpenTaiko.TJA.List_DanSongs[i].TitleTex.vcScaleRatio.X = OpenTaiko.GetSongNameXScaling(ref OpenTaiko.TJA.List_DanSongs[i].TitleTex, OpenTaiko.Skin.Game_DanC_Title_MaxWidth); } } - if (!string.IsNullOrEmpty(OpenTaiko.DTX.List_DanSongs[i].SubTitle)) { - using (var bmpSongSubTitle = pfDanSubTitle.DrawText(OpenTaiko.DTX.List_DanSongs[i].SubTitle, subtitleForeColor, subtitleBackColor, null, 30)) { - OpenTaiko.DTX.List_DanSongs[i].SubTitleTex = OpenTaiko.tテクスチャの生成(bmpSongSubTitle, false); - OpenTaiko.DTX.List_DanSongs[i].SubTitleTex.vcScaleRatio.X = OpenTaiko.GetSongNameXScaling(ref OpenTaiko.DTX.List_DanSongs[i].SubTitleTex, OpenTaiko.Skin.Game_DanC_SubTitle_MaxWidth); + if (!string.IsNullOrEmpty(OpenTaiko.TJA.List_DanSongs[i].SubTitle)) { + using (var bmpSongSubTitle = pfDanSubTitle.DrawText(OpenTaiko.TJA.List_DanSongs[i].SubTitle, subtitleForeColor, subtitleBackColor, null, 30)) { + OpenTaiko.TJA.List_DanSongs[i].SubTitleTex = OpenTaiko.tテクスチャの生成(bmpSongSubTitle, false); + OpenTaiko.TJA.List_DanSongs[i].SubTitleTex.vcScaleRatio.X = OpenTaiko.GetSongNameXScaling(ref OpenTaiko.TJA.List_DanSongs[i].SubTitleTex, OpenTaiko.Skin.Game_DanC_SubTitle_MaxWidth); } } @@ -414,23 +414,23 @@ internal class CStage曲読み込み : CStage { case CStage.EPhase.SongLoading_LoadWAVFile: { int looptime = (OpenTaiko.ConfigIni.bEnableVSync) ? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする - for (int i = 0; i < looptime && nWAVcount <= OpenTaiko.DTX.listWAV.Count; i++) { - if (OpenTaiko.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi + for (int i = 0; i < looptime && nWAVcount <= OpenTaiko.TJA.listWAV.Count; i++) { + if (OpenTaiko.TJA.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi { - OpenTaiko.DTX.tWAVの読み込み(OpenTaiko.DTX.listWAV[nWAVcount]); + OpenTaiko.TJA.tWAVの読み込み(OpenTaiko.TJA.listWAV[nWAVcount]); } nWAVcount++; } - if (nWAVcount > OpenTaiko.DTX.listWAV.Count) { + if (nWAVcount > OpenTaiko.TJA.listWAV.Count) { TimeSpan span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV); - Trace.TraceInformation("Song loading time({0,4}): {1}", OpenTaiko.DTX.listWAV.Count, span.ToString()); + Trace.TraceInformation("Song loading time({0,4}): {1}", OpenTaiko.TJA.listWAV.Count, span.ToString()); timeBeginLoadWAV = DateTime.Now; if (OpenTaiko.ConfigIni.bDynamicBassMixerManagement) { - OpenTaiko.DTX.PlanToAddMixerChannel(); + OpenTaiko.TJA.PlanToAddMixerChannel(); } - var _dtx = new CDTX[5] { OpenTaiko.DTX, OpenTaiko.DTX_2P, OpenTaiko.DTX_3P, OpenTaiko.DTX_4P, OpenTaiko.DTX_5P }; + var _dtx = new CTja[5] { OpenTaiko.TJA, OpenTaiko.TJA_2P, OpenTaiko.TJA_3P, OpenTaiko.TJA_4P, OpenTaiko.TJA_5P }; for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { _dtx[i]?.tRandomizeTaikoChips(i); @@ -452,7 +452,7 @@ internal class CStage曲読み込み : CStage { DateTime timeBeginLoadBMPAVI = DateTime.Now; if (OpenTaiko.ConfigIni.bEnableAVI) - OpenTaiko.DTX.tAVIの読み込み(); + OpenTaiko.TJA.tAVIの読み込み(); span = (TimeSpan)(DateTime.Now - timeBeginLoadBMPAVI); span = (TimeSpan)(DateTime.Now - timeBeginLoad); diff --git a/OpenTaiko/src/Stages/07.Game/CActTaikoScrollSpeed.cs b/OpenTaiko/src/Stages/07.Game/CActTaikoScrollSpeed.cs new file mode 100644 index 00000000..f0f14b16 --- /dev/null +++ b/OpenTaiko/src/Stages/07.Game/CActTaikoScrollSpeed.cs @@ -0,0 +1,74 @@ +using FDK; + +namespace OpenTaiko; + +internal class CActTaikoScrollSpeed : CActivity { + // Properties + + public double[] dbConfigScrollSpeed = new double[5]; + + + // Constructor + + public CActTaikoScrollSpeed() { + base.IsDeActivated = true; + } + + + // CActivity implementation + + public override void Activate() { + for (int i = 0; i < 5; i++) { + this.dbConfigScrollSpeed[i] = (double)OpenTaiko.ConfigIni.nScrollSpeed[OpenTaiko.GetActualPlayer(i)]; + this.nScrollExclusiveTimer[i] = -1; + } + + + + base.Activate(); + } + public override unsafe int Draw() { + if (!base.IsDeActivated) { + if (base.IsFirstDraw) { + for (int i = 0; i < 5; i++) { + this.nScrollExclusiveTimer[i] = (long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed); + + } + + base.IsFirstDraw = false; + } + long nNowTime = SoundManager.PlayTimer.NowTime; + for (int i = 0; i < 5; i++) { + double dbScrollSpeed = (double)OpenTaiko.ConfigIni.nScrollSpeed[OpenTaiko.GetActualPlayer(i)]; + if (nNowTime < this.nScrollExclusiveTimer[i]) { + this.nScrollExclusiveTimer[i] = nNowTime; + } + while ((nNowTime - this.nScrollExclusiveTimer[i]) >= 2) // 1 loop per 2 ms + { + if (this.dbConfigScrollSpeed[i] < dbScrollSpeed) { + this.dbConfigScrollSpeed[i] += 0.012; + + if (this.dbConfigScrollSpeed[i] > dbScrollSpeed) { + this.dbConfigScrollSpeed[i] = dbScrollSpeed; + } + } else if (this.dbConfigScrollSpeed[i] > dbScrollSpeed) { + this.dbConfigScrollSpeed[i] -= 0.012; + + if (this.dbConfigScrollSpeed[i] < dbScrollSpeed) { + this.dbConfigScrollSpeed[i] = dbScrollSpeed; + } + } + this.nScrollExclusiveTimer[i] += 2; + } + } + } + return 0; + } + + + #region [ private ] + //----------------- + private long[] nScrollExclusiveTimer = new long[5]; + //----------------- + #endregion +} diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs index 84fa274a..2dfe12e7 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs @@ -6,7 +6,7 @@ namespace OpenTaiko; internal class CAct演奏Combo共通 : CActivity { // Properties - public STCOMBO n現在のコンボ数; + public STCOMBO nCurrentCombo; public struct STCOMBO { public CAct演奏Combo共通 act; @@ -141,7 +141,7 @@ internal class CAct演奏Combo共通 : CActivity { //protected CTexture txCOMBO太鼓; //protected CTexture txCOMBO太鼓_でかいやつ; //protected CTexture txコンボラメ; - public CCounter[] ctコンボ加算; + public CCounter[] ctComboAddCounter; public CCounter ctコンボラメ; protected float[,] nコンボ拡大率_座標 = new float[,]{ @@ -323,7 +323,7 @@ internal class CAct演奏Combo共通 : CActivity { int[] n位の数 = new int[10]; // 表示は10桁もあれば足りるだろう this.ctコンボラメ.TickLoop(); - this.ctコンボ加算[nPlayer].Tick(); + this.ctComboAddCounter[nPlayer].Tick(); #region [ nCombo値を桁数ごとに n位の数[] に格納する。(例:nCombo値=125 のとき n位の数 = { 5,2,1,0,0,0,0,0,0,0 } ) ] //----------------- @@ -454,7 +454,7 @@ internal class CAct演奏Combo共通 : CActivity { if (n桁数 <= 1) { if (OpenTaiko.Tx.Taiko_Combo[0] != null) { - var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale[this.ctコンボ加算[nPlayer].CurrentValue]; + var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale[this.ctComboAddCounter[nPlayer].CurrentValue]; OpenTaiko.Tx.Taiko_Combo[0].vcScaleRatio.Y = OpenTaiko.Skin.Game_Taiko_Combo_Scale[0] + yScalling; OpenTaiko.Tx.Taiko_Combo[0].vcScaleRatio.X = OpenTaiko.Skin.Game_Taiko_Combo_Scale[0]; OpenTaiko.Tx.Taiko_Combo[0].t2D拡大率考慮下中心基準描画(rightX, combo_y, new Rectangle(n位の数[i] * OpenTaiko.Skin.Game_Taiko_Combo_Size[0], 0, OpenTaiko.Skin.Game_Taiko_Combo_Size[0], OpenTaiko.Skin.Game_Taiko_Combo_Size[1])); @@ -463,14 +463,14 @@ internal class CAct演奏Combo共通 : CActivity { //int[] arComboX = { CDTXMania.Skin.Game_Taiko_Combo_X[nPlayer] + CDTXMania.Skin.Game_Taiko_Combo_Padding[0], CDTXMania.Skin.Game_Taiko_Combo_X[nPlayer] - CDTXMania.Skin.Game_Taiko_Combo_Padding[0] }; if (nCombo値 < 50) { if (OpenTaiko.Tx.Taiko_Combo[0] != null) { - var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale[this.ctコンボ加算[nPlayer].CurrentValue]; + var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale[this.ctComboAddCounter[nPlayer].CurrentValue]; OpenTaiko.Tx.Taiko_Combo[0].vcScaleRatio.Y = OpenTaiko.Skin.Game_Taiko_Combo_Scale[0] + yScalling; OpenTaiko.Tx.Taiko_Combo[0].vcScaleRatio.X = OpenTaiko.Skin.Game_Taiko_Combo_Scale[0]; OpenTaiko.Tx.Taiko_Combo[0].t2D拡大率考慮下中心基準描画(rightX - OpenTaiko.Skin.Game_Taiko_Combo_Padding[0] * i, combo_y, new Rectangle(n位の数[i] * OpenTaiko.Skin.Game_Taiko_Combo_Size[0], 0, OpenTaiko.Skin.Game_Taiko_Combo_Size[0], OpenTaiko.Skin.Game_Taiko_Combo_Size[1])); } } else { if (OpenTaiko.Tx.Taiko_Combo[2] != null) { - var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale[this.ctコンボ加算[nPlayer].CurrentValue]; + var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale[this.ctComboAddCounter[nPlayer].CurrentValue]; OpenTaiko.Tx.Taiko_Combo[2].vcScaleRatio.Y = OpenTaiko.Skin.Game_Taiko_Combo_Scale[0] + yScalling; OpenTaiko.Tx.Taiko_Combo[2].vcScaleRatio.X = OpenTaiko.Skin.Game_Taiko_Combo_Scale[0]; OpenTaiko.Tx.Taiko_Combo[2].t2D拡大率考慮下中心基準描画(rightX - OpenTaiko.Skin.Game_Taiko_Combo_Padding[0] * i, combo_y, new Rectangle(n位の数[i] * OpenTaiko.Skin.Game_Taiko_Combo_Size[0], 0, OpenTaiko.Skin.Game_Taiko_Combo_Size[0], OpenTaiko.Skin.Game_Taiko_Combo_Size[1])); @@ -480,32 +480,32 @@ internal class CAct演奏Combo共通 : CActivity { } } else if (n桁数 == 3) { if (nCombo値 >= 300 && OpenTaiko.Tx.Taiko_Combo[3] != null) { - var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 0]; + var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 0]; OpenTaiko.Tx.Taiko_Combo[3].vcScaleRatio.Y = OpenTaiko.Skin.Game_Taiko_Combo_Scale[1] + yScalling; OpenTaiko.Tx.Taiko_Combo[3].vcScaleRatio.X = OpenTaiko.Skin.Game_Taiko_Combo_Scale[1]; - var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 1] : 0; + var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 1] : 0; OpenTaiko.Tx.Taiko_Combo[3].t2D拡大率考慮下中心基準描画(rightX - OpenTaiko.Skin.Game_Taiko_Combo_Padding[1] * i, combo_ex_y + yJumping, new Rectangle(n位の数[i] * OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], 0, OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[1])); } else if (OpenTaiko.Tx.Taiko_Combo[1] != null) { - var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 0]; + var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 0]; OpenTaiko.Tx.Taiko_Combo[1].vcScaleRatio.Y = OpenTaiko.Skin.Game_Taiko_Combo_Scale[1] + yScalling; OpenTaiko.Tx.Taiko_Combo[1].vcScaleRatio.X = OpenTaiko.Skin.Game_Taiko_Combo_Scale[1]; - var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 1] : 0; + var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 1] : 0; OpenTaiko.Tx.Taiko_Combo[1].t2D拡大率考慮下中心基準描画(rightX - OpenTaiko.Skin.Game_Taiko_Combo_Padding[1] * i, combo_ex_y + yJumping, new Rectangle(n位の数[i] * OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], 0, OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[1])); } if (!OpenTaiko.ConfigIni.SimpleMode) showComboEffect(1, i, rightX, combo_ex_y, nPlayer); } else { if (nCombo値 >= 300 && OpenTaiko.Tx.Taiko_Combo[3] != null) { - var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 0]; + var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 0]; OpenTaiko.Tx.Taiko_Combo[3].vcScaleRatio.Y = 1.0f + yScalling; OpenTaiko.Tx.Taiko_Combo[3].vcScaleRatio.X = OpenTaiko.Skin.Game_Taiko_Combo_Scale[2]; - var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 1] : 0; + var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 1] : 0; OpenTaiko.Tx.Taiko_Combo[3].t2D拡大率考慮下中心基準描画(rightX - OpenTaiko.Skin.Game_Taiko_Combo_Padding[2] * i, combo_ex_y + yJumping, new Rectangle(n位の数[i] * OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], 0, OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[1])); } else if (OpenTaiko.Tx.Taiko_Combo[1] != null) { - var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 0]; + var yScalling = OpenTaiko.ConfigIni.SimpleMode ? 0 : ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 0]; OpenTaiko.Tx.Taiko_Combo[1].vcScaleRatio.Y = 1.0f + yScalling; OpenTaiko.Tx.Taiko_Combo[1].vcScaleRatio.X = OpenTaiko.Skin.Game_Taiko_Combo_Scale[2]; - var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctコンボ加算[nPlayer].CurrentValue, 1] : 0; + var yJumping = OpenTaiko.Skin.Game_Taiko_Combo_Ex_IsJumping ? (int)ComboScale_Ex[this.ctComboAddCounter[nPlayer].CurrentValue, 1] : 0; OpenTaiko.Tx.Taiko_Combo[1].t2D拡大率考慮下中心基準描画(rightX - OpenTaiko.Skin.Game_Taiko_Combo_Padding[2] * i, combo_ex_y + yJumping, new Rectangle(n位の数[i] * OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], 0, OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[0], OpenTaiko.Skin.Game_Taiko_Combo_Size_Ex[1])); } @@ -521,10 +521,10 @@ internal class CAct演奏Combo共通 : CActivity { // CActivity 実装 public override void Activate() { - this.n現在のコンボ数 = new STCOMBO() { act = this }; - this.n現在のコンボ数.最高値 = new int[5]; + this.nCurrentCombo = new STCOMBO() { act = this }; + this.nCurrentCombo.最高値 = new int[5]; this.status = new CSTATUS(); - this.ctコンボ加算 = new CCounter[5]; + this.ctComboAddCounter = new CCounter[5]; for (int i = 0; i < 5; i++) { this.status[i].e現在のモード = EMode.非表示中; this.status[i].nCOMBO値 = 0; @@ -534,7 +534,7 @@ internal class CAct演奏Combo共通 : CActivity { this.status[i].nジャンプインデックス値 = 99999; this.status[i].n前回の時刻_ジャンプ用 = -1; this.status[i].nコンボが切れた時刻 = -1; - this.ctコンボ加算[i] = new CCounter(0, 12, 12, OpenTaiko.Timer); + this.ctComboAddCounter[i] = new CCounter(0, 12, 12, OpenTaiko.Timer); } this.ctコンボラメ = new CCounter(0, 35, 16, OpenTaiko.Timer); base.Activate(); diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏Combo音声.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏Combo音声.cs index fbb7e3f9..d28c7233 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏Combo音声.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏Combo音声.cs @@ -10,7 +10,7 @@ internal class CAct演奏Combo音声 : CActivity { } // メソッド - public void t再生(int nCombo, int player) { + public void tPlay(int nCombo, int player) { if (VoiceIndex[player] < ListCombo[player].Count) { var index = ListCombo[player][VoiceIndex[player]]; diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs index 7ace5d3f..268a90f4 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs @@ -68,7 +68,7 @@ internal class CAct演奏PauseMenu : CActSelectPopupMenu { SoundManager.PlayTimer.Resume(); OpenTaiko.Timer.Resume(); - OpenTaiko.DTX.t全チップの再生再開(); + OpenTaiko.TJA.t全チップの再生再開(); OpenTaiko.stage演奏ドラム画面.actAVI.tPauseControl(); CActSelectPopupMenu.b選択した = true; this.tDeativatePopupMenu(); diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs index 71b50a5e..4c1fe26c 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs @@ -1,7 +1,7 @@ using FDK; -namespace OpenTaiko; - +namespace OpenTaiko; + /// /// CAct演奏Drumsゲージ と CAct演奏Gutiarゲージ のbaseクラス。ダメージ計算やDanger/Failed判断もこのクラスで行う。 /// @@ -9,18 +9,18 @@ namespace OpenTaiko; /// _STAGE FAILED OFF時にゲージ回復を止める /// _黒→閉店までの差を大きくする。 /// -internal class CAct演奏ゲージ共通 : CActivity { - // Properties - public CActLVLNFont actLVLNFont { get; protected set; } - - // コンストラクタ - public CAct演奏ゲージ共通() { - //actLVLNFont = new CActLVLNFont(); // On活性化()に移動 - //actLVLNFont.On活性化(); - } - - // CActivity 実装 - +internal class CAct演奏ゲージ共通 : CActivity { + // Properties + public CActLVLNFont actLVLNFont { get; protected set; } + + // コンストラクタ + public CAct演奏ゲージ共通() { + //actLVLNFont = new CActLVLNFont(); // On活性化()に移動 + //actLVLNFont.On活性化(); + } + + // CActivity 実装 + public override void Activate() { for (int i = 0; i < 3; i++) { dbゲージ増加量[i] = new float[5]; @@ -28,11 +28,11 @@ internal class CAct演奏ゲージ共通 : CActivity { dbゲージ増加量_Branch[i, n] = new float[5]; } } - this.DTX[0] = OpenTaiko.DTX; - this.DTX[1] = OpenTaiko.DTX_2P; - this.DTX[2] = OpenTaiko.DTX_3P; - this.DTX[3] = OpenTaiko.DTX_4P; - this.DTX[4] = OpenTaiko.DTX_5P; + this.DTX[0] = OpenTaiko.TJA; + this.DTX[1] = OpenTaiko.TJA_2P; + this.DTX[2] = OpenTaiko.TJA_3P; + this.DTX[3] = OpenTaiko.TJA_4P; + this.DTX[4] = OpenTaiko.TJA_5P; actLVLNFont = new CActLVLNFont(); actLVLNFont.Activate(); base.Activate(); @@ -49,29 +49,29 @@ internal class CAct演奏ゲージ共通 : CActivity { const double GAUGE_ZERO = 0.0; const double GAUGE_DANGER = 0.3; - public bool bRisky // Riskyモードか否か + public bool bRisky // Riskyモードか否か { get; private set; } - public int nRiskyTimes_Initial // Risky初期値 + public int nRiskyTimes_Initial // Risky初期値 { get; private set; } - public int nRiskyTimes // 残Miss回数 + public int nRiskyTimes // 残Miss回数 { get; private set; } - public bool IsFailed(EInstrumentPad part) // 閉店状態になったかどうか + public bool IsFailed(EInstrumentPad part) // 閉店状態になったかどうか { if (bRisky) { return (nRiskyTimes <= 0); } return this.db現在のゲージ値[(int)part] <= GAUGE_MIN; } - public bool IsDanger(EInstrumentPad part) // DANGERかどうか + public bool IsDanger(EInstrumentPad part) // DANGERかどうか { if (bRisky) { switch (nRiskyTimes_Initial) { @@ -85,15 +85,15 @@ internal class CAct演奏ゲージ共通 : CActivity { } } return (this.db現在のゲージ値[(int)part] <= GAUGE_DANGER); - } - + } + /// /// ゲージの初期化 /// /// Riskyの初期値(0でRisky未使用) - public void Init(int nRiskyTimes_InitialVal, int nPlayer) // ゲージ初期化 - { - //ダメージ値の計算 + public void Init(int nRiskyTimes_InitialVal, int nPlayer) // ゲージ初期化 + { + //ダメージ値の計算 { var chara = OpenTaiko.Tx.Characters[OpenTaiko.SaveFileInstances[OpenTaiko.GetActualPlayer(nPlayer)].data.Character]; switch (chara.effect.tGetGaugeType()) { @@ -106,9 +106,9 @@ internal class CAct演奏ゲージ共通 : CActivity { this.db現在のゲージ値[nPlayer] = 100; break; } - } - - //ゲージのMAXまでの最低コンボ数を計算 + } + + //ゲージのMAXまでの最低コンボ数を計算 float dbGaugeMaxComboValue = 0; float[] dbGaugeMaxComboValue_branch = new float[3]; @@ -149,10 +149,10 @@ internal class CAct演奏ゲージ共通 : CActivity { gaugeRate = this.fGaugeMaxRate[2]; dbDamageRate = 2.0f; break; - } - + } + #region [(Unbloated) Gauge max combo values] - + if (this.DTX[nPlayer].bチップがある.Branch) { dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (gaugeRate / 100.0f); for (int i = 0; i < 3; i++) { @@ -160,10 +160,10 @@ internal class CAct演奏ゲージ共通 : CActivity { } } else { dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (gaugeRate / 100.0f); - } - + } + #endregion - + float multiplicationFactor = 1f; if (nanidou == (int)Difficulty.Tower) multiplicationFactor = 0f; @@ -174,11 +174,11 @@ internal class CAct演奏ゲージ共通 : CActivity { nGaugeRankValue = (10000.0f / dbGaugeMaxComboValue) * multiplicationFactor; for (int i = 0; i < 3; i++) { nGaugeRankValue_branch[i] = (10000.0f / dbGaugeMaxComboValue_branch[i]) * multiplicationFactor; - } - - //ゲージ値計算 - //実機に近い計算 - + } + + //ゲージ値計算 + //実機に近い計算 + this.dbゲージ増加量[0][nPlayer] = (float)nGaugeRankValue / 100.0f; this.dbゲージ増加量[1][nPlayer] = (float)(nGaugeRankValue / 100.0f) * 0.5f; this.dbゲージ増加量[2][nPlayer] = (float)(nGaugeRankValue / 100.0f) * dbDamageRate; @@ -187,21 +187,21 @@ internal class CAct演奏ゲージ共通 : CActivity { this.dbゲージ増加量_Branch[i, 0][nPlayer] = (float)nGaugeRankValue_branch[i] / 100.0f; this.dbゲージ増加量_Branch[i, 1][nPlayer] = (float)(nGaugeRankValue_branch[i] / 100.0f) * 0.5f; this.dbゲージ増加量_Branch[i, 2][nPlayer] = (float)(nGaugeRankValue_branch[i] / 100.0f) * dbDamageRate; - } - - //this.dbゲージ増加量[ 0 ] = CDTXMania.DTX.bチップがある.Branch ? ( 130.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : ( 130.0 / CDTXMania.DTX.nノーツ数[ 3 ] ); - //this.dbゲージ増加量[ 1 ] = CDTXMania.DTX.bチップがある.Branch ? ( 65.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : 65.0 / CDTXMania.DTX.nノーツ数[ 3 ]; - //this.dbゲージ増加量[ 2 ] = CDTXMania.DTX.bチップがある.Branch ? ( -260.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : -260.0 / CDTXMania.DTX.nノーツ数[ 3 ]; - - //2015.03.26 kairera0467 計算を初期化時にするよう修正。 - + } + + //this.dbゲージ増加量[ 0 ] = CDTXMania.DTX.bチップがある.Branch ? ( 130.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : ( 130.0 / CDTXMania.DTX.nノーツ数[ 3 ] ); + //this.dbゲージ増加量[ 1 ] = CDTXMania.DTX.bチップがある.Branch ? ( 65.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : 65.0 / CDTXMania.DTX.nノーツ数[ 3 ]; + //this.dbゲージ増加量[ 2 ] = CDTXMania.DTX.bチップがある.Branch ? ( -260.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : -260.0 / CDTXMania.DTX.nノーツ数[ 3 ]; + + //2015.03.26 kairera0467 計算を初期化時にするよう修正。 + #region [ Handling infinity cases ] - float fIsDontInfinty = 0.4f;//適当に0.4で + float fIsDontInfinty = 0.4f;//適当に0.4で float[] fAddVolume = new float[] { 1.0f, 0.5f, dbDamageRate }; for (int i = 0; i < 3; i++) { for (int l = 0; l < 3; l++) { - if (!double.IsInfinity(nGaugeRankValue_branch[i] / 100.0f))//値がInfintyかチェック + if (!double.IsInfinity(nGaugeRankValue_branch[i] / 100.0f))//値がInfintyかチェック { fIsDontInfinty = (float)(nGaugeRankValue_branch[i] / 100.0f); this.dbゲージ増加量_Branch[i, l][nPlayer] = fIsDontInfinty * fAddVolume[l]; @@ -210,17 +210,17 @@ internal class CAct演奏ゲージ共通 : CActivity { } for (int i = 0; i < 3; i++) { for (int l = 0; l < 3; l++) { - if (double.IsInfinity(nGaugeRankValue_branch[i] / 100.0f))//値がInfintyかチェック - { - //Infintyだった場合はInfintyではない値 * 3.0をしてその値を利用する。 + if (double.IsInfinity(nGaugeRankValue_branch[i] / 100.0f))//値がInfintyかチェック + { + //Infintyだった場合はInfintyではない値 * 3.0をしてその値を利用する。 this.dbゲージ増加量_Branch[i, l][nPlayer] = (fIsDontInfinty * fAddVolume[l]) * 3f; } } - } + } #endregion - + #region [Rounding process] - + var increase = new float[] { dbゲージ増加量[0][nPlayer], dbゲージ増加量[1][nPlayer], dbゲージ増加量[2][nPlayer] }; var increaseBranch = new float[3, 3]; for (int i = 0; i < 3; i++) { @@ -230,8 +230,8 @@ internal class CAct演奏ゲージ共通 : CActivity { } switch (this.DTX[nPlayer].GaugeIncreaseMode) { case GaugeIncreaseMode.Normal: - case GaugeIncreaseMode.Floor: - // 切り捨て + case GaugeIncreaseMode.Floor: + // 切り捨て for (int i = 0; i < 3; i++) { increase[i] = (float)Math.Truncate(increase[i] * 10000.0f) / 10000.0f; } @@ -241,8 +241,8 @@ internal class CAct演奏ゲージ共通 : CActivity { increaseBranch[i, 2] = (float)Math.Truncate(increaseBranch[i, 2] * 10000.0f) / 10000.0f; } break; - case GaugeIncreaseMode.Round: - // 四捨五入 + case GaugeIncreaseMode.Round: + // 四捨五入 for (int i = 0; i < 3; i++) { increase[i] = (float)Math.Round(increase[i] * 10000.0f) / 10000.0f; } @@ -252,8 +252,8 @@ internal class CAct演奏ゲージ共通 : CActivity { increaseBranch[i, 2] = (float)Math.Round(increaseBranch[i, 2] * 10000.0f) / 10000.0f; } break; - case GaugeIncreaseMode.Ceiling: - // 切り上げ + case GaugeIncreaseMode.Ceiling: + // 切り上げ for (int i = 0; i < 3; i++) { increase[i] = (float)Math.Ceiling(increase[i] * 10000.0f) / 10000.0f; } @@ -264,8 +264,8 @@ internal class CAct演奏ゲージ共通 : CActivity { } break; case GaugeIncreaseMode.NotFix: - default: - // 丸めない + default: + // 丸めない break; } @@ -304,14 +304,14 @@ internal class CAct演奏ゲージ共通 : CActivity { dbゲージ増加量_Branch[i, 2][nPlayer] = increaseBranch[i, 2] * HGaugeMethods.ExtremeGaugeFillRatio; break; } - } + } #endregion - } - + } + #region [ DAMAGE ] #if true // DAMAGELEVELTUNING #region [ DAMAGELEVELTUNING ] - // ---------------------------------- + // ---------------------------------- public float[,] fDamageGaugeDelta = { // #23625 2011.1.10 ickw_284: tuned damage/recover factors // drums, guitar, bass { 0.004f, 0.006f, 0.006f, 0.004f }, @@ -324,9 +324,9 @@ internal class CAct演奏ゲージ共通 : CActivity { 0.5f, 1.0f, 1.5f }; - public float[][] dbゲージ増加量 = new float[3][]; - - //譜面レベル, 判定 + public float[][] dbゲージ増加量 = new float[3][]; + + //譜面レベル, 判定 public float[,][] dbゲージ増加量_Branch = new float[3, 3][]; @@ -338,14 +338,14 @@ internal class CAct演奏ゲージ共通 : CActivity { 78.5f, // 11 80.5f, // 12 82f, // 13+ - };//おおよその値。 - - // ---------------------------------- + };//おおよその値。 + + // ---------------------------------- #endregion #endif - - - + + + public void MineDamage(int nPlayer) { this.db現在のゲージ値[nPlayer] = Math.Max(0, this.db現在のゲージ値[nPlayer] - HGaugeMethods.BombDamage); } @@ -354,9 +354,9 @@ internal class CAct演奏ゲージ共通 : CActivity { this.db現在のゲージ値[nPlayer] = Math.Max(0, this.db現在のゲージ値[nPlayer] - HGaugeMethods.FuserollDamage); } - public void Damage(EInstrumentPad screenmode, EInstrumentPad part, ENoteJudge e今回の判定, int nPlayer) { + public void Damage(EInstrumentPad screenmode, ENoteJudge e今回の判定, int nPlayer) { float fDamage; - int nコース = (int)OpenTaiko.stage演奏ドラム画面.n現在のコース[nPlayer]; + int nコース = (int)OpenTaiko.stage演奏ドラム画面.nCurrentBranch[nPlayer]; switch (e今回の判定) { case ENoteJudge.Perfect: @@ -426,20 +426,20 @@ internal class CAct演奏ゲージ共通 : CActivity { if (this.db現在のゲージ値[nPlayer] >= 100.0) this.db現在のゲージ値[nPlayer] = 100.0; else if (this.db現在のゲージ値[nPlayer] <= 0.0) - this.db現在のゲージ値[nPlayer] = 0.0; - - - //CDTXMania.stage演奏ドラム画面.nGauge = fDamage; - + this.db現在のゲージ値[nPlayer] = 0.0; + + + //CDTXMania.stage演奏ドラム画面.nGauge = fDamage; + } public virtual void Start(int nLane, ENoteJudge judge, int player) { - } - - //----------------- + } + + //----------------- #endregion - - private CDTX[] DTX = new CDTX[5]; + + private CTja[] DTX = new CTja[5]; public double[] db現在のゲージ値 = new double[5]; protected CCounter ct炎; protected CCounter ct虹アニメ; diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏スクロール速度.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏スクロール速度.cs deleted file mode 100644 index 073a87bb..00000000 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏スクロール速度.cs +++ /dev/null @@ -1,78 +0,0 @@ -using FDK; - -namespace OpenTaiko; - -internal class CAct演奏スクロール速度 : CActivity { - // Properties - - public double[] db現在の譜面スクロール速度 = new double[5]; - - - // コンストラクタ - - public CAct演奏スクロール速度() { - base.IsDeActivated = true; - } - - - // CActivity 実装 - - public override void Activate() { - for (int i = 0; i < 5; i++) { - this.db現在の譜面スクロール速度[i] = (double)OpenTaiko.ConfigIni.nScrollSpeed[OpenTaiko.GetActualPlayer(i)]; - this.n速度変更制御タイマ[i] = -1; - } - - - - base.Activate(); - } - public override unsafe int Draw() { - if (!base.IsDeActivated) { - if (base.IsFirstDraw) { - //this.n速度変更制御タイマ.Drums = this.n速度変更制御タイマ.Guitar = this.n速度変更制御タイマ.Bass = (long)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)); - for (int i = 0; i < 5; i++) { - this.n速度変更制御タイマ[i] = (long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed); - - } - - base.IsFirstDraw = false; - } - long n現在時刻 = SoundManager.PlayTimer.NowTime; - for (int i = 0; i < 5; i++) { - double db譜面スクロールスピード = (double)OpenTaiko.ConfigIni.nScrollSpeed[OpenTaiko.GetActualPlayer(i)]; - if (n現在時刻 < this.n速度変更制御タイマ[i]) { - this.n速度変更制御タイマ[i] = n現在時刻; - } - while ((n現在時刻 - this.n速度変更制御タイマ[i]) >= 2) // 2msに1回ループ - { - if (this.db現在の譜面スクロール速度[i] < db譜面スクロールスピード) // Config.iniのスクロール速度を変えると、それに追いつくように実画面のスクロール速度を変える - { - this.db現在の譜面スクロール速度[i] += 0.012; - - if (this.db現在の譜面スクロール速度[i] > db譜面スクロールスピード) { - this.db現在の譜面スクロール速度[i] = db譜面スクロールスピード; - } - } else if (this.db現在の譜面スクロール速度[i] > db譜面スクロールスピード) { - this.db現在の譜面スクロール速度[i] -= 0.012; - - if (this.db現在の譜面スクロール速度[i] < db譜面スクロールスピード) { - this.db現在の譜面スクロール速度[i] = db譜面スクロールスピード; - } - } - this.n速度変更制御タイマ[i] += 2; - } - } - } - return 0; - } - - - // その他 - - #region [ private ] - //----------------- - private long[] n速度変更制御タイマ = new long[5]; - //----------------- - #endregion -} diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏スコア共通.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏スコア共通.cs index 3a02b945..28b62347 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏スコア共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏スコア共通.cs @@ -16,7 +16,7 @@ internal class CAct演奏スコア共通 : CActivity { protected CCounter ctTimer; public CCounter[] ct点数アニメタイマ; - public CCounter[] ctボーナス加算タイマ; + public CCounter[] ctBonusAddTimer; protected STスコア[] stScore; protected int nNowDisplayedAddScore; @@ -257,9 +257,9 @@ internal class CAct演奏スコア共通 : CActivity { for (int i = 0; i < 5; i++) { this.ct点数アニメタイマ[i] = new CCounter(); } - this.ctボーナス加算タイマ = new CCounter[5]; + this.ctBonusAddTimer = new CCounter[5]; for (int i = 0; i < 5; i++) { - this.ctボーナス加算タイマ[i] = new CCounter(); + this.ctBonusAddTimer[i] = new CCounter(); } base.Activate(); } diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏演奏情報.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏演奏情報.cs index 78cbe199..7605314a 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏演奏情報.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏演奏情報.cs @@ -22,18 +22,18 @@ internal class CAct演奏演奏情報 : CActivity { public override void Activate() { for (int i = 0; i < 5; i++) { NowMeasure[i] = 0; - this.dbBPM[i] = OpenTaiko.DTX.BASEBPM; + this.dbBPM[i] = OpenTaiko.TJA.BASEBPM; } this.dbSCROLL = 1.0; - _chipCounts[0] = OpenTaiko.DTX.listChip.Where(num => NotesManager.IsMissableNote(num)).Count(); - _chipCounts[1] = OpenTaiko.DTX.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count(); + _chipCounts[0] = OpenTaiko.TJA.listChip.Where(num => NotesManager.IsMissableNote(num)).Count(); + _chipCounts[1] = OpenTaiko.TJA.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count(); - NotesTextN = string.Format("NoteN: {0:####0}", OpenTaiko.DTX.nノーツ数_Branch[0]); - NotesTextE = string.Format("NoteE: {0:####0}", OpenTaiko.DTX.nノーツ数_Branch[1]); - NotesTextM = string.Format("NoteM: {0:####0}", OpenTaiko.DTX.nノーツ数_Branch[2]); - NotesTextC = string.Format("NoteC: {0:####0}", OpenTaiko.DTX.nノーツ数[3]); - ScoreModeText = string.Format("SCOREMODE: {0:####0}", OpenTaiko.DTX.nScoreModeTmp); + NotesTextN = string.Format("NoteN: {0:####0}", OpenTaiko.TJA.nノーツ数_Branch[0]); + NotesTextE = string.Format("NoteE: {0:####0}", OpenTaiko.TJA.nノーツ数_Branch[1]); + NotesTextM = string.Format("NoteM: {0:####0}", OpenTaiko.TJA.nノーツ数_Branch[2]); + NotesTextC = string.Format("NoteC: {0:####0}", OpenTaiko.TJA.nノーツ数[3]); + ScoreModeText = string.Format("SCOREMODE: {0:####0}", OpenTaiko.TJA.nScoreModeTmp); ListChipText = string.Format("ListChip: {0:####0}", _chipCounts[0]); ListChipMText = string.Format("ListChipM: {0:####0}", _chipCounts[1]); @@ -45,9 +45,9 @@ internal class CAct演奏演奏情報 : CActivity { public void t進行描画(int x, int y) { if (!base.IsDeActivated) { y += 0x153; - OpenTaiko.actTextConsole.Print(x, y, CTextConsole.EFontType.White, string.Format("Song/G. Offset:{0:####0}/{1:####0} ms", OpenTaiko.DTX.nBGMAdjust, OpenTaiko.ConfigIni.nGlobalOffsetMs)); + OpenTaiko.actTextConsole.Print(x, y, CTextConsole.EFontType.White, string.Format("Song/G. Offset:{0:####0}/{1:####0} ms", OpenTaiko.TJA.nBGMAdjust, OpenTaiko.ConfigIni.nGlobalOffsetMs)); y -= 0x10; - int num = (OpenTaiko.DTX.listChip.Count > 0) ? OpenTaiko.DTX.listChip[OpenTaiko.DTX.listChip.Count - 1].n発声時刻ms : 0; + int num = (OpenTaiko.TJA.listChip.Count > 0) ? OpenTaiko.TJA.listChip[OpenTaiko.TJA.listChip.Count - 1].n発声時刻ms : 0; string str = "Time: " + ((((double)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed)) / 1000.0)).ToString("####0.00") + " / " + ((((double)num) / 1000.0)).ToString("####0.00"); OpenTaiko.actTextConsole.Print(x, y, CTextConsole.EFontType.White, str); y -= 0x10; diff --git a/OpenTaiko/src/Stages/07.Game/CInvisibleChip.cs b/OpenTaiko/src/Stages/07.Game/CInvisibleChip.cs deleted file mode 100644 index 510a2881..00000000 --- a/OpenTaiko/src/Stages/07.Game/CInvisibleChip.cs +++ /dev/null @@ -1,168 +0,0 @@ -using FDK; - -namespace OpenTaiko; - -public class CInvisibleChip : IDisposable { - /// ミス後表示する時間(ms) - public int nDisplayTimeMs { - get; - set; - } - /// 表示期間終了後、フェードアウトする時間 - public int nFadeoutTimeMs { - get; - set; - } - /// 楽器ごとのInvisibleモード - public STDGBVALUE eInvisibleMode; - - - - #region [ コンストラクタ ] - public CInvisibleChip() { - Initialize(3000, 2000); - } - /// - /// コンストラクタ - /// - /// ミス時再表示する時間(秒) - /// 再表示後フェードアウトする時間(秒) - public CInvisibleChip(int _nDisplayTimeMs, int _nFadeoutTimeMs) { - Initialize(_nDisplayTimeMs, _nFadeoutTimeMs); - } - private void Initialize(int _nDisplayTimeMs, int _nFadeoutTimeMs) { - nDisplayTimeMs = _nDisplayTimeMs; - nFadeoutTimeMs = _nFadeoutTimeMs; - Reset(); - } - #endregion - - /// - /// 内部状態を初期化する - /// - public void Reset() { - for (int i = 0; i < 5; i++) { - ccounter[i] = new CCounter(); - b演奏チップが1つでもバーを通過した[i] = false; - } - } - - /// - /// まだSemi-Invisibleを開始していなければ、開始する - /// - /// - public void StartSemiInvisible(EInstrumentPad eInst) { - int nInst = (int)eInst; - if (!b演奏チップが1つでもバーを通過した[nInst]) { - b演奏チップが1つでもバーを通過した[nInst] = true; - if (this.eInvisibleMode[nInst] == EInvisible.Semi) { - ShowChipTemporally(eInst); - ccounter[nInst].CurrentValue = nDisplayTimeMs; - } - } - } - /// - /// 一時的にチップを表示するモードを開始する - /// - /// 楽器パート - public void ShowChipTemporally(EInstrumentPad eInst) { - ccounter[(int)eInst].Start(0, nDisplayTimeMs + nFadeoutTimeMs + 1, 1, OpenTaiko.Timer); - } - - /// - /// チップの表示/非表示の状態 - /// - public enum EChipInvisibleState { - SHOW, // Missなどしてチップを表示中 - FADEOUT, // 表示期間終了後、フェードアウト中 - INVISIBLE // 完全非表示 - } - - internal EChipInvisibleState SetInvisibleStatus(ref CDTX.CChip cc) { - if (cc.e楽器パート == EInstrumentPad.Unknown) { - return EChipInvisibleState.SHOW; - } - int nInst = (int)cc.e楽器パート; - EChipInvisibleState retcode = EChipInvisibleState.SHOW; - - ccounter[nInst].Tick(); - - switch (eInvisibleMode[nInst]) { - case EInvisible.Off: - cc.b可視 = true; - retcode = EChipInvisibleState.SHOW; - break; - - case EInvisible.Full: - cc.b可視 = false; - retcode = EChipInvisibleState.INVISIBLE; - break; - - case EInvisible.Semi: - if (!b演奏チップが1つでもバーを通過した[nInst]) // まだ1つもチップがバーを通過していない時は、チップを表示する - { - cc.b可視 = true; - cc.n透明度 = 255; - return EChipInvisibleState.SHOW; - } - - if (ccounter[nInst].CurrentValue <= 0 || ccounter[nInst].CurrentValue > nDisplayTimeMs + nFadeoutTimeMs) - // まだ一度もMissっていない or フェードアウトしきった後 - { - cc.b可視 = false; - cc.n透明度 = 255; - retcode = EChipInvisibleState.INVISIBLE; - } else if (ccounter[nInst].CurrentValue < nDisplayTimeMs) // 表示期間 - { - cc.b可視 = true; - cc.n透明度 = 255; - retcode = EChipInvisibleState.SHOW; - } else if (ccounter[nInst].CurrentValue < nDisplayTimeMs + nFadeoutTimeMs) // フェードアウト期間 - { - cc.b可視 = true; - cc.n透明度 = 255 - (int)(Convert.ToDouble(ccounter[nInst].CurrentValue - nDisplayTimeMs) / nFadeoutTimeMs * 255.0); - retcode = EChipInvisibleState.FADEOUT; - } - break; - default: - cc.b可視 = true; - cc.n透明度 = 255; - retcode = EChipInvisibleState.SHOW; - break; - } - return retcode; - } - - #region [ Dispose-Finalize パターン実装 ] - //----------------- - public void Dispose() { - this.Dispose(true); - GC.SuppressFinalize(this); - } - protected void Dispose(bool disposeManagedObjects) { - if (this.bDispose完了済み) - return; - - if (disposeManagedObjects) { - // (A) Managed リソースの解放 - for (int i = 0; i < 5; i++) { - // ctInvisibleTimer[ i ].Dispose(); - ccounter[i].Stop(); - ccounter[i] = null; - } - } - - // (B) Unamanaged リソースの解放 - - this.bDispose完了済み = true; - } - ~CInvisibleChip() { - this.Dispose(false); - } - //----------------- - #endregion - - private CCounter[] ccounter = new CCounter[5]; - private bool bDispose完了済み = false; - private bool[] b演奏チップが1つでもバーを通過した = new bool[5]; -} diff --git a/OpenTaiko/src/Stages/07.Game/CLagLogger.cs b/OpenTaiko/src/Stages/07.Game/CLagLogger.cs index 6da857ab..47fd3e7a 100644 --- a/OpenTaiko/src/Stages/07.Game/CLagLogger.cs +++ b/OpenTaiko/src/Stages/07.Game/CLagLogger.cs @@ -11,12 +11,12 @@ internal static class CLagLogger { private static readonly List LagValues = new List(2000); - public static void Add(int nPlayer, CDTX.CChip pChip) { + public static void Add(int nPlayer, CChip pChip) { if (nPlayer != 0) { return; } - switch (pChip.nチャンネル番号) { + switch (pChip.nChannelNo) { case 0x15: case 0x16: case 0x17: diff --git a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs index 9d208ad8..c2bf09e3 100755 --- a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs @@ -18,9 +18,9 @@ internal abstract class CStage演奏画面共通 : CStage { Drums = new CScoreIni.C演奏記録(); { - Drums.nGoodCount = OpenTaiko.ConfigIni.bAutoPlay[0] ? this.nヒット数_Auto含む.Drums.Perfect : this.nヒット数_Auto含まない.Drums.Perfect; - Drums.nOkCount = OpenTaiko.ConfigIni.bAutoPlay[0] ? this.nヒット数_Auto含む.Drums.Great : this.nヒット数_Auto含まない.Drums.Great; - Drums.nBadCount = OpenTaiko.ConfigIni.bAutoPlay[0] ? this.nヒット数_Auto含む.Drums.Miss : this.nヒット数_Auto含まない.Drums.Miss; + Drums.nGoodCount = OpenTaiko.ConfigIni.bAutoPlay[0] ? this.nHitCount_InclAuto.Drums.Perfect : this.nHitCount_ExclAuto.Drums.Perfect; + Drums.nOkCount = OpenTaiko.ConfigIni.bAutoPlay[0] ? this.nHitCount_InclAuto.Drums.Great : this.nHitCount_ExclAuto.Drums.Great; + Drums.nBadCount = OpenTaiko.ConfigIni.bAutoPlay[0] ? this.nHitCount_InclAuto.Drums.Miss : this.nHitCount_ExclAuto.Drums.Miss; var danC = OpenTaiko.stage演奏ドラム画面.actDan.GetExam(); for (int i = 0; i < danC.Length; i++) { @@ -38,8 +38,8 @@ internal abstract class CStage演奏画面共通 : CStage { public double[] nAddScoreNiji = new double[5]; public override void Activate() { - listChip = new List[5]; - List[] balloonChips = new List[5]; + listChip = new List[5]; + List[] balloonChips = new List[5]; for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { nNoteCount[i] = 0; nBalloonCount[i] = 0; @@ -48,19 +48,19 @@ internal abstract class CStage演奏画面共通 : CStage { switch (i) { case 0: - listChip[i] = OpenTaiko.DTX.listChip; + listChip[i] = OpenTaiko.TJA.listChip; break; case 1: - listChip[i] = OpenTaiko.DTX_2P.listChip; + listChip[i] = OpenTaiko.TJA_2P.listChip; break; case 2: - listChip[i] = OpenTaiko.DTX_3P.listChip; + listChip[i] = OpenTaiko.TJA_3P.listChip; break; case 3: - listChip[i] = OpenTaiko.DTX_4P.listChip; + listChip[i] = OpenTaiko.TJA_4P.listChip; break; case 4: - listChip[i] = OpenTaiko.DTX_5P.listChip; + listChip[i] = OpenTaiko.TJA_5P.listChip; break; } @@ -78,12 +78,12 @@ internal abstract class CStage演奏画面共通 : CStage { int n整数値管理 = 0; if (r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(0, i) != null) //2020.07.08 Mr-Ojii 未ヒットチップがないときの例外の発生回避 <-(KabanFriends)コード借りましたごめんなさい(´・ω・`) { - foreach (CDTX.CChip chip in listChip[i]) { - chip.nList上の位置 = n整数値管理; + foreach (CChip chip in listChip[i]) { + chip.nListPosition = n整数値管理; //if ((chip.nチャンネル番号 == 0x15 || chip.nチャンネル番号 == 0x16) && (n整数値管理 < this.listChip[i].Count - 1)) if ((NotesManager.IsRoll(chip) || NotesManager.IsFuzeRoll(chip)) && (n整数値管理 < this.listChip[i].Count - 1)) { if (chip.db発声時刻ms < r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(0, i).db発声時刻ms) { - chip.n描画優先度 = 1; + chip.nDisplayPriority = 1; } } n整数値管理++; @@ -92,22 +92,22 @@ internal abstract class CStage演奏画面共通 : CStage { } for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - CDTX _dtx = OpenTaiko.DTX; + CTja _dtx = OpenTaiko.TJA; switch (i) //2017.08.11 kairera0467 { case 0: break; case 1: - _dtx = OpenTaiko.DTX_2P; + _dtx = OpenTaiko.TJA_2P; break; case 2: - _dtx = OpenTaiko.DTX_3P; + _dtx = OpenTaiko.TJA_3P; break; case 3: - _dtx = OpenTaiko.DTX_4P; + _dtx = OpenTaiko.TJA_4P; break; case 4: - _dtx = OpenTaiko.DTX_5P; + _dtx = OpenTaiko.TJA_5P; break; default: break; @@ -124,10 +124,10 @@ internal abstract class CStage演奏画面共通 : CStage { 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; + chip.nChannelNo = 0x17; } } else if (!NotesManager.IsKusudama(chip2)) { - chip.nチャンネル番号 = 0x17; + chip.nChannelNo = 0x17; } } } @@ -184,13 +184,13 @@ internal abstract class CStage演奏画面共通 : CStage { var _chip = _list[k]; if (NotesManager.IsGenericBalloon(_chip)) { - var _duration = (_chip.nノーツ終了時刻ms - _chip.n発声時刻ms) / 1000.0; + var _duration = (_chip.nNoteEndTimems - _chip.n発声時刻ms) / 1000.0; var _expectedHits = (int)(_duration / 16.6f); _totalBalloons += Math.Min(_chip.nBalloon, _expectedHits); } if (NotesManager.IsRoll(_chip) || NotesManager.IsFuzeRoll(_chip)) - _totalRolls += (_chip.nノーツ終了時刻ms - _chip.n発声時刻ms) / 1000.0; + _totalRolls += (_chip.nNoteEndTimems - _chip.n発声時刻ms) / 1000.0; } nNoteCount[i] = _totalNotes; @@ -209,9 +209,9 @@ internal abstract class CStage演奏画面共通 : CStage { } - for (int index = OpenTaiko.DTX.listChip.Count - 1; index >= 0; index--) { - if (OpenTaiko.DTX.listChip[index].nチャンネル番号 == 0x01) { - this.bgmlength = OpenTaiko.DTX.listChip[index].GetDuration() + OpenTaiko.DTX.listChip[index].n発声時刻ms; + for (int index = OpenTaiko.TJA.listChip.Count - 1; index >= 0; index--) { + if (OpenTaiko.TJA.listChip[index].nChannelNo == 0x01) { + this.bgmlength = OpenTaiko.TJA.listChip[index].GetDuration() + OpenTaiko.TJA.listChip[index].n発声時刻ms; break; } } @@ -221,10 +221,10 @@ internal abstract class CStage演奏画面共通 : CStage { this.AIBattleSections = new List(); - CDTX.CChip endChip = null; + CChip endChip = null; for (int i = 0; i < listChip[0].Count; i++) { - CDTX.CChip chip = listChip[0][i]; - if (endChip == null || (chip.n発声時刻ms > endChip.n発声時刻ms && chip.nチャンネル番号 == 0x50)) { + CChip chip = listChip[0][i]; + if (endChip == null || (chip.n発声時刻ms > endChip.n発声時刻ms && chip.nChannelNo == 0x50)) { endChip = chip; } } @@ -243,7 +243,7 @@ internal abstract class CStage演奏画面共通 : CStage { int nowBattleSectionCount = 1; for (int i = 0; i < listChip[0].Count; i++) { - CDTX.CChip chip = listChip[0][i]; + CChip chip = listChip[0][i]; if (nowBattleSectionCount == battleSectionCount) { chip = endChip; @@ -281,27 +281,19 @@ internal abstract class CStage演奏画面共通 : CStage { ctChipAnimeLag[i] = new CCounter(); } - listWAV = OpenTaiko.DTX.listWAV; + listWAV = OpenTaiko.TJA.listWAV; this.eフェードアウト完了時の戻り値 = EGameplayScreenReturnValue.Continue; - this.n現在のトップChip = (listChip[0].Count > 0) ? 0 : -1; - this.L最後に再生したHHの実WAV番号 = new List(16); - this.n最後に再生したHHのチャンネル番号 = 0; - for (int i = 0; i < 50; i++) { - this.n最後に再生したBGMの実WAV番号[i] = -1; - } + this.nCurrentTopChip = (listChip[0].Count > 0) ? 0 : -1; + - cInvisibleChip = new CInvisibleChip(OpenTaiko.ConfigIni.nDisplayTimesMs, OpenTaiko.ConfigIni.nFadeoutTimeMs); for (int k = 0; k < 4; k++) { //for ( int n = 0; n < 5; n++ ) //{ - this.nヒット数_Auto含まない[k] = new CHITCOUNTOFRANK(); - this.nヒット数_Auto含む[k] = new CHITCOUNTOFRANK(); + this.nHitCount_ExclAuto[k] = new CHITCOUNTOFRANK(); + this.nHitCount_InclAuto[k] = new CHITCOUNTOFRANK(); //} this.r現在の歓声Chip[k] = null; - cInvisibleChip.eInvisibleMode[k] = OpenTaiko.ConfigIni.eInvisible[k]; - - this.bReverse[k] = OpenTaiko.ConfigIni.bReverse[k]; } @@ -311,15 +303,14 @@ internal abstract class CStage演奏画面共通 : CStage { this.b演奏にMIDI入力を使った = false; this.b演奏にマウスを使った = false; - cInvisibleChip.Reset(); base.Activate(); this.tパネル文字列の設定(); //this.演奏判定ライン座標(); this.bIsGOGOTIME = new bool[] { false, false, false, false, false }; this.bIsMiss = 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.nCurrentBranch = new CTja.ECourse[5]; + this.nNextBranch = new CTja.ECourse[5]; nCurrentKusudamaRollCount = 0; nCurrentKusudamaCount = 0; @@ -329,10 +320,10 @@ internal abstract class CStage演奏画面共通 : CStage { this.CChartScore[i] = new CBRANCHSCORE(); this.CSectionScore[i] = new CBRANCHSCORE(); - OpenTaiko.stage演奏ドラム画面.actMtaiko.After[i] = CDTX.ECourse.eNormal; - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[i].nAfter = CDTX.ECourse.eNormal; - OpenTaiko.stage演奏ドラム画面.actMtaiko.Before[i] = CDTX.ECourse.eNormal; - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[i].nBefore = CDTX.ECourse.eNormal; + OpenTaiko.stage演奏ドラム画面.actMtaiko.After[i] = CTja.ECourse.eNormal; + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[i].nAfter = CTja.ECourse.eNormal; + OpenTaiko.stage演奏ドラム画面.actMtaiko.Before[i] = CTja.ECourse.eNormal; + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[i].nBefore = CTja.ECourse.eNormal; } for (int i = 0; i < CBranchScore.Length; i++) { @@ -343,10 +334,10 @@ internal abstract class CStage演奏画面共通 : CStage { } - this.nレーン用表示コース = new CDTX.ECourse[5]; - this.b連打中 = new bool[] { false, false, false, false, false }; - this.n現在の連打数 = new int[] { 0, 0, 0, 0, 0 }; - this.n合計連打数 = new int[] { 0, 0, 0, 0, 0 }; + this.nDisplayedBranchLane = new CTja.ECourse[5]; + this.bCurrentlyDrumRoll = new bool[] { false, false, false, false, false }; + this.nCurrentRollCount = new int[] { 0, 0, 0, 0, 0 }; + this.nTotalRollCount = new int[] { 0, 0, 0, 0, 0 }; this.n分岐した回数 = new int[5]; this.Chara_MissCount = new int[5]; for (int i = 0; i < 2; i++) { @@ -379,20 +370,20 @@ internal abstract class CStage演奏画面共通 : CStage { bIsDirectSound = (OpenTaiko.SoundManager.GetCurrentSoundDeviceType() == "DirectSound"); bUseOSTimer = OpenTaiko.ConfigIni.bUseOSTimer; this.bPAUSE = false; - db再生速度 = OpenTaiko.ConfigIni.SongPlaybackSpeed; + dbSongPlaybackSpeed = OpenTaiko.ConfigIni.SongPlaybackSpeed; bValidScore = true; #region [ 演奏開始前にmixer登録しておくべきサウンド(開幕してすぐに鳴らすことになるチップ音)を登録しておく ] - foreach (CDTX.CChip pChip in listChip[0]) { + foreach (CChip pChip in listChip[0]) { // Debug.WriteLine( "CH=" + pChip.nチャンネル番号.ToString( "x2" ) + ", 整数値=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms ); if (pChip.n発声時刻ms <= 0) { - if (pChip.nチャンネル番号 == 0xDA) { + if (pChip.nChannelNo == 0xDA) { pChip.bHit = true; // Trace.TraceInformation( "first [DA] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms ); - if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CDTX.CWAV wc)) { + if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CTja.CWAV wc)) { for (int i = 0; i < nPolyphonicSounds; i++) { if (wc.rSound[i] != null) { - OpenTaiko.SoundManager.AddMixer(wc.rSound[i], db再生速度, pChip.b演奏終了後も再生が続くチップである); + OpenTaiko.SoundManager.AddMixer(wc.rSound[i], dbSongPlaybackSpeed, pChip.b演奏終了後も再生が続くチップである); //AddMixer( wc.rSound[ i ] ); // 最初はqueueを介さず直接ミキサー登録する } } @@ -406,12 +397,12 @@ internal abstract class CStage演奏画面共通 : CStage { // Note if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { - n良 = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; + nGood = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; nCombo = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; nHighestCombo = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; - n可 = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; - n不可 = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; - n連打 = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; + nOk = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; + nBad = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; + nRoll = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; nADLIB = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; nMine = new int[OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count]; } @@ -440,7 +431,7 @@ internal abstract class CStage演奏画面共通 : CStage { this.ListDan_Number = 0; this.IsDanFailed = false; - this.objHandlers = new Dictionary(); + this.objHandlers = new Dictionary(); this.t背景テクスチャの生成(); } @@ -457,7 +448,7 @@ internal abstract class CStage演奏画面共通 : CStage { public void ftDanReSetBranches(bool hasBranches) { this.tBranchReset(0); - OpenTaiko.stage演奏ドラム画面.nレーン用表示コース[0] = CDTX.ECourse.eNormal; + OpenTaiko.stage演奏ドラム画面.nDisplayedBranchLane[0] = CTja.ECourse.eNormal; OpenTaiko.stage演奏ドラム画面.bUseBranch[0] = hasBranches; // TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.b譜面分岐[(int)Difficulty.Dan] = hasBranches; @@ -466,8 +457,6 @@ internal abstract class CStage演奏画面共通 : CStage { public override void DeActivate() { this.bgmlength = 1; - this.L最後に再生したHHの実WAV番号.Clear(); // #23921 2011.1.4 yyagi - this.L最後に再生したHHの実WAV番号 = null; // this.ctチップ模様アニメ.Drums = null; this.ctチップ模様アニメ.Guitar = null; this.ctチップ模様アニメ.Bass = null; @@ -500,14 +489,12 @@ internal abstract class CStage演奏画面共通 : CStage { listChip = null; queueMixerSound.Clear(); queueMixerSound = null; - cInvisibleChip.Dispose(); - cInvisibleChip = null; // GCSettings.LatencyMode = this.gclatencymode; var meanLag = CLagLogger.LogAndReturnMeanLag(); this.actDan.IsAnimating = false;// IsAnimating=trueのときにそのまま選曲画面に戻ると、文字列が描画されない問題修正用。 - OpenTaiko.tテクスチャの解放(ref this.tx背景); + OpenTaiko.tテクスチャの解放(ref this.txBgImage); base.DeActivate(); } @@ -680,7 +667,7 @@ internal abstract class CStage演奏画面共通 : CStage { public CAct演奏演奏情報 actPlayInfo; public CAct演奏スコア共通 actScore; public CAct演奏ステージ失敗 actStageFailed; - protected CAct演奏スクロール速度 act譜面スクロール速度; + protected CActTaikoScrollSpeed actScrollSpeed; protected CActImplRoll actRoll; public CActImplBalloon actBalloon; public CActImplCharacter actChara; @@ -715,42 +702,36 @@ internal abstract class CStage演奏画面共通 : CStage { protected readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0, 9, 9 };// パッド画像のヒット処理用 // HH SD BD HT LT FT CY HHO RD LC LP LBD protected readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 9, 0, 8, 8 }; - public STDGBVALUE nヒット数_Auto含まない; - public STDGBVALUE nヒット数_Auto含む; + public STDGBVALUE nHitCount_ExclAuto; + public STDGBVALUE nHitCount_InclAuto; public bool ShowVideo; - public int[] n良; + public int[] nGood; public int[] nHighestCombo; public int[] nCombo; - public int[] n可; - public int[] n不可; - public int[] n連打; + public int[] nOk; + public int[] nBad; + public int[] nRoll; public int[] nADLIB; public int[] nMine; - public int n現在のトップChip = -1; - protected int[] n最後に再生したBGMの実WAV番号 = new int[50]; - protected int n最後に再生したHHのチャンネル番号; - protected List L最後に再生したHHの実WAV番号; // #23921 2011.1.4 yyagi: change "int" to "List", for recording multiple wav No. + public int nCurrentTopChip = -1; protected volatile Queue queueMixerSound; // #24820 2013.1.21 yyagi まずは単純にAdd/Removeを1個のキューでまとめて管理するやり方で設計する protected DateTime dtLastQueueOperation; // protected bool bIsDirectSound; // - protected double db再生速度; + protected double dbSongPlaybackSpeed; protected bool bValidScore; // protected bool bDTXVmode; protected STDGBVALUE bReverse; - protected STDGBVALUE r現在の歓声Chip; - protected CTexture txチップ; - protected CTexture txヒットバー; + protected STDGBVALUE r現在の歓声Chip; - protected CTexture tx背景; + protected CTexture txBgImage; // protected int nRisky_InitialVar, nRiskyTime; // #23559 2011.7.28 yyagi → CAct演奏ゲージ共通クラスに隠蔽 protected int nPolyphonicSounds; - protected List[] listChip = new List[5]; - protected Dictionary listWAV; - protected CInvisibleChip cInvisibleChip; + protected List[] listChip = new List[5]; + protected Dictionary listWAV; protected bool bUseOSTimer; public CBRANCHSCORE[] CBranchScore = new CBRANCHSCORE[6]; @@ -760,10 +741,10 @@ internal abstract class CStage演奏画面共通 : CStage { public bool[] bIsGOGOTIME = new bool[5]; public bool[] bIsMiss = new bool[5]; public bool[] bUseBranch = new bool[5]; - public CDTX.ECourse[] n現在のコース = new CDTX.ECourse[5]; //0:普通譜面 1:玄人譜面 2:達人譜面 - public CDTX.ECourse[] n次回のコース = new CDTX.ECourse[5]; - public CDTX.ECourse[] nレーン用表示コース = new CDTX.ECourse[5]; - protected bool[] b譜面分岐中 = new bool[] { false, false, false, false, false }; + public CTja.ECourse[] nCurrentBranch = new CTja.ECourse[5]; //0:普通譜面 1:玄人譜面 2:達人譜面 + public CTja.ECourse[] nNextBranch = new CTja.ECourse[5]; + public CTja.ECourse[] nDisplayedBranchLane = new CTja.ECourse[5]; + protected bool[] bBranchedChart = new bool[] { false, false, false, false, false }; protected int[] n分岐した回数 = new int[5]; protected int[] nJPOSSCROLL = new int[5]; @@ -772,10 +753,10 @@ internal abstract class CStage演奏画面共通 : CStage { protected int nListCount; private readonly int[] ShownLyric = new int[] { 0, 0 }; - public bool[] b連打中 = new bool[] { false, false, false, false, false }; //奥の手 - private int[] n合計連打数 = new int[5]; - protected int[] n風船残り = new int[5]; - protected int[] n現在の連打数 = new int[5]; + public bool[] bCurrentlyDrumRoll = new bool[] { false, false, false, false, false }; //奥の手 + private int[] nTotalRollCount = new int[5]; + protected int[] nBalloonRemaining = new int[5]; + protected int[] nCurrentRollCount = new int[5]; public int[] Chara_MissCount; protected ERollState eRollState; protected bool[] ifp = { false, false, false, false, false }; @@ -791,7 +772,7 @@ internal abstract class CStage演奏画面共通 : CStage { protected bool[] bSplitLane; - public CDTX.CChip[] chip現在処理中の連打チップ = new CDTX.CChip[5]; + public CChip[] chip現在処理中の連打チップ = new CChip[5]; protected const int NOTE_GAP = 25; public int nLoopCount_Clear; @@ -806,7 +787,7 @@ internal abstract class CStage演奏画面共通 : CStage { public int ListDan_Number; private bool IsDanFailed; private bool[] b強制分岐譜面 = new bool[5]; - private CDTX.E分岐種類 eBranch種類; + private CTja.EBranchConditionType eBranch種類; public double nBranch条件数値A; public double nBranch条件数値B; private readonly int[] NowProcessingChip = new int[] { 0, 0, 0, 0, 0 }; @@ -923,7 +904,7 @@ internal abstract class CStage演奏画面共通 : CStage { dtLastQueueOperation = dtnow; stmixer stm = queueMixerSound.Dequeue(); if (stm.bIsAdd) { - OpenTaiko.SoundManager.AddMixer(stm.csound, db再生速度, stm.b演奏終了後も再生が続くチップである); + OpenTaiko.SoundManager.AddMixer(stm.csound, dbSongPlaybackSpeed, stm.b演奏終了後も再生が続くチップである); } else { OpenTaiko.SoundManager.RemoveMixer(stm.csound); } @@ -934,7 +915,7 @@ internal abstract class CStage演奏画面共通 : CStage { - internal ENoteJudge e指定時刻からChipのJUDGEを返す(long nTime, CDTX.CChip pChip, int player = 0) { + internal ENoteJudge e指定時刻からChipのJUDGEを返す(long nTime, CChip pChip, int player = 0) { var e判定 = e指定時刻からChipのJUDGEを返すImpl(nTime, pChip, player); return e判定; } @@ -964,7 +945,7 @@ internal abstract class CStage演奏画面共通 : CStage { // Diff = Tower and SIDE is Normal if (diff == (int)Difficulty.Tower) { - _timingzonesAreEasy = OpenTaiko.stageSongSelect.rChoosenSong.nSide == CDTX.ESide.eNormal; + _timingzonesAreEasy = OpenTaiko.stageSongSelect.rChoosenSong.nSide == CTja.ESide.eNormal; } return _timingzonesAreEasy; @@ -987,18 +968,18 @@ internal abstract class CStage演奏画面共通 : CStage { this.nHighestCombo[danSong] = this.nCombo[danSong]; } - private ENoteJudge e指定時刻からChipのJUDGEを返すImpl(long nTime, CDTX.CChip pChip, int player = 0) { + private ENoteJudge e指定時刻からChipのJUDGEを返すImpl(long nTime, CChip pChip, int player = 0) { if (pChip != null) { 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); //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms)); if (NotesManager.IsRoll(pChip) || NotesManager.IsFuzeRoll(pChip)) { - if ((SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) > pChip.n発声時刻ms && (SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) < pChip.nノーツ終了時刻ms) { + if ((SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) > pChip.n発声時刻ms && (SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) < pChip.nNoteEndTimems) { return ENoteJudge.Perfect; } } else if (NotesManager.IsGenericBalloon(pChip)) { - if ((SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) >= pChip.n発声時刻ms - 17 && (SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) < pChip.nノーツ終了時刻ms) { + if ((SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) >= pChip.n発声時刻ms - 17 && (SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed) < pChip.nNoteEndTimems) { return ENoteJudge.Perfect; } } @@ -1026,22 +1007,22 @@ internal abstract class CStage演奏画面共通 : CStage { return ENoteJudge.Miss; } - protected CDTX.CChip r指定時刻に一番近い連打Chip_ヒット未済問わず不可視考慮(long nTime, int nChannel, int nInputAdjustTime, int nPlayer) { + protected CChip r指定時刻に一番近い連打Chip_ヒット未済問わず不可視考慮(long nTime, int nChannel, int nInputAdjustTime, int nPlayer) { //sw2.Start(); //Trace.TraceInformation( "NTime={0}, nChannel={1:x2}", nTime, nChannel ); nTime += nInputAdjustTime; // #24239 2011.1.23 yyagi InputAdjust int nIndex_InitialPositionSearchingToPast; - if (this.n現在のトップChip == -1) // 演奏データとして1個もチップがない場合は + if (this.nCurrentTopChip == -1) // 演奏データとして1個もチップがない場合は { //sw2.Stop(); return null; } - List playerListChip = listChip[nPlayer]; + List playerListChip = listChip[nPlayer]; int count = playerListChip.Count; - int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = this.n現在のトップChip; - if (this.n現在のトップChip >= count) // その時点で演奏すべきチップが既に全部無くなっていたら + int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = this.nCurrentTopChip; + if (this.nCurrentTopChip >= count) // その時点で演奏すべきチップが既に全部無くなっていたら { nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = count - 1; } @@ -1049,13 +1030,13 @@ internal abstract class CStage演奏画面共通 : CStage { //while ( nIndex_NearestChip_Future < count ) // 未来方向への検索 for (; nIndex_NearestChip_Future < count; nIndex_NearestChip_Future++) { if (((0x11 <= nChannel) && (nChannel <= 0x17)) || nChannel == 0x19) { - CDTX.CChip chip = playerListChip[nIndex_NearestChip_Future]; + CChip chip = playerListChip[nIndex_NearestChip_Future]; - if (chip.nチャンネル番号 == nChannel) { + if (chip.nChannelNo == nChannel) { if (chip.n発声時刻ms > nTime) { break; } - if (chip.nコース != this.n次回のコース[nPlayer]) { + if (chip.nBranch != this.nNextBranch[nPlayer]) { break; } nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future; @@ -1069,9 +1050,9 @@ internal abstract class CStage演奏画面共通 : CStage { //while ( nIndex_NearestChip_Past >= 0 ) // 過去方向への検索 for (; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past--) { if ((((0x15 <= nChannel) && (nChannel <= 0x17) || nChannel == 0x19) || (nChannel == 0x20 || nChannel == 0x21))) { - CDTX.CChip chip = playerListChip[nIndex_NearestChip_Past]; + CChip chip = playerListChip[nIndex_NearestChip_Past]; - if (((chip.nチャンネル番号 == nChannel))) { + if (((chip.nChannelNo == nChannel))) { break; } } @@ -1093,8 +1074,8 @@ internal abstract class CStage演奏画面共通 : CStage { return playerListChip[nIndex_NearestChip_Future]; } // 検索対象が過去未来の双方に見つかったなら、より近い方を採用する - CDTX.CChip nearestChip_Future = playerListChip[nIndex_NearestChip_Future]; - CDTX.CChip nearestChip_Past = playerListChip[nIndex_NearestChip_Past]; + CChip nearestChip_Future = playerListChip[nIndex_NearestChip_Future]; + CChip nearestChip_Past = playerListChip[nIndex_NearestChip_Past]; int nDiffTime_Future = Math.Abs((int)(nTime - nearestChip_Future.n発声時刻ms)); int nDiffTime_Past = Math.Abs((int)(nTime - nearestChip_Past.n発声時刻ms)); if (nDiffTime_Future >= nDiffTime_Past) { @@ -1104,9 +1085,9 @@ internal abstract class CStage演奏画面共通 : CStage { //sw2.Stop(); return nearestChip_Future; } - protected void tサウンド再生(CDTX.CChip pChip, int nPlayer) { + protected void tサウンド再生(CChip pChip, int nPlayer) { var _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; - int index = pChip.nチャンネル番号; + int index = pChip.nChannelNo; if (index == 0x11 || index == 0x13 || index == 0x1A || index == 0x101) { this.soundRed[pChip.nPlayerSide]?.PlayStart(); @@ -1131,17 +1112,17 @@ internal abstract class CStage演奏画面共通 : CStage { this.nHand[nPlayer] = 0; } - protected bool tRollProcess(CDTX.CChip pChip, double dbProcess_time, int num, int sort, int Input, int nPlayer) { - if (dbProcess_time >= pChip.n発声時刻ms && dbProcess_time < pChip.nノーツ終了時刻ms) { + protected bool tRollProcess(CChip pChip, double dbProcess_time, int num, int sort, int Input, int nPlayer) { + if (dbProcess_time >= pChip.n発声時刻ms && dbProcess_time < pChip.nNoteEndTimems) { if (pChip.nRollCount == 0) //連打カウントが0の時 { this.actRoll.b表示[nPlayer] = true; - this.n現在の連打数[nPlayer] = 0; + this.nCurrentRollCount[nPlayer] = 0; this.actRoll.t枠表示時間延長(nPlayer, true); } else { this.actRoll.t枠表示時間延長(nPlayer, false); } - this.b連打中[nPlayer] = true; + this.bCurrentlyDrumRoll[nPlayer] = true; if (this.actRoll.ct連打アニメ[nPlayer].IsUnEnded) { this.actRoll.ct連打アニメ[nPlayer] = new CCounter(0, 9, 14, OpenTaiko.Timer); this.actRoll.ct連打アニメ[nPlayer].CurrentValue = 1; @@ -1160,7 +1141,7 @@ internal abstract class CStage演奏画面共通 : CStage { pChip.RollDelay?.Stop(); } - if (pChip.nチャンネル番号 == 0x15) + if (pChip.nChannelNo == 0x15) this.eRollState = ERollState.Roll; else this.eRollState = ERollState.RollB; @@ -1168,15 +1149,15 @@ internal abstract class CStage演奏画面共通 : CStage { pChip.nRollCount++; if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.n連打[actDan.NowShowingNumber]++; + this.nRoll[actDan.NowShowingNumber]++; - this.n現在の連打数[nPlayer]++; + this.nCurrentRollCount[nPlayer]++; this.CBranchScore[nPlayer].nRoll++; this.CChartScore[nPlayer].nRoll++; this.CSectionScore[nPlayer].nRoll++; - this.n合計連打数[nPlayer]++; + this.nTotalRollCount[nPlayer]++; if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan) this.actRollChara.Start(nPlayer); @@ -1184,15 +1165,15 @@ internal abstract class CStage演奏画面共通 : CStage { if (!OpenTaiko.ConfigIni.ShinuchiMode) { // 旧配点・旧筐体配点 - if (OpenTaiko.DTX.nScoreModeTmp == 0 || OpenTaiko.DTX.nScoreModeTmp == 1) { - if (pChip.nチャンネル番号 == 0x15) + if (OpenTaiko.TJA.nScoreModeTmp == 0 || OpenTaiko.TJA.nScoreModeTmp == 1) { + if (pChip.nChannelNo == 0x15) nAddScore = 300L; else nAddScore = 360L; } // 新配点 else { - if (pChip.nチャンネル番号 == 0x15) + if (pChip.nChannelNo == 0x15) nAddScore = 100L; else nAddScore = 200L; @@ -1217,7 +1198,7 @@ internal abstract class CStage演奏画面共通 : CStage { if (sort == 0 || sort == 2) { this.soundRed[pChip.nPlayerSide]?.PlayStart(); - if (pChip.nチャンネル番号 == 0x15 || _gt == EGameType.Konga || (_gt == EGameType.Taiko && pChip.nチャンネル番号 == 0x21)) { + if (pChip.nChannelNo == 0x15 || _gt == EGameType.Konga || (_gt == EGameType.Taiko && pChip.nChannelNo == 0x21)) { //CDTXMania.Skin.soundRed.t再生する(); //CDTXMania.stage演奏ドラム画面.actChipFireTaiko.Start( 1, nPlayer ); OpenTaiko.stage演奏ドラム画面.FlyingNotes.Start(1, nPlayer, true); @@ -1229,7 +1210,7 @@ internal abstract class CStage演奏画面共通 : CStage { } else if (sort == 1 || sort == 3) { this.soundBlue[pChip.nPlayerSide]?.PlayStart(); - if (pChip.nチャンネル番号 == 0x15 || _gt == EGameType.Konga || (_gt == EGameType.Taiko && pChip.nチャンネル番号 == 0x21)) { + if (pChip.nChannelNo == 0x15 || _gt == EGameType.Konga || (_gt == EGameType.Taiko && pChip.nChannelNo == 0x21)) { //CDTXMania.Skin.soundBlue.t再生する(); //CDTXMania.stage演奏ドラム画面.actChipFireTaiko.Start( 2, nPlayer ); OpenTaiko.stage演奏ドラム画面.FlyingNotes.Start(2, nPlayer, true); @@ -1245,14 +1226,14 @@ internal abstract class CStage演奏画面共通 : CStage { //TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Hit); } else { - this.b連打中[nPlayer] = false; + this.bCurrentlyDrumRoll[nPlayer] = false; return true; } return false; } - protected bool tBalloonProcess(CDTX.CChip pChip, double dbProcess_time, int player) { + protected bool tBalloonProcess(CChip pChip, double dbProcess_time, int player) { //if( dbProcess_time >= pChip.n発声時刻ms && dbProcess_time < pChip.nノーツ終了時刻ms ) long nowTime = (long)(SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed); bool IsKusudama = NotesManager.IsKusudama(pChip); @@ -1268,13 +1249,13 @@ internal abstract class CStage演奏画面共通 : CStage { } if ((int)nowTime >= pChip.n発声時刻ms - && (int)nowTime <= pChip.nノーツ終了時刻ms) { + && (int)nowTime <= pChip.nNoteEndTimems) { if (IsKusudama) { if (nCurrentKusudamaCount > 0) { actChara.ChangeAnime(player, CActImplCharacter.Anime.Kusudama_Breaking, true); for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - this.b連打中[i] = true; + this.bCurrentlyDrumRoll[i] = true; if (this.actBalloon.ct風船アニメ[i].IsUnEnded) { @@ -1286,7 +1267,7 @@ internal abstract class CStage演奏画面共通 : CStage { } } } else { - this.b連打中[player] = true; + this.bCurrentlyDrumRoll[player] = true; actChara.ChangeAnime(player, CActImplCharacter.Anime.Balloon_Breaking, true); @@ -1306,21 +1287,21 @@ internal abstract class CStage演奏画面共通 : CStage { //pChip.nRollCount = nCurrentKusudamaRollCount; for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { pChip.nRollCount = nCurrentKusudamaRollCount; - this.n風船残り[i] = balloon - rollCount; + this.nBalloonRemaining[i] = balloon - rollCount; } } else { pChip.nRollCount++; rollCount = pChip.nRollCount; - this.n風船残り[player] = balloon - rollCount; + this.nBalloonRemaining[player] = balloon - rollCount; } if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.n連打[actDan.NowShowingNumber]++; + this.nRoll[actDan.NowShowingNumber]++; this.CBranchScore[player].nRoll++; this.CChartScore[player].nRoll++; this.CSectionScore[player].nRoll++; - this.n合計連打数[player]++; // 成績発表の連打数に風船を含めるように (AioiLight) + this.nTotalRollCount[player]++; // 成績発表の連打数に風船を含めるように (AioiLight) //分岐のための処理。実装してない。 @@ -1355,13 +1336,13 @@ internal abstract class CStage演奏画面共通 : CStage { this.soundRed[pChip.nPlayerSide]?.PlayStart(); - if (this.n風船残り[player] <= 0) { + if (this.nBalloonRemaining[player] <= 0) { if (IsKusudama) { OpenTaiko.Skin.soundKusudama.tPlay(); pChip.bHit = true; pChip.IsHitted = true; chip現在処理中の連打チップ[player].bHit = true; - pChip.b可視 = false; + pChip.bVisible = false; nCurrentKusudamaCount = 0; actBalloon.KusuBroke(); @@ -1381,7 +1362,7 @@ internal abstract class CStage演奏画面共通 : CStage { chip現在処理中の連打チップ[player].bHit = true; //this.b連打中 = false; //this.actChara.b風船連打中 = false; - pChip.b可視 = false; + pChip.bVisible = false; { actChara.ChangeAnime(player, CActImplCharacter.Anime.Balloon_Broke, true); if (actChara.CharaAction_Balloon_Delay[player] != null) actChara.CharaAction_Balloon_Delay[player] = new CCounter(0, OpenTaiko.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[player]] - 1, 1, OpenTaiko.Timer); @@ -1394,14 +1375,14 @@ internal abstract class CStage演奏画面共通 : CStage { for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { if (chip現在処理中の連打チップ[i] != null) chip現在処理中の連打チップ[i].bHit = true; - this.b連打中[i] = false; + this.bCurrentlyDrumRoll[i] = false; this.actChara.b風船連打中[i] = false; nCurrentKusudamaCount = 0; } } else { if (chip現在処理中の連打チップ[player] != null) chip現在処理中の連打チップ[player].bHit = true; - this.b連打中[player] = false; + this.bCurrentlyDrumRoll[player] = false; this.actChara.b風船連打中[player] = false; } return false; @@ -1409,12 +1390,12 @@ internal abstract class CStage演奏画面共通 : CStage { return true; } - protected abstract ENoteJudge tチップのヒット処理(long nHitTime, CDTX.CChip pChip, bool bCorrectLane); + protected abstract ENoteJudge tチップのヒット処理(long nHitTime, CChip pChip, bool bCorrectLane); - protected ENoteJudge tチップのヒット処理(long nHitTime, CDTX.CChip pChip, EInstrumentPad screenmode, bool bCorrectLane, int nNowInput) { + protected ENoteJudge tチップのヒット処理(long nHitTime, CChip pChip, EInstrumentPad screenmode, bool bCorrectLane, int nNowInput) { return tチップのヒット処理(nHitTime, pChip, screenmode, bCorrectLane, nNowInput, 0); } - protected unsafe ENoteJudge tチップのヒット処理(long nHitTime, CDTX.CChip pChip, EInstrumentPad screenmode, bool bCorrectLane, int nNowInput, int nPlayer, bool rollEffectHit = false) { + protected unsafe ENoteJudge tチップのヒット処理(long nHitTime, CChip pChip, EInstrumentPad screenmode, bool bCorrectLane, int nNowInput, int nPlayer, bool rollEffectHit = false) { //unsafeコードにつき、デバッグ中の変更厳禁! bool bAutoPlay = OpenTaiko.ConfigIni.bAutoPlay[nPlayer]; @@ -1426,7 +1407,7 @@ internal abstract class CStage演奏画面共通 : CStage { break; } - if (!pChip.b可視) + if (!pChip.bVisible) return ENoteJudge.Auto; if (!NotesManager.IsGenericRoll(pChip)) { @@ -1438,209 +1419,196 @@ internal abstract class CStage演奏画面共通 : CStage { } ENoteJudge eJudgeResult = ENoteJudge.Auto; - switch (pChip.e楽器パート) { - case EInstrumentPad.Drums: - case EInstrumentPad.Guitar: - case EInstrumentPad.Bass: - break; - case EInstrumentPad.Taiko: { - //連打が短すぎると発声されない - eJudgeResult = (bCorrectLane) ? this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nPlayer) : ENoteJudge.Miss; + { + //連打が短すぎると発声されない + eJudgeResult = (bCorrectLane) ? this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nPlayer) : ENoteJudge.Miss; - // AI judges - eJudgeResult = AlterJudgement(nPlayer, eJudgeResult, true); + // AI judges + eJudgeResult = AlterJudgement(nPlayer, eJudgeResult, true); - if (!bAutoPlay && eJudgeResult != ENoteJudge.Miss) { - CLagLogger.Add(nPlayer, pChip); - } + if (!bAutoPlay && eJudgeResult != ENoteJudge.Miss) { + CLagLogger.Add(nPlayer, pChip); + } - var puchichara = OpenTaiko.Tx.Puchichara[PuchiChara.tGetPuchiCharaIndexByName(OpenTaiko.GetActualPlayer(nPlayer))]; + var puchichara = OpenTaiko.Tx.Puchichara[PuchiChara.tGetPuchiCharaIndexByName(OpenTaiko.GetActualPlayer(nPlayer))]; - if (NotesManager.IsRoll(pChip)) { - #region[ Drumroll ] - //--------------------------- - this.b連打中[nPlayer] = true; - if (bAutoPlay || rollEffectHit) { - int rollSpeed = bAutoPlay ? OpenTaiko.ConfigIni.nRollsPerSec : puchichara.effect.Autoroll; - if (OpenTaiko.ConfigIni.bAIBattleMode && nPlayer == 1) - rollSpeed = OpenTaiko.ConfigIni.apAIPerformances[OpenTaiko.ConfigIni.nAILevel - 1].nRollSpeed; + if (NotesManager.IsRoll(pChip)) { + #region[ Drumroll ] + //--------------------------- + this.bCurrentlyDrumRoll[nPlayer] = true; + if (bAutoPlay || rollEffectHit) { + int rollSpeed = bAutoPlay ? OpenTaiko.ConfigIni.nRollsPerSec : puchichara.effect.Autoroll; + if (OpenTaiko.ConfigIni.bAIBattleMode && nPlayer == 1) + rollSpeed = OpenTaiko.ConfigIni.apAIPerformances[OpenTaiko.ConfigIni.nAILevel - 1].nRollSpeed; - if (this.bPAUSE == false && rollSpeed > 0) // && TJAPlayer3.ConfigIni.bAuto先生の連打) - { - double rollSpeedScaled = rollSpeed / OpenTaiko.ConfigIni.SongPlaybackSpeed; - if ((SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) - > (pChip.n発声時刻ms + (1000.0 / rollSpeedScaled) * pChip.nRollCount)) { - EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; - int nLane = 0; + if (this.bPAUSE == false && rollSpeed > 0) // && TJAPlayer3.ConfigIni.bAuto先生の連打) + { + double rollSpeedScaled = rollSpeed / OpenTaiko.ConfigIni.SongPlaybackSpeed; + if ((SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) + > (pChip.n発声時刻ms + (1000.0 / rollSpeedScaled) * pChip.nRollCount)) { + EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; + int nLane = 0; - if (this.nHand[nPlayer] == 0) - this.nHand[nPlayer]++; - else - this.nHand[nPlayer] = 0; + if (this.nHand[nPlayer] == 0) + this.nHand[nPlayer]++; + else + this.nHand[nPlayer] = 0; - if (OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[nPlayer] < 0 && (pChip.eScrollMode == EScrollMode.HBScroll)) - pChip.fBMSCROLLTime -= OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[nPlayer] * -0.05; + if (OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[nPlayer] < 0 && (pChip.eScrollMode == EScrollMode.HBScroll)) + pChip.fBMSCROLLTime -= OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[nPlayer] * -0.05; - OpenTaiko.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Red); - //CDTXMania.stage演奏ドラム画面.actChipFireTaiko.Start( pChip.nチャンネル番号 == 0x15 ? 1 : 3, nPlayer ); - OpenTaiko.stage演奏ドラム画面.FlyingNotes.Start(pChip.nチャンネル番号 == 0x15 ? 1 : 3, nPlayer, true); - OpenTaiko.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(pChip.nチャンネル番号, this.nHand[nPlayer], nPlayer); + OpenTaiko.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Red); + //CDTXMania.stage演奏ドラム画面.actChipFireTaiko.Start( pChip.nチャンネル番号 == 0x15 ? 1 : 3, nPlayer ); + OpenTaiko.stage演奏ドラム画面.FlyingNotes.Start(pChip.nChannelNo == 0x15 ? 1 : 3, nPlayer, true); + OpenTaiko.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(pChip.nChannelNo, this.nHand[nPlayer], nPlayer); - if (pChip.nチャンネル番号 == 0x20 && _gt == EGameType.Konga) nLane = 4; - else if (pChip.nチャンネル番号 == 0x21 && _gt == EGameType.Konga) nLane = 1; + if (pChip.nChannelNo == 0x20 && _gt == EGameType.Konga) nLane = 4; + else if (pChip.nChannelNo == 0x21 && _gt == EGameType.Konga) nLane = 1; - this.tRollProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), 1, nLane, 0, nPlayer); - } - } - } - if (!bAutoPlay && !rollEffectHit) { - this.eRollState = ERollState.Roll; - this.tRollProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), 1, nNowInput, 0, nPlayer); - } - - break; - //--------------------------- - #endregion - } else if (NotesManager.IsGenericBalloon(pChip)) { - #region [ Balloon ] - - bool IsKusudama = NotesManager.IsKusudama(pChip); - - if (IsKusudama) { - if (nCurrentKusudamaCount > 0) { - /* - if (!this.b連打中[nPlayer] && nPlayer == 0) - { - actBalloon.KusuIn(); - actChara.KusuIn(); - } - for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) - { - this.b連打中[i] = true; - this.actChara.b風船連打中[i] = true; - } - */ - } - } else { - this.b連打中[nPlayer] = true; - this.actChara.b風船連打中[nPlayer] = true; - } - - if (bAutoPlay || rollEffectHit) { - - int rollCount = pChip.nRollCount; - int balloon = pChip.nBalloon; - if (IsKusudama) { - /* - var ts = pChip.db発声時刻ms; - var km = TJAPlayer3.DTX.kusudaMAP; - - if (km.ContainsKey(ts)) - { - rollCount = km[ts].nRollCount; - balloon = km[ts].nBalloon; - } - */ - rollCount = nCurrentKusudamaRollCount; - balloon = nCurrentKusudamaCount; - - } - - if (balloon != 0 && this.bPAUSE == false) { - int rollSpeed = bAutoPlay ? balloon : puchichara.effect.Autoroll; - - int balloonDuration = bAutoPlay ? (pChip.nノーツ終了時刻ms - pChip.n発声時刻ms) : 1000; - - if ((SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) > - (pChip.n発声時刻ms + (balloonDuration / (double)rollSpeed) * rollCount)) { - if (this.nHand[nPlayer] == 0) - this.nHand[nPlayer]++; - else - this.nHand[nPlayer] = 0; - - OpenTaiko.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Red); - OpenTaiko.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(pChip.nチャンネル番号, this.nHand[nPlayer], nPlayer); - - this.tBalloonProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), nPlayer); - } - } - } - if (!bAutoPlay && !rollEffectHit) { - if (!IsKusudama || nCurrentKusudamaCount > 0) { - this.tBalloonProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), nPlayer); - } - } - break; - #endregion - } else if (NotesManager.IsRollEnd(pChip)) { - if (pChip.nノーツ終了時刻ms <= (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed)) { - if (NotesManager.IsKusudama(pChip)) { - for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - chip現在処理中の連打チップ[i].bHit = true; - this.b連打中[i] = false; - } - } else { - this.b連打中[nPlayer] = false; - } - - - // this.actChara.b風船連打中[nPlayer] = false; - - pChip.bHit = true; - pChip.IsHitted = true; - break; - } - } else if (NotesManager.IsADLIB(pChip)) { - if (eJudgeResult != ENoteJudge.Auto && eJudgeResult != ENoteJudge.Miss) { - this.actJudgeString.Start(nPlayer, eJudgeResult != ENoteJudge.Bad ? ENoteJudge.ADLIB : ENoteJudge.Bad); - eJudgeResult = ENoteJudge.Perfect; // Prevent ADLIB notes breaking DFC runs - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(0x11, eJudgeResult, true, nPlayer); - OpenTaiko.stage演奏ドラム画面.actChipFireD.Start(0x11, eJudgeResult, nPlayer); - this.CChartScore[nPlayer].nADLIB++; - this.CSectionScore[nPlayer].nADLIB++; - this.CBranchScore[nPlayer].nADLIB++; - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.nADLIB[actDan.NowShowingNumber]++; - } - break; - } else if (NotesManager.IsMine(pChip)) { - if (eJudgeResult != ENoteJudge.Auto && eJudgeResult != ENoteJudge.Miss) { - this.actJudgeString.Start(nPlayer, eJudgeResult != ENoteJudge.Bad ? ENoteJudge.Mine : ENoteJudge.Bad); - bBombHit = true; - eJudgeResult = ENoteJudge.Bad; - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(0x11, eJudgeResult, true, nPlayer); - OpenTaiko.stage演奏ドラム画面.actChipFireD.Start(0x11, ENoteJudge.Mine, nPlayer); - OpenTaiko.Skin.soundBomb?.tPlay(); - actGauge.MineDamage(nPlayer); - this.CChartScore[nPlayer].nMine++; - this.CSectionScore[nPlayer].nMine++; - this.CBranchScore[nPlayer].nMine++; - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.nMine[actDan.NowShowingNumber]++; - } - break; - } else { - if (eJudgeResult != ENoteJudge.Miss) { - pChip.bShow = false; + this.tRollProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), 1, nLane, 0, nPlayer); } } - - if (eJudgeResult != ENoteJudge.Auto && eJudgeResult != ENoteJudge.Miss) { - - this.actJudgeString.Start(nPlayer, (bAutoPlay && !OpenTaiko.ConfigIni.bAIBattleMode) ? ENoteJudge.Auto : eJudgeResult); - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(pChip.nチャンネル番号, eJudgeResult, true, nPlayer); - OpenTaiko.stage演奏ドラム画面.actChipFireD.Start(pChip.nチャンネル番号, eJudgeResult, nPlayer); - } - } - break; + if (!bAutoPlay && !rollEffectHit) { + this.eRollState = ERollState.Roll; + this.tRollProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), 1, nNowInput, 0, nPlayer); + } + //--------------------------- + #endregion + } else if (NotesManager.IsGenericBalloon(pChip)) { + #region [ Balloon ] + + bool IsKusudama = NotesManager.IsKusudama(pChip); + + if (IsKusudama) { + if (nCurrentKusudamaCount > 0) { + /* + if (!this.b連打中[nPlayer] && nPlayer == 0) + { + actBalloon.KusuIn(); + actChara.KusuIn(); + } + for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) + { + this.b連打中[i] = true; + this.actChara.b風船連打中[i] = true; + } + */ + } + } else { + this.bCurrentlyDrumRoll[nPlayer] = true; + this.actChara.b風船連打中[nPlayer] = true; + } + + if (bAutoPlay || rollEffectHit) { + + int rollCount = pChip.nRollCount; + int balloon = pChip.nBalloon; + if (IsKusudama) { + /* + var ts = pChip.db発声時刻ms; + var km = TJAPlayer3.DTX.kusudaMAP; + + if (km.ContainsKey(ts)) + { + rollCount = km[ts].nRollCount; + balloon = km[ts].nBalloon; + } + */ + rollCount = nCurrentKusudamaRollCount; + balloon = nCurrentKusudamaCount; + + } + + if (balloon != 0 && this.bPAUSE == false) { + int rollSpeed = bAutoPlay ? balloon : puchichara.effect.Autoroll; + + int balloonDuration = bAutoPlay ? (pChip.nNoteEndTimems - pChip.n発声時刻ms) : 1000; + + if ((SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) > + (pChip.n発声時刻ms + (balloonDuration / (double)rollSpeed) * rollCount)) { + if (this.nHand[nPlayer] == 0) + this.nHand[nPlayer]++; + else + this.nHand[nPlayer] = 0; + + OpenTaiko.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Red); + OpenTaiko.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(pChip.nChannelNo, this.nHand[nPlayer], nPlayer); + + this.tBalloonProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), nPlayer); + } + } + } + if (!bAutoPlay && !rollEffectHit) { + if (!IsKusudama || nCurrentKusudamaCount > 0) { + this.tBalloonProcess(pChip, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), nPlayer); + } + } + #endregion + } else if (NotesManager.IsRollEnd(pChip)) { + if (pChip.nNoteEndTimems <= (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed)) { + if (NotesManager.IsKusudama(pChip)) { + for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { + chip現在処理中の連打チップ[i].bHit = true; + this.bCurrentlyDrumRoll[i] = false; + } + } else { + this.bCurrentlyDrumRoll[nPlayer] = false; + } + + + // this.actChara.b風船連打中[nPlayer] = false; + + pChip.bHit = true; + pChip.IsHitted = true; + } + } else if (NotesManager.IsADLIB(pChip)) { + if (eJudgeResult != ENoteJudge.Auto && eJudgeResult != ENoteJudge.Miss) { + this.actJudgeString.Start(nPlayer, eJudgeResult != ENoteJudge.Bad ? ENoteJudge.ADLIB : ENoteJudge.Bad); + eJudgeResult = ENoteJudge.Perfect; // Prevent ADLIB notes breaking DFC runs + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(0x11, eJudgeResult, true, nPlayer); + OpenTaiko.stage演奏ドラム画面.actChipFireD.Start(0x11, eJudgeResult, nPlayer); + this.CChartScore[nPlayer].nADLIB++; + this.CSectionScore[nPlayer].nADLIB++; + this.CBranchScore[nPlayer].nADLIB++; + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) + this.nADLIB[actDan.NowShowingNumber]++; + } + } else if (NotesManager.IsMine(pChip)) { + if (eJudgeResult != ENoteJudge.Auto && eJudgeResult != ENoteJudge.Miss) { + this.actJudgeString.Start(nPlayer, eJudgeResult != ENoteJudge.Bad ? ENoteJudge.Mine : ENoteJudge.Bad); + bBombHit = true; + eJudgeResult = ENoteJudge.Bad; + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(0x11, eJudgeResult, true, nPlayer); + OpenTaiko.stage演奏ドラム画面.actChipFireD.Start(0x11, ENoteJudge.Mine, nPlayer); + OpenTaiko.Skin.soundBomb?.tPlay(); + actGauge.MineDamage(nPlayer); + this.CChartScore[nPlayer].nMine++; + this.CSectionScore[nPlayer].nMine++; + this.CBranchScore[nPlayer].nMine++; + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) + this.nMine[actDan.NowShowingNumber]++; + } + } else { + if (eJudgeResult != ENoteJudge.Miss) { + pChip.bShow = false; + } + if (eJudgeResult != ENoteJudge.Auto && eJudgeResult != ENoteJudge.Miss) { + + this.actJudgeString.Start(nPlayer, (bAutoPlay && !OpenTaiko.ConfigIni.bAIBattleMode) ? ENoteJudge.Auto : eJudgeResult); + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(pChip.nChannelNo, eJudgeResult, true, nPlayer); + OpenTaiko.stage演奏ドラム画面.actChipFireD.Start(pChip.nChannelNo, eJudgeResult, nPlayer); + } + } + + + } - if ((pChip.e楽器パート != EInstrumentPad.Unknown)) { - if (NotesManager.IsMissableNote(pChip)) { - actGauge.Damage(screenmode, pChip.e楽器パート, eJudgeResult, nPlayer); - } + + if (NotesManager.IsMissableNote(pChip)) { + actGauge.Damage(screenmode, eJudgeResult, nPlayer); } @@ -1715,7 +1683,7 @@ internal abstract class CStage演奏画面共通 : CStage { break; } } - if (allDeniedPlaying) OpenTaiko.DTX.t全チップの再生停止(); // Stop playing song + if (allDeniedPlaying) OpenTaiko.TJA.t全チップの再生停止(); // Stop playing song // Stop timer : Pauses the whole game (to remove once is denied playing will work) //CSound管理.rc演奏用タイマ.t一時停止(); @@ -1723,7 +1691,6 @@ internal abstract class CStage演奏画面共通 : CStage { break; } } - cInvisibleChip.ShowChipTemporally(pChip.e楽器パート); } void returnChara() { @@ -1743,294 +1710,285 @@ internal abstract class CStage演奏画面共通 : CStage { } - switch (pChip.e楽器パート) { - case EInstrumentPad.Drums: - case EInstrumentPad.Guitar: - case EInstrumentPad.Bass: - break; - case EInstrumentPad.Taiko: - if (!bAutoPlay) { - if (NotesManager.IsGenericRoll(pChip)) + + if (!bAutoPlay) { + if (!NotesManager.IsGenericRoll(pChip)) { + + switch (eJudgeResult) { + case ENoteJudge.Perfect: { + if (NotesManager.IsADLIB(pChip)) + break; + + this.CBranchScore[nPlayer].nGreat++; + this.CChartScore[nPlayer].nGreat++; + this.CSectionScore[nPlayer].nGreat++; + this.Chara_MissCount[nPlayer] = 0; + + if (nPlayer == 0) this.nHitCount_ExclAuto.Drums.Perfect++; + this.actCombo.nCurrentCombo[nPlayer]++; + + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { + this.nGood[actDan.NowShowingNumber]++; + this.tIncreaseComboDan(actDan.NowShowingNumber); + } + + + if (this.actCombo.ctComboAddCounter[nPlayer].IsUnEnded) { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 1; + } else { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 0; + } + + + AIRegisterInput(nPlayer, 1); + + OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); + + + if (this.bIsMiss[nPlayer]) { + returnChara(); + } + + this.bIsMiss[nPlayer] = false; + } break; + case ENoteJudge.Great: + case ENoteJudge.Good: { + this.CBranchScore[nPlayer].nGood++; + this.CChartScore[nPlayer].nGood++; + this.CSectionScore[nPlayer].nGood++; + this.Chara_MissCount[nPlayer] = 0; - switch (eJudgeResult) { - case ENoteJudge.Perfect: { - if (NotesManager.IsADLIB(pChip)) - break; + if (nPlayer == 0) this.nHitCount_ExclAuto.Drums.Great++; + this.actCombo.nCurrentCombo[nPlayer]++; - this.CBranchScore[nPlayer].nGreat++; - this.CChartScore[nPlayer].nGreat++; - this.CSectionScore[nPlayer].nGreat++; - this.Chara_MissCount[nPlayer] = 0; - - if (nPlayer == 0) this.nヒット数_Auto含まない.Drums.Perfect++; - this.actCombo.n現在のコンボ数[nPlayer]++; - - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { - this.n良[actDan.NowShowingNumber]++; - this.tIncreaseComboDan(actDan.NowShowingNumber); - } - - - if (this.actCombo.ctコンボ加算[nPlayer].IsUnEnded) { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 1; - } else { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 0; - } - - - AIRegisterInput(nPlayer, 1); - - OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); - - - if (this.bIsMiss[nPlayer]) { - returnChara(); - } - - this.bIsMiss[nPlayer] = false; + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { + this.nOk[actDan.NowShowingNumber]++; + this.tIncreaseComboDan(actDan.NowShowingNumber); } - break; - case ENoteJudge.Great: - case ENoteJudge.Good: { - this.CBranchScore[nPlayer].nGood++; - this.CChartScore[nPlayer].nGood++; - this.CSectionScore[nPlayer].nGood++; - this.Chara_MissCount[nPlayer] = 0; - if (nPlayer == 0) this.nヒット数_Auto含まない.Drums.Great++; - this.actCombo.n現在のコンボ数[nPlayer]++; - - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { - this.n可[actDan.NowShowingNumber]++; - this.tIncreaseComboDan(actDan.NowShowingNumber); - } - - if (this.actCombo.ctコンボ加算[nPlayer].IsUnEnded) { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 1; - } else { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 0; - } - - - AIRegisterInput(nPlayer, 0.5f); - - OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); - - if (this.bIsMiss[nPlayer]) { - returnChara(); - } - - this.bIsMiss[nPlayer] = false; + if (this.actCombo.ctComboAddCounter[nPlayer].IsUnEnded) { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 1; + } else { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 0; } - break; - case ENoteJudge.Poor: - case ENoteJudge.Miss: - case ENoteJudge.Bad: { - if (!NotesManager.IsMissableNote(pChip) && !bBombHit) - break; - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) - CFloorManagement.damage(); - if (!bBombHit) { - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.n不可[actDan.NowShowingNumber]++; + AIRegisterInput(nPlayer, 0.5f); - this.CBranchScore[nPlayer].nMiss++; - this.CChartScore[nPlayer].nMiss++; - this.CSectionScore[nPlayer].nMiss++; - this.Chara_MissCount[nPlayer]++; + OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); - if (nPlayer == 0) this.nヒット数_Auto含まない.Drums.Miss++; - } + if (this.bIsMiss[nPlayer]) { + returnChara(); + } - this.actCombo.n現在のコンボ数[nPlayer] = 0; + this.bIsMiss[nPlayer] = false; + } + break; + case ENoteJudge.Poor: + case ENoteJudge.Miss: + case ENoteJudge.Bad: { + if (!NotesManager.IsMissableNote(pChip) && !bBombHit) + break; + + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) + CFloorManagement.damage(); + + if (!bBombHit) { if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.nCombo[actDan.NowShowingNumber] = 0; - this.actComboVoice.tReset(nPlayer); + this.nBad[actDan.NowShowingNumber]++; - AIRegisterInput(nPlayer, 0f); + this.CBranchScore[nPlayer].nMiss++; + this.CChartScore[nPlayer].nMiss++; + this.CSectionScore[nPlayer].nMiss++; + this.Chara_MissCount[nPlayer]++; - this.bIsMiss[nPlayer] = true; + if (nPlayer == 0) this.nHitCount_ExclAuto.Drums.Miss++; } - break; - default: - this.nヒット数_Auto含む.Drums[(int)eJudgeResult]++; - break; - } - } else if (bAutoPlay) { - switch (eJudgeResult) { - case ENoteJudge.Perfect: { - if (!NotesManager.IsGenericRoll(pChip)) { - if (NotesManager.IsADLIB(pChip)) - break; - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { - this.n良[actDan.NowShowingNumber]++; - this.tIncreaseComboDan(actDan.NowShowingNumber); - } + this.actCombo.nCurrentCombo[nPlayer] = 0; + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) + this.nCombo[actDan.NowShowingNumber] = 0; + this.actComboVoice.tReset(nPlayer); - this.CBranchScore[nPlayer].nGreat++; - this.CChartScore[nPlayer].nGreat++; - this.CSectionScore[nPlayer].nGreat++; - this.Chara_MissCount[nPlayer] = 0; + AIRegisterInput(nPlayer, 0f); - if (nPlayer == 0) this.nヒット数_Auto含む.Drums.Perfect++; - this.actCombo.n現在のコンボ数[nPlayer]++; - //this.actCombo.ctコンボ加算.t進行(); - if (this.actCombo.ctコンボ加算[nPlayer].IsUnEnded) { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 1; - } else { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 0; - } - - AIRegisterInput(nPlayer, 1); - - OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); - - if (this.bIsMiss[nPlayer]) { - returnChara(); - } - - this.bIsMiss[nPlayer] = false; - } - } - break; - - case ENoteJudge.Great: - case ENoteJudge.Good: { - if (!NotesManager.IsGenericRoll(pChip)) { - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { - this.n可[actDan.NowShowingNumber]++; - this.tIncreaseComboDan(actDan.NowShowingNumber); - } - - this.CBranchScore[nPlayer].nGood++; - this.CChartScore[nPlayer].nGood++; - this.CSectionScore[nPlayer].nGood++; - this.Chara_MissCount[nPlayer] = 0; - - if (nPlayer == 0) this.nヒット数_Auto含む.Drums.Great++; - this.actCombo.n現在のコンボ数[nPlayer]++; - - if (this.actCombo.ctコンボ加算[nPlayer].IsUnEnded) { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 1; - } else { - this.actCombo.ctコンボ加算[nPlayer].CurrentValue = 0; - } - - - AIRegisterInput(nPlayer, 0.5f); - - OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); - - if (this.bIsMiss[nPlayer]) { - returnChara(); - } - - this.bIsMiss[nPlayer] = false; - } - } - break; - - default: { - if (!NotesManager.IsGenericRoll(pChip)) { - if (!NotesManager.IsMissableNote(pChip) && !bBombHit) - break; - - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) - CFloorManagement.damage(); - - if (!bBombHit) { - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.n不可[actDan.NowShowingNumber]++; - - - this.CBranchScore[nPlayer].nMiss++; - this.CChartScore[nPlayer].nMiss++; - this.CSectionScore[nPlayer].nMiss++; - this.Chara_MissCount[nPlayer]++; - } - - this.actCombo.n現在のコンボ数[nPlayer] = 0; - if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) - this.nCombo[actDan.NowShowingNumber] = 0; - this.actComboVoice.tReset(nPlayer); - - AIRegisterInput(nPlayer, 0f); - - - this.bIsMiss[nPlayer] = true; - } - } - break; - } + this.bIsMiss[nPlayer] = true; + } + break; + default: + this.nHitCount_InclAuto.Drums[(int)eJudgeResult]++; + break; } - actDan.Update(); + } + } else if (bAutoPlay) { + switch (eJudgeResult) { + case ENoteJudge.Perfect: { + if (!NotesManager.IsGenericRoll(pChip)) { + if (NotesManager.IsADLIB(pChip)) + break; - #region[ Combo voice ] + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { + this.nGood[actDan.NowShowingNumber]++; + this.tIncreaseComboDan(actDan.NowShowingNumber); + } - if (!NotesManager.IsGenericRoll(pChip)) { - if ((this.actCombo.n現在のコンボ数[nPlayer] % 100 == 0 || this.actCombo.n現在のコンボ数[nPlayer] == 50) && this.actCombo.n現在のコンボ数[nPlayer] > 0) { - this.actComboBalloon.Start(this.actCombo.n現在のコンボ数[nPlayer], nPlayer); - } + this.CBranchScore[nPlayer].nGreat++; + this.CChartScore[nPlayer].nGreat++; + this.CSectionScore[nPlayer].nGreat++; + this.Chara_MissCount[nPlayer] = 0; - // Combo voice here - this.actComboVoice.t再生(this.actCombo.n現在のコンボ数[nPlayer], nPlayer); + if (nPlayer == 0) this.nHitCount_InclAuto.Drums.Perfect++; + this.actCombo.nCurrentCombo[nPlayer]++; + //this.actCombo.ctコンボ加算.t進行(); + if (this.actCombo.ctComboAddCounter[nPlayer].IsUnEnded) { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 1; + } else { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 0; + } - double dbUnit = (((60.0 / (OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[nPlayer])))); - dbUnit = (((60.0 / pChip.dbBPM))); + AIRegisterInput(nPlayer, 1); - //CDTXMania.act文字コンソール.tPrint(620, 80, C文字コンソール.Eフォント種別.白, "BPM: " + dbUnit.ToString()); + OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); - for (int i = 0; i < 5; i++) { - if (this.actCombo.n現在のコンボ数[i] == 50 || this.actCombo.n現在のコンボ数[i] == 300) { - ctChipAnimeLag[i] = new CCounter(0, 664, 1, OpenTaiko.Timer); + if (this.bIsMiss[nPlayer]) { + returnChara(); + } + + this.bIsMiss[nPlayer] = false; } } + break; - if (this.actCombo.n現在のコンボ数[nPlayer] % 10 == 0 && this.actCombo.n現在のコンボ数[nPlayer] > 0) { - //if (this.actChara.bキャラクターアクション中 == false) - //{ - int Character = this.actChara.iCurrentCharacter[nPlayer]; - // Edit character values here - if (!pChip.bGOGOTIME) //2018.03.11 kairera0467 チップに埋め込んだフラグから読み取る - { - if (OpenTaiko.Skin.Characters_10Combo_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CActImplCharacter.Anime.Combo10 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) { - if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer)) { - // 魂ゲージMAXではない - // ジャンプ_ノーマル - this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Combo10, true); - } + case ENoteJudge.Great: + case ENoteJudge.Good: { + if (!NotesManager.IsGenericRoll(pChip)) { + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) { + this.nOk[actDan.NowShowingNumber]++; + this.tIncreaseComboDan(actDan.NowShowingNumber); } - if (OpenTaiko.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CActImplCharacter.Anime.Combo10_Max && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) { - if (HGaugeMethods.UNSAFE_IsRainbow(nPlayer)) { - // 魂ゲージMAX - // ジャンプ_MAX - this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Combo10_Max, true); - } + + this.CBranchScore[nPlayer].nGood++; + this.CChartScore[nPlayer].nGood++; + this.CSectionScore[nPlayer].nGood++; + this.Chara_MissCount[nPlayer] = 0; + + if (nPlayer == 0) this.nHitCount_InclAuto.Drums.Great++; + this.actCombo.nCurrentCombo[nPlayer]++; + + if (this.actCombo.ctComboAddCounter[nPlayer].IsUnEnded) { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 1; + } else { + this.actCombo.ctComboAddCounter[nPlayer].CurrentValue = 0; } + + + AIRegisterInput(nPlayer, 0.5f); + + OpenTaiko.stage演奏ドラム画面.actMtaiko.BackSymbolEvent(nPlayer); + + if (this.bIsMiss[nPlayer]) { + returnChara(); + } + + this.bIsMiss[nPlayer] = false; } - - } + break; - this.t紙吹雪_開始(); - } - #endregion + default: { + if (!NotesManager.IsGenericRoll(pChip)) { + if (!NotesManager.IsMissableNote(pChip) && !bBombHit) + break; + + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) + CFloorManagement.damage(); + + if (!bBombHit) { + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) + this.nBad[actDan.NowShowingNumber]++; - break; + this.CBranchScore[nPlayer].nMiss++; + this.CChartScore[nPlayer].nMiss++; + this.CSectionScore[nPlayer].nMiss++; + this.Chara_MissCount[nPlayer]++; + } + + this.actCombo.nCurrentCombo[nPlayer] = 0; + if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) + this.nCombo[actDan.NowShowingNumber] = 0; + this.actComboVoice.tReset(nPlayer); + + AIRegisterInput(nPlayer, 0f); - default: - break; + this.bIsMiss[nPlayer] = true; + } + } + break; + } } - if (((pChip.e楽器パート != EInstrumentPad.Unknown)) && (eJudgeResult != ENoteJudge.Miss) && (eJudgeResult != ENoteJudge.Bad) && (eJudgeResult != ENoteJudge.Poor) && (NotesManager.IsMissableNote(pChip))) { - int nCombos = this.actCombo.n現在のコンボ数[nPlayer]; - long nInit = OpenTaiko.DTX.nScoreInit[0, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[nPlayer]]; - long nDiff = OpenTaiko.DTX.nScoreDiff[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[nPlayer]]; + actDan.Update(); + + #region[ Combo voice ] + + if (!NotesManager.IsGenericRoll(pChip)) { + if ((this.actCombo.nCurrentCombo[nPlayer] % 100 == 0 || this.actCombo.nCurrentCombo[nPlayer] == 50) && this.actCombo.nCurrentCombo[nPlayer] > 0) { + this.actComboBalloon.Start(this.actCombo.nCurrentCombo[nPlayer], nPlayer); + } + + // Combo voice here + this.actComboVoice.tPlay(this.actCombo.nCurrentCombo[nPlayer], nPlayer); + + double dbUnit = (((60.0 / (OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[nPlayer])))); + dbUnit = (((60.0 / pChip.dbBPM))); + + //CDTXMania.act文字コンソール.tPrint(620, 80, C文字コンソール.Eフォント種別.白, "BPM: " + dbUnit.ToString()); + + for (int i = 0; i < 5; i++) { + if (this.actCombo.nCurrentCombo[i] == 50 || this.actCombo.nCurrentCombo[i] == 300) { + ctChipAnimeLag[i] = new CCounter(0, 664, 1, OpenTaiko.Timer); + } + } + + if (this.actCombo.nCurrentCombo[nPlayer] % 10 == 0 && this.actCombo.nCurrentCombo[nPlayer] > 0) { + //if (this.actChara.bキャラクターアクション中 == false) + //{ + int Character = this.actChara.iCurrentCharacter[nPlayer]; + // Edit character values here + if (!pChip.bGOGOTIME) //2018.03.11 kairera0467 チップに埋め込んだフラグから読み取る + { + if (OpenTaiko.Skin.Characters_10Combo_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CActImplCharacter.Anime.Combo10 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) { + if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer)) { + // 魂ゲージMAXではない + // ジャンプ_ノーマル + this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Combo10, true); + } + } + if (OpenTaiko.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CActImplCharacter.Anime.Combo10_Max && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) { + if (HGaugeMethods.UNSAFE_IsRainbow(nPlayer)) { + // 魂ゲージMAX + // ジャンプ_MAX + this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Combo10_Max, true); + } + } + } + + + } + + this.t紙吹雪_開始(); + } + #endregion + + + + + if ((eJudgeResult != ENoteJudge.Miss) && (eJudgeResult != ENoteJudge.Bad) && (eJudgeResult != ENoteJudge.Poor) && (NotesManager.IsMissableNote(pChip))) { + int nCombos = this.actCombo.nCurrentCombo[nPlayer]; + long nInit = OpenTaiko.TJA.nScoreInit[0, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[nPlayer]]; + long nDiff = OpenTaiko.TJA.nScoreDiff[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[nPlayer]]; long nAddScore = 0; if (OpenTaiko.ConfigIni.ShinuchiMode) //2016.07.04 kairera0467 真打モード。 @@ -2043,7 +2001,7 @@ internal abstract class CStage演奏画面共通 : CStage { } this.actScore.Add((long)nAddScore, nPlayer); - } else if (OpenTaiko.DTX.nScoreModeTmp == 2) { + } else if (OpenTaiko.TJA.nScoreModeTmp == 2) { if (nCombos < 10) { nAddScore = this.nScore[0]; } else if (nCombos >= 10 && nCombos <= 29) { @@ -2067,24 +2025,24 @@ internal abstract class CStage演奏画面共通 : CStage { //100コンボ毎のボーナス if (nCombos % 100 == 0 && nCombos > 99) { - if (this.actScore.ctボーナス加算タイマ[nPlayer].IsTicked) { - this.actScore.ctボーナス加算タイマ[nPlayer].Stop(); + if (this.actScore.ctBonusAddTimer[nPlayer].IsTicked) { + this.actScore.ctBonusAddTimer[nPlayer].Stop(); this.actScore.BonusAdd(nPlayer); } - this.actScore.ctボーナス加算タイマ[nPlayer].CurrentValue = 0; - this.actScore.ctボーナス加算タイマ[nPlayer] = new CCounter(0, 2, 1000, OpenTaiko.Timer); + this.actScore.ctBonusAddTimer[nPlayer].CurrentValue = 0; + this.actScore.ctBonusAddTimer[nPlayer] = new CCounter(0, 2, 1000, OpenTaiko.Timer); } nAddScore = (int)(nAddScore / 10); nAddScore = (int)(nAddScore * 10); //大音符のボーナス - if (pChip.nチャンネル番号 == 0x13 || pChip.nチャンネル番号 == 0x14 || pChip.nチャンネル番号 == 0x1A || pChip.nチャンネル番号 == 0x1B) { + if (pChip.nChannelNo == 0x13 || pChip.nChannelNo == 0x14 || pChip.nChannelNo == 0x1A || pChip.nChannelNo == 0x1B) { nAddScore = nAddScore * 2; } this.actScore.Add(nAddScore, nPlayer); - } else if (OpenTaiko.DTX.nScoreModeTmp == 1) { + } else if (OpenTaiko.TJA.nScoreModeTmp == 1) { if (nCombos < 10) { nAddScore = this.nScore[0]; } else if (nCombos >= 10 && nCombos <= 19) { @@ -2120,7 +2078,7 @@ internal abstract class CStage演奏画面共通 : CStage { nAddScore = (int)(nAddScore * 10); //大音符のボーナス - if (pChip.nチャンネル番号 == 0x13 || pChip.nチャンネル番号 == 0x14 || pChip.nチャンネル番号 == 0x1A || pChip.nチャンネル番号 == 0x1B) { + if (pChip.nChannelNo == 0x13 || pChip.nChannelNo == 0x14 || pChip.nChannelNo == 0x1A || pChip.nChannelNo == 0x1B) { nAddScore = nAddScore * 2; } @@ -2145,7 +2103,7 @@ internal abstract class CStage演奏画面共通 : CStage { //大音符のボーナス - if (pChip.nチャンネル番号 == 0x13 || pChip.nチャンネル番号 == 0x25) { + if (pChip.nChannelNo == 0x13 || pChip.nChannelNo == 0x25) { nAddScore = nAddScore * 2; } @@ -2163,35 +2121,20 @@ internal abstract class CStage演奏画面共通 : CStage { return ENoteJudge.Auto; } - protected abstract void tチップのヒット処理_BadならびにTight時のMiss(CDTX.ECourse eCourse, EInstrumentPad part); - protected abstract void tチップのヒット処理_BadならびにTight時のMiss(CDTX.ECourse eCourse, EInstrumentPad part, int nLane); + protected abstract void tチップのヒット処理_BadならびにTight時のMiss(CTja.ECourse eCourse, EInstrumentPad part); + protected abstract void tチップのヒット処理_BadならびにTight時のMiss(CTja.ECourse eCourse, EInstrumentPad part, int nLane); - protected void tチップのヒット処理_BadならびにTight時のMiss(CDTX.ECourse eCourse, EInstrumentPad part, int nLane, EInstrumentPad screenmode) { - cInvisibleChip.StartSemiInvisible(part); - cInvisibleChip.ShowChipTemporally(part); - - //ChipのCourseをベースにゲージの伸びを調節 - actGauge.Damage(screenmode, part, ENoteJudge.Miss, 0); - switch (part) { - case EInstrumentPad.Drums: - case EInstrumentPad.Guitar: - case EInstrumentPad.Bass: - break; - - case EInstrumentPad.Taiko: - this.actCombo.n現在のコンボ数.P1 = 0; - this.actCombo.n現在のコンボ数.P2 = 0; - this.actCombo.n現在のコンボ数.P3 = 0; - this.actCombo.n現在のコンボ数.P4 = 0; - this.actCombo.n現在のコンボ数.P5 = 0; - break; - - default: - return; - } + protected void tチップのヒット処理_BadならびにTight時のMiss(CTja.ECourse eCourse, EInstrumentPad part, int nLane, EInstrumentPad screenmode) { + // Something looks wrong with this (Notelock mode) + actGauge.Damage(screenmode, ENoteJudge.Miss, 0); + this.actCombo.nCurrentCombo.P1 = 0; + this.actCombo.nCurrentCombo.P2 = 0; + this.actCombo.nCurrentCombo.P3 = 0; + this.actCombo.nCurrentCombo.P4 = 0; + this.actCombo.nCurrentCombo.P5 = 0; } - protected CDTX.CChip r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(long nTime, int nPlayer) { + protected CChip r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(long nTime, int nPlayer) { //sw2.Start(); int nIndex_InitialPositionSearchingToPast; @@ -2203,8 +2146,8 @@ internal abstract class CStage演奏画面共通 : CStage { return null; } - int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = this.n現在のトップChip; - if (this.n現在のトップChip >= count) // その時点で演奏すべきチップが既に全部無くなっていたら + int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = this.nCurrentTopChip; + if (this.nCurrentTopChip >= count) // その時点で演奏すべきチップが既に全部無くなっていたら { nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = count - 1; } @@ -2218,8 +2161,8 @@ internal abstract class CStage演奏画面共通 : CStage { continue; - CDTX.CChip chip = listChip[nPlayer][nIndex_NearestChip_Future]; - if (!chip.bHit && chip.b可視) { + CChip chip = listChip[nPlayer][nIndex_NearestChip_Future]; + if (!chip.bHit && chip.bVisible) { if (NotesManager.IsHittableNote(chip)) { if (chip.n発声時刻ms > nTime) { break; @@ -2227,10 +2170,10 @@ internal abstract class CStage演奏画面共通 : CStage { nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future; } } - if (chip.bHit && chip.b可視) // 2015.11.5 kairera0467 連打対策 + if (chip.bHit && chip.bVisible) // 2015.11.5 kairera0467 連打対策 { if (NotesManager.IsGenericRoll(chip) && !NotesManager.IsRollEnd(chip)) { - if (chip.nノーツ終了時刻ms > nTime) { + if (chip.nNoteEndTimems > nTime) { nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future; break; } @@ -2243,14 +2186,14 @@ internal abstract class CStage演奏画面共通 : CStage { int nIndex_NearestChip_Past = nIndex_InitialPositionSearchingToPast; // while ( nIndex_NearestChip_Past >= 0 ) // 過去方向への検索 for (; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past--) { - CDTX.CChip chip = listChip[nPlayer][nIndex_NearestChip_Past]; + CChip chip = listChip[nPlayer][nIndex_NearestChip_Past]; //if ( (!chip.bHit && chip.b可視 ) && ( ( 0x93 <= chip.nチャンネル番号 ) && ( chip.nチャンネル番号 <= 0x99 ) ) ) - if ((!chip.bHit && chip.b可視) && NotesManager.IsHittableNote(chip) && !NotesManager.IsRollEnd(chip)) { + if ((!chip.bHit && chip.bVisible) && NotesManager.IsHittableNote(chip) && !NotesManager.IsRollEnd(chip)) { break; } //2015.11.5 kairera0467 連打対策 - else if ((chip.b可視) && NotesManager.IsGenericRoll(chip) && !NotesManager.IsRollEnd(chip)) { + else if ((chip.bVisible) && NotesManager.IsGenericRoll(chip) && !NotesManager.IsRollEnd(chip)) { break; } @@ -2261,7 +2204,7 @@ internal abstract class CStage演奏画面共通 : CStage { //sw2.Stop(); return null; } - CDTX.CChip nearestChip; // = null; // 以下のifブロックのいずれかで必ずnearestChipには非nullが代入されるので、null初期化を削除 + CChip nearestChip; // = null; // 以下のifブロックのいずれかで必ずnearestChipには非nullが代入されるので、null初期化を削除 if (nIndex_NearestChip_Future >= count) // 検索対象が未来方向には見つからなかった(しかし過去方向には見つかった)場合 { nearestChip = listChip[nPlayer][nIndex_NearestChip_Past]; @@ -2293,7 +2236,7 @@ internal abstract class CStage演奏画面共通 : CStage { //2015.11.5 kairera0467 連打音符の判定 if (NotesManager.IsGenericRoll(__tmpchp) && !NotesManager.IsRollEnd(__tmpchp)) { - if (listChip[nPlayer][nIndex_NearestChip_Future].n発声時刻ms <= nTime && listChip[nPlayer][nIndex_NearestChip_Future].nノーツ終了時刻ms >= nTime) { + if (listChip[nPlayer][nIndex_NearestChip_Future].n発声時刻ms <= nTime && listChip[nPlayer][nIndex_NearestChip_Future].nNoteEndTimems >= nTime) { nearestChip = listChip[nPlayer][nIndex_NearestChip_Future]; } } @@ -2453,31 +2396,31 @@ internal abstract class CStage演奏画面共通 : CStage { */ - protected CDTX.CChip r指定時刻に一番近い未ヒットChip(long nTime, int nChannel, int nInputAdjustTime, int n検索範囲時間ms, int nPlayer) { + protected CChip r指定時刻に一番近い未ヒットChip(long nTime, int nChannel, int nInputAdjustTime, int n検索範囲時間ms, int nPlayer) { //sw2.Start(); //Trace.TraceInformation( "nTime={0}, nChannel={1:x2}, 現在のTop={2}", nTime, nChannel,CDTXMania.DTX.listChip[ this.n現在のトップChip ].n発声時刻ms ); nTime += nInputAdjustTime; int nIndex_InitialPositionSearchingToPast; int nTimeDiff; - if (this.n現在のトップChip == -1) // 演奏データとして1個もチップがない場合は + if (this.nCurrentTopChip == -1) // 演奏データとして1個もチップがない場合は { //sw2.Stop(); return null; } int count = listChip[nPlayer].Count; - int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = this.n現在のトップChip; - if (this.n現在のトップChip >= count) // その時点で演奏すべきチップが既に全部無くなっていたら + int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = this.nCurrentTopChip; + if (this.nCurrentTopChip >= count) // その時点で演奏すべきチップが既に全部無くなっていたら { nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = count - 1; } // int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToFuture; // while ( nIndex_NearestChip_Future < count ) // 未来方向への検索 for (; nIndex_NearestChip_Future < count; nIndex_NearestChip_Future++) { - CDTX.CChip chip = listChip[nPlayer][nIndex_NearestChip_Future]; + CChip chip = listChip[nPlayer][nIndex_NearestChip_Future]; if (!chip.bHit) { if ((0x11 <= nChannel) && (nChannel <= 0x1F)) { - if ((chip.nチャンネル番号 == nChannel) || (chip.nチャンネル番号 == (nChannel + 0x20))) { + if ((chip.nChannelNo == nChannel) || (chip.nChannelNo == (nChannel + 0x20))) { if (chip.n発声時刻ms > nTime) { break; } @@ -2488,7 +2431,7 @@ internal abstract class CStage演奏画面共通 : CStage { //if ( ( ( 0xDE <= nChannel ) && ( nChannel <= 0xDF ) ) ) if (((0xDF == nChannel))) { - if (chip.nチャンネル番号 == nChannel) { + if (chip.nChannelNo == nChannel) { if (chip.n発声時刻ms > nTime) { break; } @@ -2497,7 +2440,7 @@ internal abstract class CStage演奏画面共通 : CStage { } if (((0x50 == nChannel))) { - if (chip.nチャンネル番号 == nChannel) { + if (chip.nChannelNo == nChannel) { if (chip.n発声時刻ms > nTime) { break; } @@ -2514,21 +2457,21 @@ internal abstract class CStage演奏画面共通 : CStage { int nIndex_NearestChip_Past = nIndex_InitialPositionSearchingToPast; // while ( nIndex_NearestChip_Past >= 0 ) // 過去方向への検索 for (; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past--) { - CDTX.CChip chip = listChip[nPlayer][nIndex_NearestChip_Past]; + CChip chip = listChip[nPlayer][nIndex_NearestChip_Past]; if ((!chip.bHit) && ( ( - ((((nChannel >= 0x11) && (nChannel <= 0x14)) || nChannel == 0x1A || nChannel == 0x1B || nChannel == 0x1F) && (chip.nチャンネル番号 == nChannel)) + ((((nChannel >= 0x11) && (nChannel <= 0x14)) || nChannel == 0x1A || nChannel == 0x1B || nChannel == 0x1F) && (chip.nChannelNo == nChannel)) ) || ( // ( ( ( nChannel >= 0xDE ) && ( nChannel <= 0xDF ) ) && ( chip.nチャンネル番号 == nChannel ) ) - (((nChannel == 0xDF)) && (chip.nチャンネル番号 == nChannel)) + (((nChannel == 0xDF)) && (chip.nChannelNo == nChannel)) ) || ( // ( ( ( nChannel >= 0xDE ) && ( nChannel <= 0xDF ) ) && ( chip.nチャンネル番号 == nChannel ) ) - (((nChannel == 0x50)) && (chip.nチャンネル番号 == nChannel)) + (((nChannel == 0x50)) && (chip.nChannelNo == nChannel)) ) ) ) { @@ -2541,7 +2484,7 @@ internal abstract class CStage演奏画面共通 : CStage { //sw2.Stop(); return null; } - CDTX.CChip nearestChip; // = null; // 以下のifブロックのいずれかで必ずnearestChipには非nullが代入されるので、null初期化を削除 + CChip nearestChip; // = null; // 以下のifブロックのいずれかで必ずnearestChipには非nullが代入されるので、null初期化を削除 if (nIndex_NearestChip_Future >= count) // 検索対象が未来方向には見つからなかった(しかし過去方向には見つかった)場合 { nearestChip = listChip[nPlayer][nIndex_NearestChip_Past]; @@ -2580,11 +2523,11 @@ internal abstract class CStage演奏画面共通 : CStage { nTime += nInputAdjustTime; for (int i = 0; i < listChip[nPlayer].Count; i++) { - CDTX.CChip chip = listChip[nPlayer][i]; + CChip chip = listChip[nPlayer][i]; if (!chip.bHit) { if (NotesManager.IsMissableNote(chip)) { if (chip.n発声時刻ms < nTime + n検索範囲時間ms) { - if (chip.nコース == this.n現在のコース[nPlayer]) //2016.06.14 kairera0467 譜面分岐も考慮するようにしてみる。 + if (chip.nBranch == this.nCurrentBranch[nPlayer]) //2016.06.14 kairera0467 譜面分岐も考慮するようにしてみる。 return true; } } @@ -2622,11 +2565,11 @@ internal abstract class CStage演奏画面共通 : CStage { // Individual offset if (keyboard.KeyPressed((int)SlimDXKeys.Key.UpArrow) && (keyboard.KeyPressing((int)SlimDXKeys.Key.RightShift) || keyboard.KeyPressing((int)SlimDXKeys.Key.LeftShift))) { // shift (+ctrl) + UpArrow (BGMAdjust) - OpenTaiko.DTX.t各自動再生音チップの再生時刻を変更する((keyboard.KeyPressing((int)SlimDXKeys.Key.LeftControl) || keyboard.KeyPressing((int)SlimDXKeys.Key.RightControl)) ? 1 : 10); - OpenTaiko.DTX.tWave再生位置自動補正(); + OpenTaiko.TJA.t各自動再生音チップの再生時刻を変更する((keyboard.KeyPressing((int)SlimDXKeys.Key.LeftControl) || keyboard.KeyPressing((int)SlimDXKeys.Key.RightControl)) ? 1 : 10); + OpenTaiko.TJA.tWave再生位置自動補正(); } else if (keyboard.KeyPressed((int)SlimDXKeys.Key.DownArrow) && (keyboard.KeyPressing((int)SlimDXKeys.Key.RightShift) || keyboard.KeyPressing((int)SlimDXKeys.Key.LeftShift))) { // shift + DownArrow (BGMAdjust) - OpenTaiko.DTX.t各自動再生音チップの再生時刻を変更する((keyboard.KeyPressing((int)SlimDXKeys.Key.LeftControl) || keyboard.KeyPressing((int)SlimDXKeys.Key.RightControl)) ? -1 : -10); - OpenTaiko.DTX.tWave再生位置自動補正(); + OpenTaiko.TJA.t各自動再生音チップの再生時刻を変更する((keyboard.KeyPressing((int)SlimDXKeys.Key.LeftControl) || keyboard.KeyPressing((int)SlimDXKeys.Key.RightControl)) ? -1 : -10); + OpenTaiko.TJA.tWave再生位置自動補正(); } // Tokkun only else if (OpenTaiko.ConfigIni.bTokkunMode && @@ -2659,7 +2602,7 @@ internal abstract class CStage演奏画面共通 : CStage { SoundManager.PlayTimer.Pause(); OpenTaiko.Timer.Pause(); - OpenTaiko.DTX.t全チップの再生一時停止(); + OpenTaiko.TJA.t全チップの再生一時停止(); this.actAVI.tPauseControl(); this.bPAUSE = true; @@ -2668,7 +2611,7 @@ internal abstract class CStage演奏画面共通 : CStage { // this.t演奏中止(); } else if (OpenTaiko.ConfigIni.KeyAssign.KeyIsPressed(OpenTaiko.ConfigIni.KeyAssign.Drums.TrainingBranchNormal) && (OpenTaiko.ConfigIni.bTokkunMode || OpenTaiko.ConfigIni.bAutoPlay[0])) { - if (!OpenTaiko.DTX.bHasBranch[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]) return; + if (!OpenTaiko.TJA.bHasBranch[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]) return; //listBRANCHを廃止したため強制分岐の開始値を //rc演奏用タイマ.n現在時刻msから引っ張ることに @@ -2680,21 +2623,21 @@ internal abstract class CStage演奏画面共通 : CStage { if (p判定枠に最も近いチップ != null) db一小節後 = ((15000.0 / p判定枠に最も近いチップ.dbBPM * (p判定枠に最も近いチップ.fNow_Measure_s / p判定枠に最も近いチップ.fNow_Measure_m)) * 16.0); - this.t分岐処理(CDTX.ECourse.eNormal, 0, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) + db一小節後); + this.t分岐処理(CTja.ECourse.eNormal, 0, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) + db一小節後); - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[0].nAfter, CDTX.ECourse.eNormal, 0); - OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[0], CDTX.ECourse.eNormal, 0); + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[0].nAfter, CTja.ECourse.eNormal, 0); + OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[0], CTja.ECourse.eNormal, 0); - this.n現在のコース[0] = CDTX.ECourse.eNormal; - this.n次回のコース[0] = CDTX.ECourse.eNormal; - this.nレーン用表示コース[0] = CDTX.ECourse.eNormal; + this.nCurrentBranch[0] = CTja.ECourse.eNormal; + this.nNextBranch[0] = CTja.ECourse.eNormal; + this.nDisplayedBranchLane[0] = CTja.ECourse.eNormal; this.b強制的に分岐させた[0] = true; } else if (OpenTaiko.ConfigIni.KeyAssign.KeyIsPressed(OpenTaiko.ConfigIni.KeyAssign.Drums.TrainingBranchExpert) && (OpenTaiko.ConfigIni.bTokkunMode || OpenTaiko.ConfigIni.bAutoPlay[0])) // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen. { - if (!OpenTaiko.DTX.bHasBranch[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]) return; + if (!OpenTaiko.TJA.bHasBranch[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]) return; //listBRANCHを廃止したため強制分岐の開始値を //rc演奏用タイマ.n現在時刻msから引っ張ることに @@ -2706,21 +2649,21 @@ internal abstract class CStage演奏画面共通 : CStage { if (p判定枠に最も近いチップ != null) db一小節後 = ((15000.0 / p判定枠に最も近いチップ.dbBPM * (p判定枠に最も近いチップ.fNow_Measure_s / p判定枠に最も近いチップ.fNow_Measure_m)) * 16.0); - this.t分岐処理(CDTX.ECourse.eExpert, 0, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) + db一小節後); + this.t分岐処理(CTja.ECourse.eExpert, 0, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) + db一小節後); - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[0].nAfter, CDTX.ECourse.eExpert, 0); - OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[0], CDTX.ECourse.eExpert, 0); + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[0].nAfter, CTja.ECourse.eExpert, 0); + OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[0], CTja.ECourse.eExpert, 0); - this.n現在のコース[0] = CDTX.ECourse.eExpert; - this.n次回のコース[0] = CDTX.ECourse.eExpert; - this.nレーン用表示コース[0] = CDTX.ECourse.eExpert; + this.nCurrentBranch[0] = CTja.ECourse.eExpert; + this.nNextBranch[0] = CTja.ECourse.eExpert; + this.nDisplayedBranchLane[0] = CTja.ECourse.eExpert; this.b強制的に分岐させた[0] = true; } else if (OpenTaiko.ConfigIni.KeyAssign.KeyIsPressed(OpenTaiko.ConfigIni.KeyAssign.Drums.TrainingBranchMaster) && (OpenTaiko.ConfigIni.bTokkunMode || OpenTaiko.ConfigIni.bAutoPlay[0])) // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen. { - if (!OpenTaiko.DTX.bHasBranch[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]) return; + if (!OpenTaiko.TJA.bHasBranch[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]) return; //listBRANCHを廃止したため強制分岐の開始値を //rc演奏用タイマ.n現在時刻msから引っ張ることに @@ -2732,14 +2675,14 @@ internal abstract class CStage演奏画面共通 : CStage { if (p判定枠に最も近いチップ != null) db一小節後 = ((15000.0 / p判定枠に最も近いチップ.dbBPM * (p判定枠に最も近いチップ.fNow_Measure_s / p判定枠に最も近いチップ.fNow_Measure_m)) * 16.0); - this.t分岐処理(CDTX.ECourse.eMaster, 0, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) + db一小節後); + this.t分岐処理(CTja.ECourse.eMaster, 0, (SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed) + db一小節後); - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[0].nAfter, CDTX.ECourse.eMaster, 0); - OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[0], CDTX.ECourse.eMaster, 0); + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[0].nAfter, CTja.ECourse.eMaster, 0); + OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[0], CTja.ECourse.eMaster, 0); - this.n現在のコース[0] = CDTX.ECourse.eMaster; - this.n次回のコース[0] = CDTX.ECourse.eMaster; - this.nレーン用表示コース[0] = CDTX.ECourse.eMaster; + this.nCurrentBranch[0] = CTja.ECourse.eMaster; + this.nNextBranch[0] = CTja.ECourse.eMaster; + this.nDisplayedBranchLane[0] = CTja.ECourse.eMaster; this.b強制的に分岐させた[0] = true; } @@ -2845,7 +2788,7 @@ internal abstract class CStage演奏画面共通 : CStage { } } protected void tパネル文字列の設定() { - var panelString = string.IsNullOrEmpty(OpenTaiko.DTX.PANEL) ? OpenTaiko.DTX.TITLE.GetString("") : OpenTaiko.DTX.PANEL; + var panelString = string.IsNullOrEmpty(OpenTaiko.TJA.PANEL) ? OpenTaiko.TJA.TITLE.GetString("") : OpenTaiko.TJA.PANEL; this.actPanel.SetPanelString(panelString, OpenTaiko.stageSongSelect.rChoosenSong.songGenrePanel, @@ -2870,7 +2813,7 @@ internal abstract class CStage演奏画面共通 : CStage { if ((base.ePhaseID == CStage.EPhase.Game_STAGE_FAILED) || (base.ePhaseID == CStage.EPhase.Game_STAGE_FAILED_FadeOut)) { return true; } - if ((this.n現在のトップChip == -1) || (this.n現在のトップChip >= listChip[nPlayer].Count)) { + if ((this.nCurrentTopChip == -1) || (this.nCurrentTopChip >= listChip[nPlayer].Count)) { return true; } if (IsDanFailed) { @@ -2885,35 +2828,31 @@ internal abstract class CStage演奏画面共通 : CStage { this.actChara.b演奏中[nPlayer] = false; } - var db現在の譜面スクロール速度 = this.act譜面スクロール速度.db現在の譜面スクロール速度; + var dbCurrentScrollSpeed = this.actScrollSpeed.dbConfigScrollSpeed; //double speed = 264.0; // BPM150の時の1小節の長さ[dot] const double speed = 324.0; // BPM150の時の1小節の長さ[dot] - double ScrollSpeedDrums = ((db現在の譜面スクロール速度[nPlayer] + 1.0) * speed) * 0.5 * 37.5 / 60000.0; - double ScrollSpeedGuitar = (db現在の譜面スクロール速度[nPlayer] + 1.0) * 0.5 * 0.5 * 37.5 * speed / 60000.0; - double ScrollSpeedBass = (db現在の譜面スクロール速度[nPlayer] + 1.0) * 0.5 * 0.5 * 37.5 * speed / 60000.0; - double ScrollSpeedTaiko = ((db現在の譜面スクロール速度[nPlayer] + 1.0) * speed) * 0.5 * 37.5 / 60000.0; - + double ScrollSpeedTaiko = ((dbCurrentScrollSpeed[nPlayer] + 1.0) * speed) * 0.5 * 37.5 / 60000.0; CConfigIni configIni = OpenTaiko.ConfigIni; - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; bool bAutoPlay = configIni.bAutoPlay[nPlayer]; switch (nPlayer) //2017.08.11 kairera0467 { case 1: bAutoPlay = configIni.bAutoPlay[nPlayer] || OpenTaiko.ConfigIni.bAIBattleMode; - dTX = OpenTaiko.DTX_2P; + dTX = OpenTaiko.TJA_2P; break; case 2: - dTX = OpenTaiko.DTX_3P; + dTX = OpenTaiko.TJA_3P; break; case 3: - dTX = OpenTaiko.DTX_4P; + dTX = OpenTaiko.TJA_4P; break; case 4: - dTX = OpenTaiko.DTX_5P; + dTX = OpenTaiko.TJA_5P; break; default: break; @@ -2930,19 +2869,16 @@ internal abstract class CStage演奏画面共通 : CStage { //for ( int nCurrentTopChip = this.n現在のトップChip; nCurrentTopChip < dTX.listChip.Count; nCurrentTopChip++ ) for (int nCurrentTopChip = dTX.listChip.Count - 1; nCurrentTopChip > 0; nCurrentTopChip--) { - CDTX.CChip pChip = dTX.listChip[nCurrentTopChip]; + CChip pChip = dTX.listChip[nCurrentTopChip]; //Debug.WriteLine( "nCurrentTopChip=" + nCurrentTopChip + ", ch=" + pChip.nチャンネル番号.ToString("x2") + ", 発音位置=" + pChip.n発声位置 + ", 発声時刻ms=" + pChip.n発声時刻ms ); long time = pChip.n発声時刻ms - n現在時刻ms; - pChip.nバーからの距離dot.Drums = (int)(time * ScrollSpeedDrums); - pChip.nバーからの距離dot.Guitar = (int)(time * ScrollSpeedGuitar); - pChip.nバーからの距離dot.Bass = (int)(time * ScrollSpeedBass); - double _scrollSpeed = pChip.dbSCROLL * (db現在の譜面スクロール速度[nPlayer] + 1.0) / 10.0; - double _scrollSpeed_Y = pChip.dbSCROLL_Y * (db現在の譜面スクロール速度[nPlayer] + 1.0) / 10.0; - pChip.nバーからの距離dot.Taiko = NotesManager.GetNoteX(pChip, time * pChip.dbBPM, _scrollSpeed, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, false); - if (pChip.nノーツ終了時刻ms != 0) { - pChip.nバーからのノーツ末端距離dot = NotesManager.GetNoteX(pChip, (pChip.nノーツ終了時刻ms - n現在時刻ms) * pChip.dbBPM, _scrollSpeed, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, true); - pChip.nバーからのノーツ末端距離dot_Y = NotesManager.GetNoteY(pChip, (pChip.nノーツ終了時刻ms - n現在時刻ms) * pChip.dbBPM, _scrollSpeed_Y, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, true); + double _scrollSpeed = pChip.dbSCROLL * (dbCurrentScrollSpeed[nPlayer] + 1.0) / 10.0; + double _scrollSpeed_Y = pChip.dbSCROLL_Y * (dbCurrentScrollSpeed[nPlayer] + 1.0) / 10.0; + pChip.nHorizontalChipDistance = NotesManager.GetNoteX(pChip, time * pChip.dbBPM, _scrollSpeed, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, false); + if (pChip.nNoteEndTimems != 0) { + pChip.nNoteTipDistance_X = NotesManager.GetNoteX(pChip, (pChip.nNoteEndTimems - n現在時刻ms) * pChip.dbBPM, _scrollSpeed, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, true); + pChip.nNoteTipDistance_Y = NotesManager.GetNoteY(pChip, (pChip.nNoteEndTimems - n現在時刻ms) * pChip.dbBPM, _scrollSpeed_Y, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, true); } @@ -2955,8 +2891,6 @@ internal abstract class CStage演奏画面共通 : CStage { */ } - int instIndex = (int)pChip.e楽器パート; - if (!pChip.IsMissed && !pChip.bHit) { if (NotesManager.IsMissableNote(pChip))//|| pChip.nチャンネル番号 == 0x9A ) { @@ -2971,7 +2905,7 @@ internal abstract class CStage演奏画面共通 : CStage { } } - if (pChip.nバーからの距離dot[instIndex] < -150) { + if (pChip.nHorizontalChipDistance < -150) { if (!(NotesManager.IsMissableNote(pChip))) { //2016.02.11 kairera0467 //太鼓の単音符の場合は座標による判定を行わない。 @@ -2985,7 +2919,7 @@ internal abstract class CStage演奏画面共通 : CStage { //if( cChipCurrentlyInProcess.nチャンネル番号 >= 0x13 && cChipCurrentlyInProcess.nチャンネル番号 <= 0x15 )//|| pChip.nチャンネル番号 == 0x9A ) if (NotesManager.IsBigNote(cChipCurrentlyInProcess)) { - if (((cChipCurrentlyInProcess.nバーからの距離dot.Taiko < -500) && (cChipCurrentlyInProcess.n発声時刻ms <= n現在時刻ms && cChipCurrentlyInProcess.nノーツ終了時刻ms >= n現在時刻ms))) + if (((cChipCurrentlyInProcess.nHorizontalChipDistance < -500) && (cChipCurrentlyInProcess.n発声時刻ms <= n現在時刻ms && cChipCurrentlyInProcess.nNoteEndTimems >= n現在時刻ms))) //( ( chip現在処理中の連打チップ.nバーからのノーツ末端距離dot.Taiko < -500 ) && ( chip現在処理中の連打チップ.n発声時刻ms <= CSound管理.rc演奏用タイマ.n現在時刻ms && chip現在処理中の連打チップ.nノーツ終了時刻ms >= CSound管理.rc演奏用タイマ.n現在時刻ms ) ) ) //( ( pChip.n発声時刻ms <= CSound管理.rc演奏用タイマ.n現在時刻ms && pChip.nノーツ終了時刻ms >= CSound管理.rc演奏用タイマ.n現在時刻ms ) ) ) { @@ -3000,7 +2934,7 @@ internal abstract class CStage演奏画面共通 : CStage { NowProcessingChip[pChip.nPlayerSide] = nCurrentTopChip; } - switch (pChip.nチャンネル番号) { + switch (pChip.nChannelNo) { #region [ 01: BGM ] case 0x01: // BGM if (!pChip.bHit && time < 0) { @@ -3061,19 +2995,19 @@ internal abstract class CStage演奏画面共通 : CStage { //常時実行メソッドに渡したら対応できた!? //if ((!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))) { - if ((pChip.n発声時刻ms <= (int)n現在時刻ms && pChip.nノーツ終了時刻ms >= (int)n現在時刻ms)) { + if ((pChip.n発声時刻ms <= (int)n現在時刻ms && pChip.nNoteEndTimems >= (int)n現在時刻ms)) { //if( this.n現在のコース == pChip.nコース ) - if (pChip.b可視 == true) + if (pChip.bVisible == true) this.chip現在処理中の連打チップ[nPlayer] = pChip; } } if (!pChip.bProcessed && time < 0) { if (NotesManager.IsKusudama(pChip)) { - if (!this.b連打中[nPlayer] && nPlayer == 0) { + if (!this.bCurrentlyDrumRoll[nPlayer] && nPlayer == 0) { actBalloon.KusuIn(); actChara.KusuIn(); for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - this.b連打中[i] = true; + this.bCurrentlyDrumRoll[i] = true; this.actChara.b風船連打中[i] = true; } } @@ -3081,19 +3015,19 @@ internal abstract class CStage演奏画面共通 : CStage { nCurrentKusudamaRollCount = 0; nCurrentKusudamaCount += pChip.nBalloon; for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - n風船残り[i] = nCurrentKusudamaCount; + nBalloonRemaining[i] = nCurrentKusudamaCount; } pChip.bProcessed = true; } } - if (pChip.n描画優先度 <= 0) + if (pChip.nDisplayPriority <= 0) this.t進行描画_チップ_Taiko連打(configIni, ref dTX, ref pChip, nPlayer); } break; case 0x18: { if ((!pChip.bProcessed && time < 0)) { - this.b連打中[nPlayer] = false; + this.bCurrentlyDrumRoll[nPlayer] = false; this.actRoll.b表示[nPlayer] = false; this.actChara.b風船連打中[nPlayer] = false; pChip.bProcessed = true; @@ -3146,7 +3080,7 @@ internal abstract class CStage演奏画面共通 : CStage { CFloorManagement.damage(); if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) this.nMine[actDan.NowShowingNumber]++; - this.actCombo.n現在のコンボ数[nPlayer] = 0; + this.actCombo.nCurrentCombo[nPlayer] = 0; if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) this.nCombo[actDan.NowShowingNumber] = 0; this.actComboVoice.tReset(nPlayer); @@ -3158,7 +3092,7 @@ internal abstract class CStage演奏画面共通 : CStage { } this.eRollState = ERollState.None; } - if (pChip.n描画優先度 <= 0) + if (pChip.nDisplayPriority <= 0) this.t進行描画_チップ_Taiko連打(configIni, ref dTX, ref pChip, nPlayer); } @@ -3177,12 +3111,12 @@ internal abstract class CStage演奏画面共通 : CStage { #region [ 20-2F: EmptySlot ] case 0x20: case 0x21: { - if ((pChip.n発声時刻ms <= (int)n現在時刻ms && pChip.nノーツ終了時刻ms >= (int)n現在時刻ms)) { + if ((pChip.n発声時刻ms <= (int)n現在時刻ms && pChip.nNoteEndTimems >= (int)n現在時刻ms)) { //if( this.n現在のコース == pChip.nコース ) - if (pChip.b可視 == true) + if (pChip.bVisible == true) this.chip現在処理中の連打チップ[nPlayer] = pChip; } - if (pChip.n描画優先度 <= 0) + if (pChip.nDisplayPriority <= 0) this.t進行描画_チップ_Taiko連打(configIni, ref dTX, ref pChip, nPlayer); } break; @@ -3268,7 +3202,7 @@ internal abstract class CStage演奏画面共通 : CStage { if ((dTX.listVD.TryGetValue(pChip.n整数値_内部番号, out CVideoDecoder vd))) { ShowVideo = true; if (OpenTaiko.ConfigIni.bEnableAVI && vd != null) { - this.actAVI.Start(pChip.nチャンネル番号, vd); + this.actAVI.Start(pChip.nChannelNo, vd); this.actAVI.Seek(pChip.VideoStartTimeMs); } } @@ -3289,7 +3223,7 @@ internal abstract class CStage演奏画面共通 : CStage { if ((dTX.listVD.TryGetValue(1, out CVideoDecoder vd2))) { ShowVideo = true; if (OpenTaiko.ConfigIni.bEnableAVI && vd != null) { - this.actAVI.Start(pChip.nチャンネル番号, vd); + this.actAVI.Start(pChip.nChannelNo, vd); } } } @@ -3358,11 +3292,11 @@ internal abstract class CStage演奏画面共通 : CStage { if (!pChip.bHit && time < 0) { pChip.bHit = true; this.actPanel.t歌詞テクスチャを削除する(); - if (pChip.nコース == this.n現在のコース[nPlayer]) { + if (pChip.nBranch == this.nCurrentBranch[nPlayer]) { this.actDan.Update(); if (ListDan_Number != 0 && actDan.FirstSectionAnime) { if (this.actDan.GetFailedAllChallenges()) { - this.n現在のトップChip = OpenTaiko.DTX.listChip.Count - 1; // 終端にシーク + this.nCurrentTopChip = OpenTaiko.TJA.listChip.Count - 1; // 終端にシーク IsDanFailed = true; return true; } @@ -3381,8 +3315,8 @@ internal abstract class CStage演奏画面共通 : CStage { //CDTXMania.act文字コンソール.tPrint( 414 + pChip.nバーからの距離dot.Taiko + 8, 192, C文字コンソール.Eフォント種別.白, "BPMCHANGE" ); if (!pChip.bHit && time < 0) { pChip.bHit = true; - if (pChip.nコース == this.n現在のコース[nPlayer]) { - if (dTX.listBPM.TryGetValue(pChip.n整数値_内部番号, out CDTX.CBPM cBPM)) { + if (pChip.nBranch == this.nCurrentBranch[nPlayer]) { + if (dTX.listBPM.TryGetValue(pChip.n整数値_内部番号, out CTja.CBPM cBPM)) { this.actPlayInfo.dbBPM[nPlayer] = cBPM.dbBPM値;// + dTX.BASEBPM; } @@ -3782,7 +3716,7 @@ internal abstract class CStage演奏画面共通 : CStage { if (!pChip.bHit && time < 0) { //Debug.WriteLine( "[DA(AddMixer)] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値.ToString( "x2" ) + ", time=" + pChip.n発声時刻ms ); pChip.bHit = true; - if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CDTX.CWAV wc)) // 参照が遠いので後日最適化する + if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CTja.CWAV wc)) // 参照が遠いので後日最適化する { for (int i = 0; i < nPolyphonicSounds; i++) { if (wc.rSound[i] != null) { @@ -3799,7 +3733,7 @@ internal abstract class CStage演奏画面共通 : CStage { if (!pChip.bHit && time < 0) { //Debug.WriteLine( "[DB(RemoveMixer)] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値.ToString( "x2" ) + ", time=" + pChip.n発声時刻ms ); pChip.bHit = true; - if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CDTX.CWAV wc)) // 参照が遠いので後日最適化する + if (listWAV.TryGetValue(pChip.n整数値_内部番号, out CTja.CWAV wc)) // 参照が遠いので後日最適化する { for (int i = 0; i < nPolyphonicSounds; i++) { if (wc.rSound[i] != null) { @@ -3837,12 +3771,12 @@ internal abstract class CStage演奏画面共通 : CStage { if (!pChip.bHit && time < 0) { this.b強制分岐譜面[nPlayer] = false; //分岐の種類はプレイヤー関係ないと思う - this.eBranch種類 = pChip.e分岐の種類; - this.nBranch条件数値A = pChip.n条件数値A; - this.nBranch条件数値B = pChip.n条件数値B; + this.eBranch種類 = pChip.eBranchCondition; + this.nBranch条件数値A = pChip.nBranchCondition1_Professional; + this.nBranch条件数値B = pChip.nBranchCondition2_Master; if (!this.bLEVELHOLD[nPlayer]) { //成仏2000にある-2,-1だったら達人に強制分岐みたいな。 - this.t強制用条件かを判断する(pChip.n条件数値A, pChip.n条件数値B, nPlayer); + this.t強制用条件かを判断する(pChip.nBranchCondition1_Professional, pChip.nBranchCondition2_Master, nPlayer); OpenTaiko.stage演奏ドラム画面.bUseBranch[nPlayer] = true; @@ -3855,13 +3789,13 @@ internal abstract class CStage演奏画面共通 : CStage { this.tBranchJudge(pChip, branchScore.cBigNotes, branchScore.nScore, branchScore.nRoll, branchScore.nGreat, branchScore.nGood, branchScore.nMiss, nPlayer); if (this.b強制分岐譜面[nPlayer])//強制分岐譜面だったら次回コースをそのコースにセット - this.n次回のコース[nPlayer] = this.E強制コース[nPlayer]; + this.nNextBranch[nPlayer] = this.E強制コース[nPlayer]; - this.t分岐処理(this.n次回のコース[nPlayer], nPlayer, pChip.n分岐時刻ms, pChip.e分岐の種類); + this.t分岐処理(this.nNextBranch[nPlayer], nPlayer, pChip.n分岐時刻ms, pChip.eBranchCondition); - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[nPlayer].nAfter, this.n次回のコース[nPlayer], nPlayer); - OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[nPlayer], this.n次回のコース[nPlayer], nPlayer); - this.n現在のコース[nPlayer] = this.n次回のコース[nPlayer]; + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.t分岐レイヤー_コース変化(OpenTaiko.stage演奏ドラム画面.actLaneTaiko.stBranch[nPlayer].nAfter, this.nNextBranch[nPlayer], nPlayer); + OpenTaiko.stage演奏ドラム画面.actMtaiko.tBranchEvent(OpenTaiko.stage演奏ドラム画面.actMtaiko.After[nPlayer], this.nNextBranch[nPlayer], nPlayer); + this.nCurrentBranch[nPlayer] = this.nNextBranch[nPlayer]; } this.n分岐した回数[nPlayer]++; pChip.bHit = true; @@ -3913,7 +3847,7 @@ internal abstract class CStage演奏画面共通 : CStage { case 0xFF: if (!pChip.bHit && time < 0) { if (OpenTaiko.ConfigIni.bTokkunMode) { - foreach (CDTX.CWAV cwav in OpenTaiko.DTX.listWAV.Values) { + foreach (CTja.CWAV cwav in OpenTaiko.TJA.listWAV.Values) { for (int i = 0; i < nPolyphonicSounds; i++) { if ((cwav.rSound[i] != null) && cwav.rSound[i].IsPlaying) { return false; @@ -4063,8 +3997,8 @@ internal abstract class CStage演奏画面共通 : CStage { } } - foreach (KeyValuePair pair in objHandlers) { - CDTX.CChip chip = pair.Key; + foreach (KeyValuePair pair in objHandlers) { + CChip chip = pair.Key; CCounter counter = pair.Value; if (counter != null) { @@ -4081,19 +4015,19 @@ internal abstract class CStage演奏画面共通 : CStage { value = float.IsNaN(value) ? chip.fObjStart : value; } - if (chip.nチャンネル番号 == 0xBE) chip.obj.y = value; - if (chip.nチャンネル番号 == 0xC0) chip.obj.x = value; - if (chip.nチャンネル番号 == 0xC2) chip.obj.yScale = value; - if (chip.nチャンネル番号 == 0xC4) chip.obj.xScale = value; - if (chip.nチャンネル番号 == 0xC6) chip.obj.rotation = value; - if (chip.nチャンネル番号 == 0xC8) chip.obj.opacity = (int)value; + if (chip.nChannelNo == 0xBE) chip.obj.y = value; + if (chip.nChannelNo == 0xC0) chip.obj.x = value; + if (chip.nChannelNo == 0xC2) chip.obj.yScale = value; + if (chip.nChannelNo == 0xC4) chip.obj.xScale = value; + if (chip.nChannelNo == 0xC6) chip.obj.rotation = value; + if (chip.nChannelNo == 0xC8) chip.obj.opacity = (int)value; - if (chip.nチャンネル番号 == 0xCB) chip.obj.y = value; - if (chip.nチャンネル番号 == 0xCC) chip.obj.x = value; - if (chip.nチャンネル番号 == 0xCD) chip.obj.yScale = value; - if (chip.nチャンネル番号 == 0xCE) chip.obj.xScale = value; - if (chip.nチャンネル番号 == 0xCF) chip.obj.rotation = value; - if (chip.nチャンネル番号 == 0xD0) chip.obj.opacity = (int)value; + if (chip.nChannelNo == 0xCB) chip.obj.y = value; + if (chip.nChannelNo == 0xCC) chip.obj.x = value; + if (chip.nChannelNo == 0xCD) chip.obj.yScale = value; + if (chip.nChannelNo == 0xCE) chip.obj.xScale = value; + if (chip.nChannelNo == 0xCF) chip.obj.rotation = value; + if (chip.nChannelNo == 0xD0) chip.obj.opacity = (int)value; } } #endregion @@ -4105,28 +4039,28 @@ internal abstract class CStage演奏画面共通 : CStage { if ((base.ePhaseID == CStage.EPhase.Game_STAGE_FAILED) || (base.ePhaseID == CStage.EPhase.Game_STAGE_FAILED_FadeOut)) { return true; } - if ((this.n現在のトップChip == -1) || (this.n現在のトップChip >= listChip[nPlayer].Count)) { + if ((this.nCurrentTopChip == -1) || (this.nCurrentTopChip >= listChip[nPlayer].Count)) { return true; } CConfigIni configIni = OpenTaiko.ConfigIni; - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; bool bAutoPlay = configIni.bAutoPlay[nPlayer]; switch (nPlayer) //2017.08.11 kairera0467 { case 1: bAutoPlay = configIni.bAutoPlay[nPlayer] || OpenTaiko.ConfigIni.bAIBattleMode; - dTX = OpenTaiko.DTX_2P; + dTX = OpenTaiko.TJA_2P; break; case 2: - dTX = OpenTaiko.DTX_3P; + dTX = OpenTaiko.TJA_3P; break; case 3: - dTX = OpenTaiko.DTX_4P; + dTX = OpenTaiko.TJA_4P; break; case 4: - dTX = OpenTaiko.DTX_5P; + dTX = OpenTaiko.TJA_5P; break; default: break; @@ -4136,13 +4070,12 @@ internal abstract class CStage演奏画面共通 : CStage { //for ( int nCurrentTopChip = this.n現在のトップChip; nCurrentTopChip < dTX.listChip.Count; nCurrentTopChip++ ) for (int nCurrentTopChip = dTX.listChip.Count - 1; nCurrentTopChip > 0; nCurrentTopChip--) { - CDTX.CChip pChip = dTX.listChip[nCurrentTopChip]; + CChip pChip = dTX.listChip[nCurrentTopChip]; if (!pChip.bHit) { bool bRollChip = NotesManager.IsGenericRoll(pChip);// pChip.nチャンネル番号 >= 0x15 && pChip.nチャンネル番号 <= 0x19; - if (bRollChip && ((pChip.e楽器パート != EInstrumentPad.Unknown))) { - int instIndex = (int)pChip.e楽器パート; - if (pChip.nバーからの距離dot[instIndex] < -40) { + if (bRollChip) { + if (pChip.nHorizontalChipDistance < -40) { if (this.e指定時刻からChipのJUDGEを返す(n現在時刻ms, pChip, nPlayer) == ENoteJudge.Miss) { this.tチップのヒット処理(n現在時刻ms, pChip, EInstrumentPad.Taiko, false, 0, nPlayer); } @@ -4150,7 +4083,7 @@ internal abstract class CStage演奏画面共通 : CStage { } } - switch (pChip.nチャンネル番号) { + switch (pChip.nChannelNo) { #region[ 15-19: Rolls ] case 0x15: //連打 case 0x16: //連打(大) @@ -4160,7 +4093,7 @@ internal abstract class CStage演奏画面共通 : CStage { case 0x1D: case 0x20: case 0x21: { - if (pChip.n描画優先度 >= 1) + if (pChip.nDisplayPriority >= 1) this.t進行描画_チップ_Taiko連打(configIni, ref dTX, ref pChip, nPlayer); } break; @@ -4197,108 +4130,108 @@ internal abstract class CStage演奏画面共通 : CStage { } } - public void tBranchJudge(CDTX.CChip pChip, CBRANCHSCORE cBRANCHSCORE, int nスコア, int n連打数, int n良, int n可, int n不可, int nPlayer) { + public void tBranchJudge(CChip pChip, CBRANCHSCORE cBRANCHSCORE, int nスコア, int n連打数, int n良, int n可, int n不可, int nPlayer) { // Branch check score here if (this.b強制的に分岐させた[nPlayer]) return; - var e種類 = pChip.e分岐の種類; + var e種類 = pChip.eBranchCondition; //分岐の仕方が同じなので一緒にしていいと思う。 - var b分岐種類が一致 = e種類 == CDTX.E分岐種類.e精度分岐 || e種類 == CDTX.E分岐種類.eスコア分岐; + var b分岐種類が一致 = e種類 == CTja.EBranchConditionType.Accuracy || e種類 == CTja.EBranchConditionType.Score; double dbRate = 0; - if (e種類 == CDTX.E分岐種類.e精度分岐) { + if (e種類 == CTja.EBranchConditionType.Accuracy) { if ((n良 + n可 + n不可) != 0) { dbRate = (((double)n良 + (double)n可 * 0.5) / (double)(n良 + n可 + n不可)) * 100.0; } - } else if (e種類 == CDTX.E分岐種類.eスコア分岐) { + } else if (e種類 == CTja.EBranchConditionType.Score) { dbRate = nスコア; - } else if (e種類 == CDTX.E分岐種類.e連打分岐) { + } else if (e種類 == CTja.EBranchConditionType.Drumroll) { dbRate = n連打数; - } else if (e種類 == CDTX.E分岐種類.e大音符のみ精度分岐) { + } else if (e種類 == CTja.EBranchConditionType.Accuracy_BigNotesOnly) { dbRate = cBRANCHSCORE.nGreat; } if (b分岐種類が一致) { - if (dbRate < pChip.n条件数値A) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eNormal; - this.n次回のコース[nPlayer] = CDTX.ECourse.eNormal; - } else if (dbRate >= pChip.n条件数値A && dbRate < pChip.n条件数値B) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eExpert; - this.n次回のコース[nPlayer] = CDTX.ECourse.eExpert; - } else if (dbRate >= pChip.n条件数値B) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eMaster; - this.n次回のコース[nPlayer] = CDTX.ECourse.eMaster; + if (dbRate < pChip.nBranchCondition1_Professional) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eNormal; + this.nNextBranch[nPlayer] = CTja.ECourse.eNormal; + } else if (dbRate >= pChip.nBranchCondition1_Professional && dbRate < pChip.nBranchCondition2_Master) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eExpert; + this.nNextBranch[nPlayer] = CTja.ECourse.eExpert; + } else if (dbRate >= pChip.nBranchCondition2_Master) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eMaster; + this.nNextBranch[nPlayer] = CTja.ECourse.eMaster; } - } else if (e種類 == CDTX.E分岐種類.e連打分岐) { - if (!(pChip.n条件数値A == 0 && pChip.n条件数値B == 0)) { - if (dbRate < pChip.n条件数値A) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eNormal; - this.n次回のコース[nPlayer] = CDTX.ECourse.eNormal; - } else if (dbRate >= pChip.n条件数値A && dbRate < pChip.n条件数値B) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eExpert; - this.n次回のコース[nPlayer] = CDTX.ECourse.eExpert; - } else if (dbRate >= pChip.n条件数値B) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eMaster; - this.n次回のコース[nPlayer] = CDTX.ECourse.eMaster; + } else if (e種類 == CTja.EBranchConditionType.Drumroll) { + if (!(pChip.nBranchCondition1_Professional == 0 && pChip.nBranchCondition2_Master == 0)) { + if (dbRate < pChip.nBranchCondition1_Professional) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eNormal; + this.nNextBranch[nPlayer] = CTja.ECourse.eNormal; + } else if (dbRate >= pChip.nBranchCondition1_Professional && dbRate < pChip.nBranchCondition2_Master) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eExpert; + this.nNextBranch[nPlayer] = CTja.ECourse.eExpert; + } else if (dbRate >= pChip.nBranchCondition2_Master) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eMaster; + this.nNextBranch[nPlayer] = CTja.ECourse.eMaster; } } - } else if (e種類 == CDTX.E分岐種類.e大音符のみ精度分岐) { - if (!(pChip.n条件数値A == 0 && pChip.n条件数値B == 0)) { - if (dbRate < pChip.n条件数値A) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eNormal; - this.n次回のコース[nPlayer] = CDTX.ECourse.eNormal; - } else if (dbRate >= pChip.n条件数値A && dbRate < pChip.n条件数値B) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eExpert; - this.n次回のコース[nPlayer] = CDTX.ECourse.eExpert; - } else if (dbRate >= pChip.n条件数値B) { - this.nレーン用表示コース[nPlayer] = CDTX.ECourse.eMaster; - this.n次回のコース[nPlayer] = CDTX.ECourse.eMaster; + } else if (e種類 == CTja.EBranchConditionType.Accuracy_BigNotesOnly) { + if (!(pChip.nBranchCondition1_Professional == 0 && pChip.nBranchCondition2_Master == 0)) { + if (dbRate < pChip.nBranchCondition1_Professional) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eNormal; + this.nNextBranch[nPlayer] = CTja.ECourse.eNormal; + } else if (dbRate >= pChip.nBranchCondition1_Professional && dbRate < pChip.nBranchCondition2_Master) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eExpert; + this.nNextBranch[nPlayer] = CTja.ECourse.eExpert; + } else if (dbRate >= pChip.nBranchCondition2_Master) { + this.nDisplayedBranchLane[nPlayer] = CTja.ECourse.eMaster; + this.nNextBranch[nPlayer] = CTja.ECourse.eMaster; } } } } - private CDTX.ECourse[] E強制コース = new CDTX.ECourse[5]; + private CTja.ECourse[] E強制コース = new CTja.ECourse[5]; private void t強制用条件かを判断する(double db条件A, double db条件B, int nPlayer) { //Wiki参考 //成仏 if (db条件A == 101 && db条件B == 102) //強制普通譜面 { - E強制コース[nPlayer] = CDTX.ECourse.eNormal; + E強制コース[nPlayer] = CTja.ECourse.eNormal; this.b強制分岐譜面[nPlayer] = true; } else if (db条件A == -1 && db条件B == 101) //強制玄人譜面 { - E強制コース[nPlayer] = CDTX.ECourse.eExpert; + E強制コース[nPlayer] = CTja.ECourse.eExpert; this.b強制分岐譜面[nPlayer] = true; } else if (db条件A == -2 && db条件B == -1) //強制達人譜面 { - E強制コース[nPlayer] = CDTX.ECourse.eMaster; + E強制コース[nPlayer] = CTja.ECourse.eMaster; this.b強制分岐譜面[nPlayer] = true; } } - public void t分岐処理(CDTX.ECourse n分岐先, int nPlayer, double n発声位置, CDTX.E分岐種類 e分岐種類 = CDTX.E分岐種類.e精度分岐) { + public void t分岐処理(CTja.ECourse n分岐先, int nPlayer, double n発声位置, CTja.EBranchConditionType e分岐種類 = CTja.EBranchConditionType.Accuracy) { - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; switch (nPlayer) { case 1: - dTX = OpenTaiko.DTX_2P; + dTX = OpenTaiko.TJA_2P; break; case 2: - dTX = OpenTaiko.DTX_3P; + dTX = OpenTaiko.TJA_3P; break; case 3: - dTX = OpenTaiko.DTX_4P; + dTX = OpenTaiko.TJA_4P; break; case 4: - dTX = OpenTaiko.DTX_5P; + dTX = OpenTaiko.TJA_5P; break; default: break; @@ -4306,7 +4239,7 @@ internal abstract class CStage演奏画面共通 : CStage { for (int A = 0; A < dTX.listChip.Count; A++) { - var Chip = dTX.listChip[A].nチャンネル番号; + var Chip = dTX.listChip[A].nChannelNo; var _chip = dTX.listChip[A]; var bDontDeleteFlag = NotesManager.IsHittableNote(_chip);// Chip >= 0x11 && Chip <= 0x19; @@ -4316,35 +4249,35 @@ internal abstract class CStage演奏画面共通 : CStage { if (bDontDeleteFlag) { if (dTX.listChip[A].n発声時刻ms > n発声位置) { - if (dTX.listChip[A].nコース == n分岐先) { - dTX.listChip[A].b可視 = true; + if (dTX.listChip[A].nBranch == n分岐先) { + dTX.listChip[A].bVisible = true; if (dTX.listChip[A].IsEndedBranching) { if (bRollAllFlag)//共通譜面時かつ、連打譜面だったら非可視化 { dTX.listChip[A].bHit = true; dTX.listChip[A].bShow = false; - dTX.listChip[A].b可視 = false; + dTX.listChip[A].bVisible = false; } } } else { if (!dTX.listChip[A].IsEndedBranching) - dTX.listChip[A].b可視 = false; + dTX.listChip[A].bVisible = false; } //共通なため分岐させない. dTX.listChip[A].eNoteState = ENoteState.None; - if (dTX.listChip[A].IsEndedBranching && (dTX.listChip[A].nコース == CDTX.ECourse.eNormal)) { + if (dTX.listChip[A].IsEndedBranching && (dTX.listChip[A].nBranch == CTja.ECourse.eNormal)) { if (bRollOnlyFlag)//共通譜面時かつ、連打譜面だったら可視化 { dTX.listChip[A].bHit = false; dTX.listChip[A].bShow = true; - dTX.listChip[A].b可視 = true; + dTX.listChip[A].bVisible = true; } else { if (bBalloonOnlyFlag)//共通譜面時かつ、風船譜面だったら可視化 { dTX.listChip[A].bShow = true; - dTX.listChip[A].b可視 = true; + dTX.listChip[A].bVisible = true; } } } @@ -4354,10 +4287,10 @@ internal abstract class CStage演奏画面共通 : CStage { } public int GetRoll(int player) { - return n合計連打数[player]; + return nTotalRollCount[player]; } - protected float GetNowPBMTime(CDTX tja, float play_time) { + protected float GetNowPBMTime(CTja tja, float play_time) { float bpm_time = 0; int last_input = 0; float last_bpm_change_time; @@ -4366,14 +4299,14 @@ internal abstract class CStage演奏画面共通 : CStage { for (int i = 1; ; i++) { //BPMCHANGEの数越えた if (i >= tja.listBPM.Count) { - CDTX.CBPM cBPM = tja.listBPM[last_input]; + CTja.CBPM cBPM = tja.listBPM[last_input]; bpm_time = (float)cBPM.bpm_change_bmscroll_time + ((play_time - (float)cBPM.bpm_change_time) * (float)cBPM.dbBPM値 / 15000.0f); last_bpm_change_time = (float)cBPM.bpm_change_time; break; } for (; i < tja.listBPM.Count; i++) { - CDTX.CBPM cBPM = tja.listBPM[i]; - if (cBPM.bpm_change_time == 0 || cBPM.bpm_change_course == this.n現在のコース[0]) { + CTja.CBPM cBPM = tja.listBPM[i]; + if (cBPM.bpm_change_time == 0 || cBPM.bpm_change_course == this.nCurrentBranch[0]) { break; } } @@ -4383,7 +4316,7 @@ internal abstract class CStage演奏画面共通 : CStage { } if (play_time < tja.listBPM[i].bpm_change_time) { - CDTX.CBPM cBPM = tja.listBPM[last_input]; + CTja.CBPM cBPM = tja.listBPM[last_input]; bpm_time = (float)cBPM.bpm_change_bmscroll_time + ((play_time - (float)cBPM.bpm_change_time) * (float)cBPM.dbBPM値 / 15000.0f); last_bpm_change_time = (float)cBPM.bpm_change_time; break; @@ -4396,7 +4329,7 @@ internal abstract class CStage演奏画面共通 : CStage { } public void t再読込() { - OpenTaiko.DTX.t全チップの再生停止とミキサーからの削除(); + OpenTaiko.TJA.t全チップの再生停止とミキサーからの削除(); this.eフェードアウト完了時の戻り値 = EGameplayScreenReturnValue.ReloadAndReplay; base.ePhaseID = CStage.EPhase.Game_Reload; this.bPAUSE = false; @@ -4436,7 +4369,7 @@ internal abstract class CStage演奏画面共通 : CStage { OpenTaiko.borderColor = new Color4(1f, 0f, 0f, 0f); - foreach (var chip in OpenTaiko.DTX.listChip) { + foreach (var chip in OpenTaiko.TJA.listChip) { if (chip.obj == null) continue; chip.obj.isVisible = false; chip.obj.yScale = 1.0f; @@ -4446,10 +4379,10 @@ internal abstract class CStage演奏画面共通 : CStage { chip.obj.frame = 0; } - OpenTaiko.DTX.t全チップの再生停止とミキサーからの削除(); + OpenTaiko.TJA.t全チップの再生停止とミキサーからの削除(); this.t数値の初期化(true, true); //this.actAVI.Stop(); - foreach (var vd in OpenTaiko.DTX.listVD) { + foreach (var vd in OpenTaiko.TJA.listVD) { vd.Value.Stop(); } this.actAVI.Stop(); @@ -4482,32 +4415,32 @@ internal abstract class CStage演奏画面共通 : CStage { } public void t停止() { - OpenTaiko.DTX.t全チップの再生停止とミキサーからの削除(); - foreach (var vd in OpenTaiko.DTX.listVD) { + OpenTaiko.TJA.t全チップの再生停止とミキサーからの削除(); + foreach (var vd in OpenTaiko.TJA.listVD) { vd.Value.Stop(); } this.actAVI.Stop(); this.actPanel.Stop(); // PANEL表示停止 OpenTaiko.Timer.Pause(); // 再生時刻カウンタ停止 - this.n現在のトップChip = OpenTaiko.DTX.listChip.Count - 1; // 終端にシーク + this.nCurrentTopChip = OpenTaiko.TJA.listChip.Count - 1; // 終端にシーク // 自分自身のOn活性化()相当の処理もすべき。 } public void t数値の初期化(bool b演奏記録, bool b演奏状態) { if (b演奏記録) { - this.nヒット数_Auto含む.Taiko.Perfect = 0; - this.nヒット数_Auto含む.Taiko.Great = 0; - this.nヒット数_Auto含む.Taiko.Good = 0; - this.nヒット数_Auto含む.Taiko.Poor = 0; - this.nヒット数_Auto含む.Taiko.Miss = 0; + this.nHitCount_InclAuto.Taiko.Perfect = 0; + this.nHitCount_InclAuto.Taiko.Great = 0; + this.nHitCount_InclAuto.Taiko.Good = 0; + this.nHitCount_InclAuto.Taiko.Poor = 0; + this.nHitCount_InclAuto.Taiko.Miss = 0; - this.nヒット数_Auto含まない.Taiko.Perfect = 0; - this.nヒット数_Auto含まない.Taiko.Great = 0; - this.nヒット数_Auto含まない.Taiko.Good = 0; - this.nヒット数_Auto含まない.Taiko.Poor = 0; - this.nヒット数_Auto含まない.Taiko.Miss = 0; + this.nHitCount_ExclAuto.Taiko.Perfect = 0; + this.nHitCount_ExclAuto.Taiko.Great = 0; + this.nHitCount_ExclAuto.Taiko.Good = 0; + this.nHitCount_ExclAuto.Taiko.Poor = 0; + this.nHitCount_ExclAuto.Taiko.Miss = 0; this.actCombo.Activate(); this.actScore.Activate(); @@ -4521,12 +4454,12 @@ internal abstract class CStage演奏画面共通 : CStage { this.bIsMiss[i] = false; this.bLEVELHOLD[i] = false; this.b強制的に分岐させた[i] = false; - this.b譜面分岐中[i] = false; - this.b連打中[i] = false; - this.n現在のコース[i] = 0; - this.n次回のコース[i] = 0; - this.n現在の連打数[i] = 0; - this.n合計連打数[i] = 0; + this.bBranchedChart[i] = false; + this.bCurrentlyDrumRoll[i] = false; + this.nCurrentBranch[i] = 0; + this.nNextBranch[i] = 0; + this.nCurrentRollCount[i] = 0; + this.nTotalRollCount[i] = 0; this.n分岐した回数[i] = 0; } for (int i = 0; i < 5; i++) { @@ -4537,27 +4470,27 @@ internal abstract class CStage演奏画面共通 : CStage { nCurrentKusudamaCount = 0; nCurrentKusudamaRollCount = 0; - this.ReSetScore(OpenTaiko.DTX.nScoreInit[0, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]], OpenTaiko.DTX.nScoreDiff[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]); + this.ReSetScore(OpenTaiko.TJA.nScoreInit[0, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]], OpenTaiko.TJA.nScoreDiff[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]); this.nHand = new int[] { 0, 0, 0, 0, 0 }; } public void t演奏位置の変更(int nStartBar, int nPlayer) { // まず全サウンドオフにする - OpenTaiko.DTX.t全チップの再生停止(); + OpenTaiko.TJA.t全チップの再生停止(); this.actAVI.Stop(); - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; switch (nPlayer) { case 1: - dTX = OpenTaiko.DTX_2P; + dTX = OpenTaiko.TJA_2P; break; case 2: - dTX = OpenTaiko.DTX_3P; + dTX = OpenTaiko.TJA_3P; break; case 3: - dTX = OpenTaiko.DTX_4P; + dTX = OpenTaiko.TJA_4P; break; case 4: - dTX = OpenTaiko.DTX_5P; + dTX = OpenTaiko.TJA_5P; break; default: break; @@ -4576,7 +4509,7 @@ internal abstract class CStage演奏画面共通 : CStage { dTX.listChip[i].bHit = false; dTX.listChip[i].bShow = true; dTX.listChip[i].bProcessed = false; - dTX.listChip[i].b可視 = true; + dTX.listChip[i].bVisible = true; dTX.listChip[i].IsHitted = false; dTX.listChip[i].IsMissed = false; dTX.listChip[i].eNoteState = ENoteState.None; @@ -4590,33 +4523,33 @@ internal abstract class CStage演奏画面共通 : CStage { //for ( int i = this.n現在のトップChip; i < CDTXMania.DTX.listChip.Count; i++ ) bool bSuccessSeek = false; for (int i = 0; i < dTX.listChip.Count; i++) { - CDTX.CChip pChip = dTX.listChip[i]; + CChip pChip = dTX.listChip[i]; if (nStartBar == 0) { if (pChip.n発声位置 < 384 * nStartBar) { continue; } else { bSuccessSeek = true; - this.n現在のトップChip = i; + this.nCurrentTopChip = i; break; } } else { - if (pChip.nチャンネル番号 == 0x50 && pChip.n整数値_内部番号 > nStartBar - 1) { + if (pChip.nChannelNo == 0x50 && pChip.n整数値_内部番号 > nStartBar - 1) { bSuccessSeek = true; - this.n現在のトップChip = i; + this.nCurrentTopChip = i; break; } } } if (!bSuccessSeek) { // this.n現在のトップChip = CDTXMania.DTX.listChip.Count - 1; - this.n現在のトップChip = 0; // 対象小節が存在しないなら、最初から再生 + this.nCurrentTopChip = 0; // 対象小節が存在しないなら、最初から再生 } else { - while (this.n現在のトップChip != 0 && dTX.listChip[this.n現在のトップChip].n発声時刻ms == dTX.listChip[OpenTaiko.stage演奏ドラム画面.n現在のトップChip - 1].n発声時刻ms) - OpenTaiko.stage演奏ドラム画面.n現在のトップChip--; + while (this.nCurrentTopChip != 0 && dTX.listChip[this.nCurrentTopChip].n発声時刻ms == dTX.listChip[OpenTaiko.stage演奏ドラム画面.nCurrentTopChip - 1].n発声時刻ms) + OpenTaiko.stage演奏ドラム画面.nCurrentTopChip--; } #endregion #region [ 演奏開始の発声時刻msを取得し、タイマに設定 ] - int nStartTime = (int)(dTX.listChip[this.n現在のトップChip].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed); + int nStartTime = (int)(dTX.listChip[this.nCurrentTopChip].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed); SoundManager.PlayTimer.Reset(); // これでPAUSE解除されるので、次のPAUSEチェックは不要 //if ( !this.bPAUSE ) @@ -4629,20 +4562,20 @@ internal abstract class CStage演奏画面共通 : CStage { List pausedCSound = new List(); #region [ BGMやギターなど、演奏開始のタイミングで再生がかかっているサウンドのの途中再生開始 ] // (CDTXのt入力_行解析_チップ配置()で小節番号が+1されているのを削っておくこと) - for (int i = this.n現在のトップChip; i >= 0; i--) { - CDTX.CChip pChip = dTX.listChip[i]; + for (int i = this.nCurrentTopChip; i >= 0; i--) { + CChip pChip = dTX.listChip[i]; int nDuration = pChip.GetDuration(); long n発声時刻ms = (long)(pChip.n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed); if ((n発声時刻ms + nDuration > 0) && (n発声時刻ms <= nStartTime) && (nStartTime <= n発声時刻ms + nDuration)) { - if (pChip.nチャンネル番号 == 0x01 && (pChip.nチャンネル番号 >> 4) != 0xB) // wav系チャンネル、且つ、空打ちチップではない + if (pChip.nChannelNo == 0x01 && (pChip.nChannelNo >> 4) != 0xB) // wav系チャンネル、且つ、空打ちチップではない { - CDTX.CWAV wc; + CTja.CWAV wc; bool b = dTX.listWAV.TryGetValue(pChip.n整数値_内部番号, out wc); if (!b) continue; if ((wc.bIsBGMSound && OpenTaiko.ConfigIni.bBGMPlayVoiceSound) || (!wc.bIsBGMSound)) { - OpenTaiko.DTX.tチップの再生(pChip, (long)(SoundManager.PlayTimer.PrevResetTime) + (long)(pChip.n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed)); + OpenTaiko.TJA.tチップの再生(pChip, (long)(SoundManager.PlayTimer.PrevResetTime) + (long)(pChip.n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed)); #region [ PAUSEする ] int j = wc.n現在再生中のサウンド番号; if (wc.rSound[j] != null) { @@ -4659,7 +4592,7 @@ internal abstract class CStage演奏画面共通 : CStage { #region [ 演奏開始時点で既に表示されているBGAとAVIの、シークと再生 ] if (dTX.listVD.Count > 0) { for (int i = 0; i < dTX.listChip.Count; i++) { - if (dTX.listChip[i].nチャンネル番号 == 0x54) { + if (dTX.listChip[i].nChannelNo == 0x54) { if (dTX.listChip[i].n発声時刻ms <= nStartTime) { this.actAVI.Seek(nStartTime - dTX.listChip[i].n発声時刻ms); this.actAVI.Start(0x54, this.actAVI.rVD); @@ -4706,13 +4639,13 @@ internal abstract class CStage演奏画面共通 : CStage { } - protected abstract void t進行描画_チップ_ドラムス(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip); - protected abstract void t進行描画_チップ本体_ドラムス(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip); - protected abstract void t進行描画_チップ_Taiko(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, int nPlayer); - protected abstract void t進行描画_チップ_Taiko連打(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, int nPlayer); + protected abstract void t進行描画_チップ_ドラムス(CConfigIni configIni, ref CTja dTX, ref CChip pChip); + protected abstract void t進行描画_チップ本体_ドラムス(CConfigIni configIni, ref CTja dTX, ref CChip pChip); + protected abstract void t進行描画_チップ_Taiko(CConfigIni configIni, ref CTja dTX, ref CChip pChip, int nPlayer); + protected abstract void t進行描画_チップ_Taiko連打(CConfigIni configIni, ref CTja dTX, ref CChip pChip, int nPlayer); - protected abstract void t進行描画_チップ_フィルイン(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip); - protected abstract void t進行描画_チップ_小節線(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, int nPlayer); + protected abstract void t進行描画_チップ_フィルイン(CConfigIni configIni, ref CTja dTX, ref CChip pChip); + protected abstract void t進行描画_チップ_小節線(CConfigIni configIni, ref CTja dTX, ref CChip pChip, int nPlayer); protected void t進行描画_チップアニメ() { for (int i = 0; i < 5; i++) { ctChipAnime[i].TickLoopDB(); @@ -4752,8 +4685,8 @@ internal abstract class CStage演奏画面共通 : CStage { } } protected void t進行描画_背景() { - if (this.tx背景 != null) { - this.tx背景.t2D描画(0, 0); + if (this.txBgImage != null) { + this.txBgImage.t2D描画(0, 0); } } @@ -4765,20 +4698,20 @@ internal abstract class CStage演奏画面共通 : CStage { } protected void t進行描画_譜面スクロール速度() { - this.act譜面スクロール速度.Draw(); + this.actScrollSpeed.Draw(); } protected abstract void t紙吹雪_開始(); protected abstract void t背景テクスチャの生成(); protected void t背景テクスチャの生成(string DefaultBgFilename, Rectangle bgrect, string bgfilename) { try { if (!String.IsNullOrEmpty(bgfilename)) - this.tx背景 = OpenTaiko.tテクスチャの生成(OpenTaiko.stageSongSelect.r確定されたスコア.ファイル情報.フォルダの絶対パス + bgfilename); + this.txBgImage = OpenTaiko.tテクスチャの生成(OpenTaiko.stageSongSelect.r確定されたスコア.ファイル情報.フォルダの絶対パス + bgfilename); else - this.tx背景 = OpenTaiko.tテクスチャの生成(CSkin.Path(DefaultBgFilename)); + this.txBgImage = OpenTaiko.tテクスチャの生成(CSkin.Path(DefaultBgFilename)); } catch (Exception e) { Trace.TraceError(e.ToString()); Trace.TraceError("例外が発生しましたが処理を継続します。 (a80767e1-4de7-4fec-b072-d078b3659e62)"); - this.tx背景 = null; + this.txBgImage = null; } } @@ -4807,11 +4740,11 @@ internal abstract class CStage演奏画面共通 : CStage { int nAddScore = 0; int[] n倍率 = { 0, 1, 2, 4, 8 }; - if (OpenTaiko.DTX.nScoreModeTmp == 1) { + if (OpenTaiko.TJA.nScoreModeTmp == 1) { for (int i = 0; i < 11; i++) { this.nScore[i] = (int)(nInit + (nDiff * (i))); } - } else if (OpenTaiko.DTX.nScoreModeTmp == 2) { + } else if (OpenTaiko.TJA.nScoreModeTmp == 2) { for (int i = 0; i < 5; i++) { this.nScore[i] = (int)(nInit + (nDiff * n倍率[i])); @@ -4831,15 +4764,15 @@ internal abstract class CStage演奏画面共通 : CStage { private CCounter ctCamVScale; private CCounter ctCamHScale; - private CDTX.CChip currentCamVMoveChip; - private CDTX.CChip currentCamHMoveChip; - private CDTX.CChip currentCamZoomChip; - private CDTX.CChip currentCamRotateChip; - private CDTX.CChip currentCamVScaleChip; - private CDTX.CChip currentCamHScaleChip; + private CChip currentCamVMoveChip; + private CChip currentCamHMoveChip; + private CChip currentCamZoomChip; + private CChip currentCamRotateChip; + private CChip currentCamVScaleChip; + private CChip currentCamHScaleChip; - private Dictionary camHandlers; - private Dictionary objHandlers; + private Dictionary camHandlers; + private Dictionary objHandlers; private Easing easing = new Easing(); diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBalloon.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBalloon.cs index 67852e30..7fae45a7 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBalloon.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBalloon.cs @@ -172,7 +172,7 @@ internal class CActImplBalloon : CActivity { } else { if (n連打数 == 0 && OpenTaiko.stage演奏ドラム画面.actChara.b風船連打中[player]) { OpenTaiko.stage演奏ドラム画面.actChara.b風船連打中[player] = false; - OpenTaiko.stage演奏ドラム画面.b連打中[player] = false; + OpenTaiko.stage演奏ドラム画面.bCurrentlyDrumRoll[player] = false; } } diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplGauge.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplGauge.cs index b7a3afbf..3c730deb 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplGauge.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplGauge.cs @@ -183,11 +183,11 @@ internal class CActImplGauge : CAct演奏ゲージ共通 { if (OpenTaiko.Tx.Gauge_Dan[2] != null) { - for (int i = 0; i < OpenTaiko.DTX.Dan_C.Length; i++) { - if (OpenTaiko.DTX.Dan_C[i] != null) { - Dan_C dan_c = OpenTaiko.DTX.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] != null ? - OpenTaiko.DTX.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] : - OpenTaiko.DTX.Dan_C[i]; + for (int i = 0; i < OpenTaiko.TJA.Dan_C.Length; i++) { + if (OpenTaiko.TJA.Dan_C[i] != null) { + Dan_C dan_c = OpenTaiko.TJA.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] != null ? + OpenTaiko.TJA.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] : + OpenTaiko.TJA.Dan_C[i]; if (dan_c.GetExamType() == Exam.Type.Gauge) { OpenTaiko.Tx.Gauge_Dan[2].t2D描画(gauge_x[0] + (dan_c.GetValue(false) / 2 * nWidth), gauge_y[0], @@ -219,10 +219,10 @@ internal class CActImplGauge : CAct演奏ゲージ共通 { else OpenTaiko.Tx.Gauge_Dan[1]?.t2D描画(x, y, new Rectangle(0, 0, nRectX[0], OpenTaiko.Skin.Game_Gauge_Rect[3])); - for (int i = 0; i < OpenTaiko.DTX.Dan_C.Length; i++) { - Dan_C dan_c = OpenTaiko.DTX.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] != null ? - OpenTaiko.DTX.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] : - OpenTaiko.DTX.Dan_C[i]; + for (int i = 0; i < OpenTaiko.TJA.Dan_C.Length; i++) { + Dan_C dan_c = OpenTaiko.TJA.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] != null ? + OpenTaiko.TJA.List_DanSongs[OpenTaiko.stage演奏ドラム画面.actDan.NowCymbolShowingNumber].Dan_C[i] : + OpenTaiko.TJA.Dan_C[i]; if (dan_c != null && dan_c.GetExamType() == Exam.Type.Gauge && db現在のゲージ値[0] >= dan_c.GetValue(false)) { OpenTaiko.Tx.Gauge_Dan[3].Opacity = 255; diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLane.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLane.cs index cc63062e..cb58ae80 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLane.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLane.cs @@ -9,12 +9,12 @@ internal class CActImplLane : CActivity { public override void Activate() { this.ct分岐アニメ進行 = new CCounter[5]; - this.nBefore = new CDTX.ECourse[5]; - this.nAfter = new CDTX.ECourse[5]; + this.nBefore = new CTja.ECourse[5]; + this.nAfter = new CTja.ECourse[5]; for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { this.ct分岐アニメ進行[i] = new CCounter(); - this.nBefore = new CDTX.ECourse[5]; - this.nAfter = new CDTX.ECourse[5]; + this.nBefore = new CTja.ECourse[5]; + this.nAfter = new CTja.ECourse[5]; this.bState[i] = false; } if (OpenTaiko.Tx.Lane_Base[0] != null) @@ -87,13 +87,13 @@ internal class CActImplLane : CActivity { } else if (this.ct分岐アニメ進行[i].IsTicked && !_laneNull) { #region[ 普通譜面_レベルアップ ] //普通→玄人 - if (nBefore[i] == 0 && nAfter[i] == CDTX.ECourse.eNormal) { + if (nBefore[i] == 0 && nAfter[i] == CTja.ECourse.eNormal) { OpenTaiko.Tx.Lane_Base[1].Opacity = this.ct分岐アニメ進行[i].CurrentValue > 100 ? 255 : ((this.ct分岐アニメ進行[i].CurrentValue * 0xff) / 100); OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[1].t2D描画(x[i], y[i]); } //普通→達人 - if (nBefore[i] == 0 && nAfter[i] == CDTX.ECourse.eMaster) { + if (nBefore[i] == 0 && nAfter[i] == CTja.ECourse.eMaster) { OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); if (this.ct分岐アニメ進行[i].CurrentValue < 100) { OpenTaiko.Tx.Lane_Base[1].Opacity = this.ct分岐アニメ進行[i].CurrentValue > 100 ? 255 : ((this.ct分岐アニメ進行[i].CurrentValue * 0xff) / 100); @@ -110,7 +110,7 @@ internal class CActImplLane : CActivity { #endregion #region[ 玄人譜面_レベルアップ ] - if (nBefore[i] == CDTX.ECourse.eExpert && nAfter[i] == CDTX.ECourse.eMaster) { + if (nBefore[i] == CTja.ECourse.eExpert && nAfter[i] == CTja.ECourse.eMaster) { OpenTaiko.Tx.Lane_Base[1].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[2].Opacity = this.ct分岐アニメ進行[i].CurrentValue > 100 ? 255 : ((this.ct分岐アニメ進行[i].CurrentValue * 0xff) / 100); OpenTaiko.Tx.Lane_Base[2].t2D描画(x[i], y[i]); @@ -118,7 +118,7 @@ internal class CActImplLane : CActivity { #endregion #region[ 玄人譜面_レベルダウン ] - if (nBefore[i] == CDTX.ECourse.eExpert && nAfter[i] == CDTX.ECourse.eNormal) { + if (nBefore[i] == CTja.ECourse.eExpert && nAfter[i] == CTja.ECourse.eNormal) { OpenTaiko.Tx.Lane_Base[1].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[0].Opacity = this.ct分岐アニメ進行[i].CurrentValue > 100 ? 255 : ((this.ct分岐アニメ進行[i].CurrentValue * 0xff) / 100); OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); @@ -126,7 +126,7 @@ internal class CActImplLane : CActivity { #endregion #region[ 達人譜面_レベルダウン ] - if (nBefore[i] == CDTX.ECourse.eMaster && nAfter[i] == CDTX.ECourse.eNormal) { + if (nBefore[i] == CTja.ECourse.eMaster && nAfter[i] == CTja.ECourse.eNormal) { OpenTaiko.Tx.Lane_Base[2].t2D描画(x[i], y[i]); if (this.ct分岐アニメ進行[i].CurrentValue < 100) { OpenTaiko.Tx.Lane_Base[1].Opacity = this.ct分岐アニメ進行[i].CurrentValue > 100 ? 255 : ((this.ct分岐アニメ進行[i].CurrentValue * 0xff) / 100); @@ -140,7 +140,7 @@ internal class CActImplLane : CActivity { OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); } } - if (nBefore[i] == CDTX.ECourse.eMaster && nAfter[i] == CDTX.ECourse.eExpert) { + if (nBefore[i] == CTja.ECourse.eMaster && nAfter[i] == CTja.ECourse.eExpert) { OpenTaiko.Tx.Lane_Base[2].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[2].Opacity = this.ct分岐アニメ進行[i].CurrentValue > 100 ? 255 : ((this.ct分岐アニメ進行[i].CurrentValue * 0xff) / 100); OpenTaiko.Tx.Lane_Base[2].t2D描画(x[i], y[i]); @@ -152,7 +152,7 @@ internal class CActImplLane : CActivity { return base.Draw(); } - public virtual void t分岐レイヤー_コース変化(CDTX.ECourse n現在, CDTX.ECourse n次回, int player) { + public virtual void t分岐レイヤー_コース変化(CTja.ECourse n現在, CTja.ECourse n次回, int player) { if (n現在 == n次回) { return; } @@ -168,8 +168,8 @@ internal class CActImplLane : CActivity { //----------------- public bool[] bState = new bool[5]; public CCounter[] ct分岐アニメ進行 = new CCounter[5]; - private CDTX.ECourse[] nBefore; - private CDTX.ECourse[] nAfter; + private CTja.ECourse[] nBefore; + private CTja.ECourse[] nAfter; private int[] n透明度 = new int[5]; //private CTexture[] tx普通譜面 = new CTexture[2]; //private CTexture[] tx玄人譜面 = new CTexture[2]; diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLaneTaiko.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLaneTaiko.cs index ce1f8058..73dc32e5 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLaneTaiko.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLaneTaiko.cs @@ -125,20 +125,20 @@ internal class CActImplLaneTaiko : CActivity { for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { if (OpenTaiko.stage演奏ドラム画面.bUseBranch[i] == true) { #region[ 動いていない ] - switch (OpenTaiko.stage演奏ドラム画面.nレーン用表示コース[i]) { - case CDTX.ECourse.eNormal: + switch (OpenTaiko.stage演奏ドラム画面.nDisplayedBranchLane[i]) { + case CTja.ECourse.eNormal: if (OpenTaiko.Tx.Lane_Base[0] != null) { OpenTaiko.Tx.Lane_Base[0].Opacity = 255; OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); } break; - case CDTX.ECourse.eExpert: + case CTja.ECourse.eExpert: if (OpenTaiko.Tx.Lane_Base[1] != null) { OpenTaiko.Tx.Lane_Base[1].Opacity = 255; OpenTaiko.Tx.Lane_Base[1].t2D描画(x[i], y[i]); } break; - case CDTX.ECourse.eMaster: + case CTja.ECourse.eMaster: if (OpenTaiko.Tx.Lane_Base[2] != null) { OpenTaiko.Tx.Lane_Base[2].Opacity = 255; OpenTaiko.Tx.Lane_Base[2].t2D描画(x[i], y[i]); @@ -159,7 +159,7 @@ internal class CActImplLaneTaiko : CActivity { #region[ 普通譜面_レベルアップ ] //普通→玄人 - if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eExpert) { + if (this.stBranch[i].nBefore == CTja.ECourse.eNormal && this.stBranch[i].nAfter == CTja.ECourse.eExpert) { if (OpenTaiko.Tx.Lane_Base[0] != null && OpenTaiko.Tx.Lane_Base[1] != null) { OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[1].Opacity = this.stBranch[i].nBranchレイヤー透明度; @@ -167,7 +167,7 @@ internal class CActImplLaneTaiko : CActivity { } } //普通→達人 - if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eMaster) { + if (this.stBranch[i].nBefore == CTja.ECourse.eNormal && this.stBranch[i].nAfter == CTja.ECourse.eMaster) { if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 100) { n透明度 = ((100 - this.stBranch[i].ct分岐アニメ進行.CurrentValue) * 0xff) / 100; } @@ -179,7 +179,7 @@ internal class CActImplLaneTaiko : CActivity { } #endregion #region[ 玄人譜面_レベルアップ ] - if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster) { + if (this.stBranch[i].nBefore == CTja.ECourse.eExpert && this.stBranch[i].nAfter == CTja.ECourse.eMaster) { if (OpenTaiko.Tx.Lane_Base[1] != null && OpenTaiko.Tx.Lane_Base[2] != null) { OpenTaiko.Tx.Lane_Base[1].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[2].t2D描画(x[i], y[i]); @@ -188,7 +188,7 @@ internal class CActImplLaneTaiko : CActivity { } #endregion #region[ 玄人譜面_レベルダウン ] - if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal) { + if (this.stBranch[i].nBefore == CTja.ECourse.eExpert && this.stBranch[i].nAfter == CTja.ECourse.eNormal) { if (OpenTaiko.Tx.Lane_Base[1] != null && OpenTaiko.Tx.Lane_Base[0] != null) { OpenTaiko.Tx.Lane_Base[1].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); @@ -197,7 +197,7 @@ internal class CActImplLaneTaiko : CActivity { } #endregion #region[ 達人譜面_レベルダウン ] - if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal) { + if (this.stBranch[i].nBefore == CTja.ECourse.eMaster && this.stBranch[i].nAfter == CTja.ECourse.eNormal) { if (OpenTaiko.Tx.Lane_Base[2] != null && OpenTaiko.Tx.Lane_Base[0] != null) { OpenTaiko.Tx.Lane_Base[2].t2D描画(x[i], y[i]); OpenTaiko.Tx.Lane_Base[0].t2D描画(x[i], y[i]); @@ -257,32 +257,32 @@ internal class CActImplLaneTaiko : CActivity { #endregion if (OpenTaiko.ConfigIni.SimpleMode) { - switch (OpenTaiko.stage演奏ドラム画面.nレーン用表示コース[i]) { - case CDTX.ECourse.eNormal: + switch (OpenTaiko.stage演奏ドラム画面.nDisplayedBranchLane[i]) { + case CTja.ECourse.eNormal: OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], y[i]); break; - case CDTX.ECourse.eExpert: + case CTja.ECourse.eExpert: OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].t2D描画(x[i], y[i]); break; - case CDTX.ECourse.eMaster: + case CTja.ECourse.eMaster: OpenTaiko.Tx.Lane_Text[2].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].t2D描画(x[i], y[i]); break; } } else if (OpenTaiko.ConfigIni.nBranchAnime == 0 && !_laneNull) { if (!this.stBranch[i].ct分岐アニメ進行.IsTicked) { - switch (OpenTaiko.stage演奏ドラム画面.nレーン用表示コース[i]) { - case CDTX.ECourse.eNormal: + switch (OpenTaiko.stage演奏ドラム画面.nDisplayedBranchLane[i]) { + case CTja.ECourse.eNormal: OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], y[i]); break; - case CDTX.ECourse.eExpert: + case CTja.ECourse.eExpert: OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].t2D描画(x[i], y[i]); break; - case CDTX.ECourse.eMaster: + case CTja.ECourse.eMaster: OpenTaiko.Tx.Lane_Text[2].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].t2D描画(x[i], y[i]); break; @@ -291,7 +291,7 @@ internal class CActImplLaneTaiko : CActivity { if (this.stBranch[i].ct分岐アニメ進行.IsTicked) { #region[ 普通譜面_レベルアップ ] //普通→玄人 - if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CDTX.ECourse.eExpert) { + if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CTja.ECourse.eExpert) { OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].Opacity = 255; @@ -311,7 +311,7 @@ internal class CActImplLaneTaiko : CActivity { } //普通→達人 - if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CDTX.ECourse.eMaster) { + if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CTja.ECourse.eMaster) { OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].Opacity = 255; @@ -346,7 +346,7 @@ internal class CActImplLaneTaiko : CActivity { #endregion #region[ 玄人譜面_レベルアップ ] //玄人→達人 - if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster) { + if (this.stBranch[i].nBefore == CTja.ECourse.eExpert && this.stBranch[i].nAfter == CTja.ECourse.eMaster) { OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].Opacity = 255; @@ -362,7 +362,7 @@ internal class CActImplLaneTaiko : CActivity { } #endregion #region[ 玄人譜面_レベルダウン ] - if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal) { + if (this.stBranch[i].nBefore == CTja.ECourse.eExpert && this.stBranch[i].nAfter == CTja.ECourse.eNormal) { OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].Opacity = 255; @@ -378,7 +378,7 @@ internal class CActImplLaneTaiko : CActivity { } #endregion #region[ 達人譜面_レベルダウン ] - if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal) { + if (this.stBranch[i].nBefore == CTja.ECourse.eMaster && this.stBranch[i].nAfter == CTja.ECourse.eNormal) { OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].Opacity = 255; @@ -403,7 +403,7 @@ internal class CActImplLaneTaiko : CActivity { OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], y[i]); } } - if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eExpert) { + if (this.stBranch[i].nBefore == CTja.ECourse.eMaster && this.stBranch[i].nAfter == CTja.ECourse.eExpert) { OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].Opacity = 255; @@ -426,16 +426,16 @@ internal class CActImplLaneTaiko : CActivity { } if (this.stBranch[i].nY座標 == 0) { - switch (OpenTaiko.stage演奏ドラム画面.nレーン用表示コース[i]) { - case CDTX.ECourse.eNormal: + switch (OpenTaiko.stage演奏ドラム画面.nDisplayedBranchLane[i]) { + case CTja.ECourse.eNormal: OpenTaiko.Tx.Lane_Text[0].Opacity = 255; OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], y[i]); break; - case CDTX.ECourse.eExpert: + case CTja.ECourse.eExpert: OpenTaiko.Tx.Lane_Text[1].Opacity = 255; OpenTaiko.Tx.Lane_Text[1].t2D描画(x[i], y[i]); break; - case CDTX.ECourse.eMaster: + case CTja.ECourse.eMaster: OpenTaiko.Tx.Lane_Text[2].Opacity = 255; OpenTaiko.Tx.Lane_Text[2].t2D描画(x[i], y[i]); break; @@ -445,13 +445,13 @@ internal class CActImplLaneTaiko : CActivity { if (this.stBranch[i].nY座標 != 0) { #region[ 普通譜面_レベルアップ ] //普通→玄人 - if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eExpert) { + if (this.stBranch[i].nBefore == CTja.ECourse.eNormal && this.stBranch[i].nAfter == CTja.ECourse.eExpert) { OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], y[i] - this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[1].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[0].Opacity = this.stBranch[i].nBranchレイヤー透明度; } //普通→達人 - if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eMaster) { + if (this.stBranch[i].nBefore == CTja.ECourse.eNormal && this.stBranch[i].nAfter == CTja.ECourse.eMaster) { OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], y[i] - this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[2].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[0].Opacity = this.stBranch[i].nBranchレイヤー透明度; @@ -459,26 +459,26 @@ internal class CActImplLaneTaiko : CActivity { #endregion #region[ 玄人譜面_レベルアップ ] //玄人→達人 - if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster) { + if (this.stBranch[i].nBefore == CTja.ECourse.eExpert && this.stBranch[i].nAfter == CTja.ECourse.eMaster) { OpenTaiko.Tx.Lane_Text[1].t2D描画(x[i], y[i] - this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[2].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[1].Opacity = this.stBranch[i].nBranchレイヤー透明度; } #endregion #region[ 玄人譜面_レベルダウン ] - if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal) { + if (this.stBranch[i].nBefore == CTja.ECourse.eExpert && this.stBranch[i].nAfter == CTja.ECourse.eNormal) { OpenTaiko.Tx.Lane_Text[1].t2D描画(x[i], y[i] + this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[1].Opacity = this.stBranch[i].nBranchレイヤー透明度; } #endregion #region[ 達人譜面_レベルダウン ] - if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal) { + if (this.stBranch[i].nBefore == CTja.ECourse.eMaster && this.stBranch[i].nAfter == CTja.ECourse.eNormal) { OpenTaiko.Tx.Lane_Text[2].t2D描画(x[i], y[i] + this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[2].Opacity = this.stBranch[i].nBranchレイヤー透明度; } - if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eExpert) { + if (this.stBranch[i].nBefore == CTja.ECourse.eMaster && this.stBranch[i].nAfter == CTja.ECourse.eExpert) { OpenTaiko.Tx.Lane_Text[2].t2D描画(x[i], y[i] + this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[1].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標); OpenTaiko.Tx.Lane_Text[2].Opacity = this.stBranch[i].nBranchレイヤー透明度; @@ -607,7 +607,7 @@ internal class CActImplLaneTaiko : CActivity { - if (OpenTaiko.ConfigIni.bEnableAVI && OpenTaiko.DTX.listVD.Count > 0 && OpenTaiko.stage演奏ドラム画面.ShowVideo) { + if (OpenTaiko.ConfigIni.bEnableAVI && OpenTaiko.TJA.listVD.Count > 0 && OpenTaiko.stage演奏ドラム画面.ShowVideo) { if (OpenTaiko.Tx.Lane_Background_Main != null) OpenTaiko.Tx.Lane_Background_Main.Opacity = OpenTaiko.ConfigIni.nBGAlpha; if (OpenTaiko.Tx.Lane_Background_AI != null) OpenTaiko.Tx.Lane_Background_AI.Opacity = OpenTaiko.ConfigIni.nBGAlpha; if (OpenTaiko.Tx.Lane_Background_Sub != null) OpenTaiko.Tx.Lane_Background_Sub.Opacity = OpenTaiko.ConfigIni.nBGAlpha; @@ -775,7 +775,7 @@ internal class CActImplLaneTaiko : CActivity { } - public void t分岐レイヤー_コース変化(CDTX.ECourse n現在, CDTX.ECourse n次回, int nPlayer) { + public void t分岐レイヤー_コース変化(CTja.ECourse n現在, CTja.ECourse n次回, int nPlayer) { if (n現在 == n次回) { return; } @@ -851,8 +851,8 @@ internal class CActImplLaneTaiko : CActivity { [StructLayout(LayoutKind.Sequential)] public struct STBRANCH { public CCounter ct分岐アニメ進行; - public CDTX.ECourse nBefore; - public CDTX.ECourse nAfter; + public CTja.ECourse nBefore; + public CTja.ECourse nAfter; public long nフラッシュ制御タイマ; public int nBranchレイヤー透明度; diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMtaiko.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMtaiko.cs index 42071426..84861154 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMtaiko.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMtaiko.cs @@ -22,8 +22,8 @@ internal class CActImplMtaiko : CActivity { this.ctレベルアップダウン = new CCounter[5]; ctSymbolFlash = new CCounter[5]; - this.After = new CDTX.ECourse[5]; - this.Before = new CDTX.ECourse[5]; + this.After = new CTja.ECourse[5]; + this.Before = new CTja.ECourse[5]; for (int i = 0; i < 5; i++) { this.ctレベルアップダウン[i] = new CCounter(); BackSymbolEvent(i); @@ -463,7 +463,7 @@ internal class CActImplMtaiko : CActivity { } - public void tBranchEvent(CDTX.ECourse Before, CDTX.ECourse After, int player) { + public void tBranchEvent(CTja.ECourse Before, CTja.ECourse After, int player) { if (After != Before) this.ctレベルアップダウン[player] = new CCounter(0, 1000, 1, OpenTaiko.Timer); @@ -569,8 +569,8 @@ internal class CActImplMtaiko : CActivity { //譜面分岐 private CCounter[] ctレベルアップダウン; - public CDTX.ECourse[] After; - public CDTX.ECourse[] Before; + public CTja.ECourse[] After; + public CTja.ECourse[] Before; private CCounter[] ctSymbolFlash = new CCounter[5]; //----------------- #endregion diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRunner.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRunner.cs index 9f8f8fe0..2bef05d2 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRunner.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRunner.cs @@ -13,7 +13,7 @@ internal class CActImplRunner : CActivity { base.IsDeActivated = true; } - public void Start(int Player, bool IsMiss, CDTX.CChip pChip) { + public void Start(int Player, bool IsMiss, CChip pChip) { if (Runner != null && !OpenTaiko.ConfigIni.SimpleMode) { while (stRunners[Index].b使用中) { Index += 1; @@ -22,7 +22,7 @@ internal class CActImplRunner : CActivity { break; // 2018.6.15 IMARER 無限ループが発生するので修正 } } - if (pChip.nチャンネル番号 < 0x15 || (pChip.nチャンネル番号 >= 0x1A)) { + if (pChip.nChannelNo < 0x15 || (pChip.nChannelNo >= 0x1A)) { if (!stRunners[Index].b使用中) { stRunners[Index].b使用中 = true; stRunners[Index].nPlayer = Player; diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScore.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScore.cs index 6d34f7c5..5221673c 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScore.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScore.cs @@ -32,11 +32,11 @@ internal class CActImplScore : CAct演奏スコア共通 { } for (int i = 0; i < 5; i++) { - if (!this.ctボーナス加算タイマ[i].IsStoped) { - this.ctボーナス加算タイマ[i].Tick(); - if (this.ctボーナス加算タイマ[i].IsEnded) { + if (!this.ctBonusAddTimer[i].IsStoped) { + this.ctBonusAddTimer[i].Tick(); + if (this.ctBonusAddTimer[i].IsEnded) { OpenTaiko.stage演奏ドラム画面.actScore.BonusAdd(i); - this.ctボーナス加算タイマ[i].Stop(); + this.ctBonusAddTimer[i].Stop(); } } } diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplTrainingMode.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplTrainingMode.cs index 2f974b85..8fc6942f 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplTrainingMode.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplTrainingMode.cs @@ -15,7 +15,7 @@ class CActImplTrainingMode : CActivity { base.Activate(); - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; var measureCount = 1; var bIsInGoGo = false; @@ -23,15 +23,15 @@ class CActImplTrainingMode : CActivity { int endtime = 1; int bgmlength = 1; - for (int index = 0; index < OpenTaiko.DTX.listChip.Count; index++) { - if (OpenTaiko.DTX.listChip[index].nチャンネル番号 == 0xff) { - endtime = OpenTaiko.DTX.listChip[index].n発声時刻ms; + for (int index = 0; index < OpenTaiko.TJA.listChip.Count; index++) { + if (OpenTaiko.TJA.listChip[index].nChannelNo == 0xff) { + endtime = OpenTaiko.TJA.listChip[index].n発声時刻ms; break; } } - for (int index = 0; index < OpenTaiko.DTX.listChip.Count; index++) { - if (OpenTaiko.DTX.listChip[index].nチャンネル番号 == 0x01) { - bgmlength = OpenTaiko.DTX.listChip[index].GetDuration() + OpenTaiko.DTX.listChip[index].n発声時刻ms; + for (int index = 0; index < OpenTaiko.TJA.listChip.Count; index++) { + if (OpenTaiko.TJA.listChip[index].nChannelNo == 0x01) { + bgmlength = OpenTaiko.TJA.listChip[index].GetDuration() + OpenTaiko.TJA.listChip[index].n発声時刻ms; break; } } @@ -42,11 +42,11 @@ class CActImplTrainingMode : CActivity { JumpPointList = new List(); for (int i = 0; i < dTX.listChip.Count; i++) { - CDTX.CChip pChip = dTX.listChip[i]; + CChip pChip = dTX.listChip[i]; - if (pChip.n整数値_内部番号 > measureCount && pChip.nチャンネル番号 == 0x50) measureCount = pChip.n整数値_内部番号; + if (pChip.n整数値_内部番号 > measureCount && pChip.nChannelNo == 0x50) measureCount = pChip.n整数値_内部番号; - if (pChip.nチャンネル番号 == 0x9E && !bIsInGoGo) { + if (pChip.nChannelNo == 0x9E && !bIsInGoGo) { bIsInGoGo = true; var current = ((double)(pChip.db発声時刻ms * OpenTaiko.ConfigIni.SongPlaybackSpeed)); @@ -55,7 +55,7 @@ class CActImplTrainingMode : CActivity { this.gogoXList.Add((int)(width * (current / length))); } - if (pChip.nチャンネル番号 == 0x9F && bIsInGoGo) { + if (pChip.nChannelNo == 0x9F && bIsInGoGo) { bIsInGoGo = false; } } @@ -263,8 +263,8 @@ class CActImplTrainingMode : CActivity { if (this.ctBackgroundScrollTimer != null) { this.ctBackgroundScrollTimer.TickLoop(); - double TexSize = OpenTaiko.Skin.Resolution[0] / OpenTaiko.Tx.Tokkun_Background_Up.szTextureSize.Width; - // 1280をテクスチャサイズで割ったものを切り上げて、プラス+1足す。 + double TexSize = OpenTaiko.Skin.Resolution[0] / OpenTaiko.Tx.Tokkun_Background_Up.szTextureSize.Width; + // 1280をテクスチャサイズで割ったものを切り上げて、プラス+1足す。 int ForLoop = (int)Math.Ceiling(TexSize) + 1; OpenTaiko.Tx.Tokkun_Background_Up.t2D描画(0 - this.ctBackgroundScrollTimer.CurrentValue, OpenTaiko.Skin.Background_Scroll_Y[0]); for (int l = 1; l < ForLoop + 1; l++) { @@ -325,7 +325,7 @@ class CActImplTrainingMode : CActivity { } public void tPausePlay() { - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; this.nスクロール後ms = SoundManager.PlayTimer.NowTimeMs; @@ -333,15 +333,15 @@ class CActImplTrainingMode : CActivity { SoundManager.PlayTimer.Pause(); for (int i = 0; i < dTX.listChip.Count; i++) { - CDTX.CChip pChip = dTX.listChip[i]; + CChip pChip = dTX.listChip[i]; pChip.bHit = false; - if (dTX.listChip[i].nチャンネル番号 != 0x50) { + if (dTX.listChip[i].nChannelNo != 0x50) { pChip.bShow = true; - pChip.b可視 = true; + pChip.bVisible = true; } } - OpenTaiko.DTX.t全チップの再生一時停止(); + OpenTaiko.TJA.t全チップの再生一時停止(); OpenTaiko.stage演奏ドラム画面.bPAUSE = true; OpenTaiko.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] = this.nCurrentMeasure; this.bTrainingPAUSE = true; @@ -351,12 +351,12 @@ class CActImplTrainingMode : CActivity { } public void tResumePlay() { - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; this.bCurrentlyScrolling = false; SoundManager.PlayTimer.NowTimeMs = this.nスクロール後ms; - int n演奏開始Chip = OpenTaiko.stage演奏ドラム画面.n現在のトップChip; + int n演奏開始Chip = OpenTaiko.stage演奏ドラム画面.nCurrentTopChip; int finalStartBar; finalStartBar = this.nCurrentMeasure - 2; @@ -365,29 +365,29 @@ class CActImplTrainingMode : CActivity { OpenTaiko.stage演奏ドラム画面.t演奏位置の変更(finalStartBar, 0); - int n少し戻ってから演奏開始Chip = OpenTaiko.stage演奏ドラム画面.n現在のトップChip; + int n少し戻ってから演奏開始Chip = OpenTaiko.stage演奏ドラム画面.nCurrentTopChip; OpenTaiko.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] = 0; OpenTaiko.stage演奏ドラム画面.t数値の初期化(true, true); OpenTaiko.stage演奏ドラム画面.Activate(); if (OpenTaiko.ConfigIni.bTokkunMode && OpenTaiko.stage演奏ドラム画面.actBalloon.KusudamaIsActive) OpenTaiko.stage演奏ドラム画面.actBalloon.KusuMiss(); - for (int i = 0; i < dTX.listChip.Count; i++) { - - //if (i < n演奏開始Chip && (dTX.listChip[i].nチャンネル番号 > 0x10 && dTX.listChip[i].nチャンネル番号 < 0x20)) //2020.07.08 ノーツだけ消す。 null参照回避のために順番変更 + for (int i = 0; i < dTX.listChip.Count; i++) { + + //if (i < n演奏開始Chip && (dTX.listChip[i].nチャンネル番号 > 0x10 && dTX.listChip[i].nチャンネル番号 < 0x20)) //2020.07.08 ノーツだけ消す。 null参照回避のために順番変更 if (i < n演奏開始Chip && NotesManager.IsHittableNote(dTX.listChip[i])) { dTX.listChip[i].bHit = true; dTX.listChip[i].IsHitted = true; - dTX.listChip[i].b可視 = false; + dTX.listChip[i].bVisible = false; dTX.listChip[i].bShow = false; } - if (i < n少し戻ってから演奏開始Chip && dTX.listChip[i].nチャンネル番号 == 0x01) { + if (i < n少し戻ってから演奏開始Chip && dTX.listChip[i].nChannelNo == 0x01) { dTX.listChip[i].bHit = true; dTX.listChip[i].IsHitted = true; - dTX.listChip[i].b可視 = false; + dTX.listChip[i].bVisible = false; dTX.listChip[i].bShow = false; } - if (dTX.listChip[i].nチャンネル番号 == 0x50 && dTX.listChip[i].n整数値_内部番号 < finalStartBar) { + if (dTX.listChip[i].nChannelNo == 0x50 && dTX.listChip[i].n整数値_内部番号 < finalStartBar) { dTX.listChip[i].bHit = true; dTX.listChip[i].IsHitted = true; } @@ -404,32 +404,32 @@ class CActImplTrainingMode : CActivity { public void tMatchWithTheChartDisplayPosition(bool doScroll) { this.nスクロール前ms = SoundManager.PlayTimer.NowTimeMs; - CDTX dTX = OpenTaiko.DTX; + CTja dTX = OpenTaiko.TJA; bool bSuccessSeek = false; for (int i = 0; i < dTX.listChip.Count; i++) { - CDTX.CChip pChip = dTX.listChip[i]; + CChip pChip = dTX.listChip[i]; - if (pChip.nチャンネル番号 == 0x50 && pChip.n整数値_内部番号 > nCurrentMeasure - 1) { + if (pChip.nChannelNo == 0x50 && pChip.n整数値_内部番号 > nCurrentMeasure - 1) { bSuccessSeek = true; - OpenTaiko.stage演奏ドラム画面.n現在のトップChip = i; + OpenTaiko.stage演奏ドラム画面.nCurrentTopChip = i; break; } } if (!bSuccessSeek) { - OpenTaiko.stage演奏ドラム画面.n現在のトップChip = 0; + OpenTaiko.stage演奏ドラム画面.nCurrentTopChip = 0; } else { - while (dTX.listChip[OpenTaiko.stage演奏ドラム画面.n現在のトップChip].n発声時刻ms == dTX.listChip[OpenTaiko.stage演奏ドラム画面.n現在のトップChip - 1].n発声時刻ms && OpenTaiko.stage演奏ドラム画面.n現在のトップChip != 0) - OpenTaiko.stage演奏ドラム画面.n現在のトップChip--; + while (dTX.listChip[OpenTaiko.stage演奏ドラム画面.nCurrentTopChip].n発声時刻ms == dTX.listChip[OpenTaiko.stage演奏ドラム画面.nCurrentTopChip - 1].n発声時刻ms && OpenTaiko.stage演奏ドラム画面.nCurrentTopChip != 0) + OpenTaiko.stage演奏ドラム画面.nCurrentTopChip--; } if (doScroll) { - this.nスクロール後ms = (long)(dTX.listChip[OpenTaiko.stage演奏ドラム画面.n現在のトップChip].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed); + this.nスクロール後ms = (long)(dTX.listChip[OpenTaiko.stage演奏ドラム画面.nCurrentTopChip].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed); this.bCurrentlyScrolling = true; this.ctScrollCounter = new CCounter(0, OpenTaiko.Skin.Game_Training_ScrollTime, 1, OpenTaiko.Timer); } else { - SoundManager.PlayTimer.NowTimeMs = (long)(dTX.listChip[OpenTaiko.stage演奏ドラム画面.n現在のトップChip].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed); + SoundManager.PlayTimer.NowTimeMs = (long)(dTX.listChip[OpenTaiko.stage演奏ドラム画面.nCurrentTopChip].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed); this.nスクロール後ms = SoundManager.PlayTimer.NowTimeMs; } } @@ -457,8 +457,8 @@ class CActImplTrainingMode : CActivity { } public int nCurrentMeasure; - public int nMeasureCount; - + public int nMeasureCount; + #region [private] private long nスクロール前ms; private long nスクロール後ms; @@ -480,8 +480,8 @@ class CActImplTrainingMode : CActivity { private struct STJUMPP { public long Time; public int Measure; - } - + } + /// /// /// @@ -500,7 +500,7 @@ class CActImplTrainingMode : CActivity { t = t - 2; return (int)(c / 2 * (Math.Sqrt(1 - t * t) + 1) + b); } - } - + } + #endregion } diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsゲームモード.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsゲームモード.cs index 21bf6c6b..15a62625 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsゲームモード.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsゲームモード.cs @@ -87,7 +87,7 @@ internal class CAct演奏Drumsゲームモード : CActivity { public void t叩ききりまショー_初期化() { this.st叩ききりまショー = new ST叩ききりまショー(); - this.n演奏時間 = (OpenTaiko.DTX.listChip.Count > 0) ? OpenTaiko.DTX.listChip[OpenTaiko.DTX.listChip.Count - 1].n発声時刻ms : 0; + this.n演奏時間 = (OpenTaiko.TJA.listChip.Count > 0) ? OpenTaiko.TJA.listChip[OpenTaiko.TJA.listChip.Count - 1].n発声時刻ms : 0; this.st叩ききりまショー.ct残り時間 = new CCounter(0, 25000, 1, OpenTaiko.Timer); this.st叩ききりまショー.ct加算時間表示 = new CCounter(); this.st叩ききりまショー.ct加算審査中 = new CCounter(); @@ -248,7 +248,7 @@ internal class CAct演奏Drumsゲームモード : CActivity { }; //★10の場合超激辛モードになる。 - if (OpenTaiko.DTX.LEVELtaiko[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]] >= 10) { + if (OpenTaiko.TJA.LEVELtaiko[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]] >= 10) { #region[ 超激辛 ] this.st叩ききりまショー.b超激辛 = true; @@ -549,8 +549,8 @@ internal class CAct演奏Drumsゲームモード : CActivity { } } #region[ 全体 ] - if (OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect != 0 || OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great != 0) { - double db全体精度 = ((double)(OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great) / this.st叩ききりまショー.n区間ノート数) * 100.0; + if (OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Perfect != 0 || OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Great != 0) { + double db全体精度 = ((double)(OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Great) / this.st叩ききりまショー.n区間ノート数) * 100.0; for (int i = 0; i < this.n全体精度ボーナス.Length; i++) { if (db全体精度 >= this.n全体精度ボーナス[i].ret) { n延長する時間 += this.n全体精度ボーナス[i].point; @@ -570,8 +570,8 @@ internal class CAct演奏Drumsゲームモード : CActivity { } } #endregion - if (OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[0] != 0) { - double db全体コンボ率 = ((double)OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[0] / this.st叩ききりまショー.n現在通過したノート数) * 100.0; + if (OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[0] != 0) { + double db全体コンボ率 = ((double)OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[0] / this.st叩ききりまショー.n現在通過したノート数) * 100.0; for (int i = 0; i < this.n全体コンボ率ボーナス.Length; i++) { if (db全体コンボ率 >= this.n全体コンボ率ボーナス[i].ret) { n延長する時間 += this.n全体コンボ率ボーナス[i].point; @@ -580,7 +580,7 @@ internal class CAct演奏Drumsゲームモード : CActivity { } } - double db全体ミス率 = (((double)OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Poor + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss) / this.st叩ききりまショー.n現在通過したノート数) * 100.0; + double db全体ミス率 = (((double)OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Poor + OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Miss) / this.st叩ききりまショー.n現在通過したノート数) * 100.0; for (int i = 0; i < this.n全体ミス率ボーナス.Length; i++) { if (db全体ミス率 >= this.n全体ミス率ボーナス[i].ret) { n延長する時間 += this.n全体ミス率ボーナス[i].point; diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs index 76757cb8..3bac99bd 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs @@ -7,9 +7,9 @@ using Point = System.Drawing.Point; using Rectangle = System.Drawing.Rectangle; namespace OpenTaiko; -internal class CStage演奏ドラム画面 : CStage演奏画面共通 { - // コンストラクタ - +internal class CStage演奏ドラム画面 : CStage演奏画面共通 { + // コンストラクタ + public CStage演奏ドラム画面() { base.eStageID = CStage.EStage.Game; base.ePhaseID = CStage.EPhase.Common_NORMAL; @@ -22,12 +22,12 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { base.ChildActivities.Add(this.actJudgeString = new CActImplJudgeText()); base.ChildActivities.Add(this.actTaikoLaneFlash = new TaikoLaneFlash()); base.ChildActivities.Add(this.actScore = new CActImplScore()); - base.ChildActivities.Add(this.act譜面スクロール速度 = new CAct演奏スクロール速度()); + base.ChildActivities.Add(this.actScrollSpeed = new CActTaikoScrollSpeed()); base.ChildActivities.Add(this.actAVI = new CAct演奏AVI()); base.ChildActivities.Add(this.actPanel = new CAct演奏パネル文字列()); base.ChildActivities.Add(this.actStageFailed = new CAct演奏ステージ失敗()); - base.ChildActivities.Add(this.actPlayInfo = new CAct演奏演奏情報()); - //base.list子Activities.Add( this.actFI = new CActFIFOBlack() ); + base.ChildActivities.Add(this.actPlayInfo = new CAct演奏演奏情報()); + //base.list子Activities.Add( this.actFI = new CActFIFOBlack() ); base.ChildActivities.Add(this.actFI = new CActFIFOStart()); base.ChildActivities.Add(this.actFO = new CActFIFOBlack()); base.ChildActivities.Add(this.actFOClear = new CActFIFOResult()); @@ -57,7 +57,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { base.ChildActivities.Add(this.actDan = new Dan_Cert()); base.ChildActivities.Add(this.actTokkun = new CActImplTrainingMode()); - base.ChildActivities.Add(this.actAIBattle = new AIBattle()); + base.ChildActivities.Add(this.actAIBattle = new AIBattle()); #region[ 文字初期化 ] ST文字位置[] st文字位置Array = new ST文字位置[12]; ST文字位置 st文字位置 = new ST文字位置(); @@ -159,46 +159,46 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { st文字位置12.ch = ' '; st文字位置12.pt = new Point(0, 0); st文字位置Array[11] = st文字位置12; - this.st小文字位置 = st文字位置Array; + this.st小文字位置 = st文字位置Array; #endregion - } - - - // メソッド - + } + + + // メソッド + public void t演奏結果を格納する(out CScoreIni.C演奏記録 Drums) { base.t演奏結果を格納する_ドラム(out Drums); - } - - - // CStage 実装 - + } + + + // CStage 実装 + public override void Activate() { LoudnessMetadataScanner.StopBackgroundScanning(joinImmediately: false); this.bフィルイン中 = false; this.n待機中の大音符の座標 = 0; this.actGame.t叩ききりまショー_初期化(); - base.ReSetScore(OpenTaiko.DTX.nScoreInit[0, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]], OpenTaiko.DTX.nScoreDiff[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]); - + base.ReSetScore(OpenTaiko.TJA.nScoreInit[0, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]], OpenTaiko.TJA.nScoreDiff[OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]]); + #region [ branch ] for (int i = 0; i < 5; i++) { this.n分岐した回数[i] = 0; this.bLEVELHOLD[i] = false; } this.nBranch条件数値A = 0; - this.nBranch条件数値B = 0; + this.nBranch条件数値B = 0; #endregion - - if ((OpenTaiko.DTX.listVD.TryGetValue(1, out CVideoDecoder vd2))) { + + if ((OpenTaiko.TJA.listVD.TryGetValue(1, out CVideoDecoder vd2))) { ShowVideo = true; } else { ShowVideo = false; } base.Activate(); - base.ePhaseID = CStage.EPhase.Common_NORMAL;//初期化すれば、リザルト変遷は止まる。 - + base.ePhaseID = CStage.EPhase.Common_NORMAL;//初期化すれば、リザルト変遷は止まる。 + for (int i = 0; i < 5; i++) { ifp[i] = false; isDeniedPlaying[i] = false; @@ -212,17 +212,17 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { dtLastQueueOperation = DateTime.MinValue; - PuchiChara.ChangeBPM(60.0 / OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[0]); - - //dbUnit = Math.Ceiling( dbUnit * 1000.0 ); - //dbUnit = dbUnit / 1000.0; - - //if (this.actChara.ctキャラクターアクションタイマ != null) this.actChara.ctキャラクターアクションタイマ = new CCounter(); - - //this.actDancer.ct通常モーション = new CCounter( 0, this.actDancer.arモーション番号_通常.Length - 1, ( dbUnit * 4.0) / this.actDancer.arモーション番号_通常.Length, CSound管理.rc演奏用タイマ ); - //this.actDancer.ctモブ = new CCounter( 1.0, 16.0, ((60.0 / CDTXMania.stage演奏ドラム画面.actPlayInfo.dbBPM / 16.0 )), CSound管理.rc演奏用タイマ ); - - + PuchiChara.ChangeBPM(60.0 / OpenTaiko.stage演奏ドラム画面.actPlayInfo.dbBPM[0]); + + //dbUnit = Math.Ceiling( dbUnit * 1000.0 ); + //dbUnit = dbUnit / 1000.0; + + //if (this.actChara.ctキャラクターアクションタイマ != null) this.actChara.ctキャラクターアクションタイマ = new CCounter(); + + //this.actDancer.ct通常モーション = new CCounter( 0, this.actDancer.arモーション番号_通常.Length - 1, ( dbUnit * 4.0) / this.actDancer.arモーション番号_通常.Length, CSound管理.rc演奏用タイマ ); + //this.actDancer.ctモブ = new CCounter( 1.0, 16.0, ((60.0 / CDTXMania.stage演奏ドラム画面.actPlayInfo.dbBPM / 16.0 )), CSound管理.rc演奏用タイマ ); + + this.ct手つなぎ = new CCounter(0, 60, 20, OpenTaiko.Timer); this.ShownLyric2 = 0; @@ -246,17 +246,17 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { }; int level = OpenTaiko.stageSongSelect.rChoosenSong.nLevel[diff]; - CDTX.ELevelIcon levelIcon = OpenTaiko.stageSongSelect.rChoosenSong.nLevelIcon[diff]; + CTja.ELevelIcon levelIcon = OpenTaiko.stageSongSelect.rChoosenSong.nLevelIcon[diff]; return (diffArr[Math.Min(diff, 6)] + "Lv." + level + diffArrIcon[(int)levelIcon]); - } - - // Discord Presence の更新 + } + + // Discord Presence の更新 string details = OpenTaiko.ConfigIni.SendDiscordPlayingInformation ? OpenTaiko.stageSongSelect.rChoosenSong.ldTitle.GetString("") - + diffToString(OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]) : ""; - - // Byte count must be used instead of String.Length. - // The byte count is what Discord is concerned with. Some chars are greater than one byte. + + diffToString(OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]) : ""; + + // Byte count must be used instead of String.Length. + // The byte count is what Discord is concerned with. Some chars are greater than one byte. if (Encoding.UTF8.GetBytes(details).Length > 128) { byte[] details_byte = Encoding.UTF8.GetBytes(details); Array.Resize(ref details_byte, 128); @@ -268,27 +268,27 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { OpenTaiko.DiscordClient?.SetPresence(new RichPresence() { Details = details, State = "Playing" + (OpenTaiko.ConfigIni.bAutoPlay[0] == true ? " (Auto)" : ""), - Timestamps = new Timestamps(DateTime.UtcNow, DateTime.UtcNow.AddMilliseconds(OpenTaiko.DTX.listChip[OpenTaiko.DTX.listChip.Count - 1].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed)), + Timestamps = new Timestamps(DateTime.UtcNow, DateTime.UtcNow.AddMilliseconds(OpenTaiko.TJA.listChip[OpenTaiko.TJA.listChip.Count - 1].n発声時刻ms / OpenTaiko.ConfigIni.SongPlaybackSpeed)), Assets = new Assets() { SmallImageKey = OpenTaiko.ConfigIni.SendDiscordPlayingInformation ? difficultyName.ToLower() : "", SmallImageText = OpenTaiko.ConfigIni.SendDiscordPlayingInformation ? String.Format("COURSE:{0} ({1})", difficultyName, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]) : "", LargeImageKey = OpenTaiko.LargeImageKey, LargeImageText = OpenTaiko.LargeImageText, } - }); - - - - // When performing calibration, reduce audio distraction from user input. - // For users who play primarily by listening to the music, - // you might think that we want them to hear drum sound effects during - // calibration, but we do not. Humans are remarkably good at adjusting - // the timing of their own physical movement, even without realizing it. - // We are calibrating their input timing for the purposes of judgment. - // We do not want them subconsciously playing early so as to line up - // their drum sound effects with the sounds of the input calibration file. - // Instead, we want them focused on the sounds of their keyboard, tatacon, - // other controller, etc. and the sounds of the input calibration audio file. + }); + + + + // When performing calibration, reduce audio distraction from user input. + // For users who play primarily by listening to the music, + // you might think that we want them to hear drum sound effects during + // calibration, but we do not. Humans are remarkably good at adjusting + // the timing of their own physical movement, even without realizing it. + // We are calibrating their input timing for the purposes of judgment. + // We do not want them subconsciously playing early so as to line up + // their drum sound effects with the sounds of the input calibration file. + // Instead, we want them focused on the sounds of their keyboard, tatacon, + // other controller, etc. and the sounds of the input calibration audio file. for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { int actual = OpenTaiko.GetActualPlayer(i); @@ -335,7 +335,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (!base.IsDeActivated) { bool bIsFinishedPlaying = false; bool bIsFinishedEndAnime = false; - bool bIsFinishedFadeout = false; + bool bIsFinishedFadeout = false; #region [ 初めての進行描画 ] if (base.IsFirstDraw) { SoundManager.PlayTimer.Reset(); @@ -343,20 +343,20 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { this.ctチップ模様アニメ.Drums = new CCounter(0, 1, 500, OpenTaiko.Timer); this.ctチップ模様アニメ.Guitar = new CCounter(0, 0x17, 20, OpenTaiko.Timer); this.ctチップ模様アニメ.Bass = new CCounter(0, 0x17, 20, OpenTaiko.Timer); - this.ctチップ模様アニメ.Taiko = new CCounter(0, 1, 500, OpenTaiko.Timer); - - // this.actChipFireD.Start( Eレーン.HH ); // #31554 2013.6.12 yyagi - // 初チップヒット時のもたつき回避。最初にactChipFireD.Start()するときにJITが掛かって? - // ものすごく待たされる(2回目以降と比べると2,3桁tick違う)。そこで最初の画面フェードインの間に - // 一発Start()を掛けてJITの結果を生成させておく。 - + this.ctチップ模様アニメ.Taiko = new CCounter(0, 1, 500, OpenTaiko.Timer); + + // this.actChipFireD.Start( Eレーン.HH ); // #31554 2013.6.12 yyagi + // 初チップヒット時のもたつき回避。最初にactChipFireD.Start()するときにJITが掛かって? + // ものすごく待たされる(2回目以降と比べると2,3桁tick違う)。そこで最初の画面フェードインの間に + // 一発Start()を掛けてJITの結果を生成させておく。 + base.ePhaseID = CStage.EPhase.Common_FADEIN; - this.actFI.tフェードイン開始(); - - // TJAPlayer3.Sound管理.tDisableUpdateBufferAutomatically(); + this.actFI.tフェードイン開始(); + + // TJAPlayer3.Sound管理.tDisableUpdateBufferAutomatically(); base.IsFirstDraw = false; - } + } #endregion if (((OpenTaiko.ConfigIni.nRisky != 0 && this.actGauge.IsFailed(EInstrumentPad.Taiko)) || this.actGame.st叩ききりまショー.ct残り時間.IsEnded @@ -364,19 +364,19 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { && (base.ePhaseID == CStage.EPhase.Common_NORMAL)) { this.actStageFailed.Start(); this.actEnd.Start(); - OpenTaiko.DTX.t全チップの再生停止(); + OpenTaiko.TJA.t全チップの再生停止(); base.ePhaseID = CStage.EPhase.Game_STAGE_FAILED; } - bool BGA_Hidden = OpenTaiko.ConfigIni.bEnableAVI && OpenTaiko.DTX.listVD.Count > 0 && ShowVideo; - - // (????) - if (!String.IsNullOrEmpty(OpenTaiko.DTX.strBGIMAGE_PATH) || (OpenTaiko.DTX.listVD.Count == 0) || !ShowVideo || !OpenTaiko.ConfigIni.bEnableAVI) //背景動画があったら背景画像を描画しない。 + bool BGA_Hidden = OpenTaiko.ConfigIni.bEnableAVI && OpenTaiko.TJA.listVD.Count > 0 && ShowVideo; + + // (????) + if (!String.IsNullOrEmpty(OpenTaiko.TJA.strBGIMAGE_PATH) || (OpenTaiko.TJA.listVD.Count == 0) || !ShowVideo || !OpenTaiko.ConfigIni.bEnableAVI) //背景動画があったら背景画像を描画しない。 { this.t進行描画_背景(); } - if (OpenTaiko.ConfigIni.bEnableAVI && OpenTaiko.DTX.listVD.Count > 0 && ShowVideo && !OpenTaiko.ConfigIni.bTokkunMode) { + if (OpenTaiko.ConfigIni.bEnableAVI && OpenTaiko.TJA.listVD.Count > 0 && ShowVideo && !OpenTaiko.ConfigIni.bTokkunMode) { this.t進行描画_AVI(); } else if (OpenTaiko.ConfigIni.bEnableBGA) { if (OpenTaiko.ConfigIni.bTokkunMode) actTokkun.On進行描画_背景(); @@ -392,14 +392,14 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { } if (!BGA_Hidden && !bDoublePlay && OpenTaiko.ConfigIni.ShowFooter && !OpenTaiko.ConfigIni.bTokkunMode) - this.actFooter.Draw(); - - //this.t進行描画_グラフ(); // #24074 2011.01.23 add ikanick - - - //this.t進行描画_DANGER(); - //this.t進行描画_判定ライン(); - + this.actFooter.Draw(); + + //this.t進行描画_グラフ(); // #24074 2011.01.23 add ikanick + + + //this.t進行描画_DANGER(); + //this.t進行描画_判定ライン(); + if (OpenTaiko.ConfigIni.ShowChara && OpenTaiko.ConfigIni.nPlayerCount <= 2) { this.actChara.Draw(); } @@ -416,35 +416,35 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { this.actLaneTaiko.Draw(); if (OpenTaiko.ConfigIni.ShowRunner && !OpenTaiko.ConfigIni.bAIBattleMode && OpenTaiko.ConfigIni.nPlayerCount <= 2) - this.actRunner.Draw(); - - //this.t進行描画_レーン(); - //this.t進行描画_レーンフラッシュD(); - + this.actRunner.Draw(); + + //this.t進行描画_レーン(); + //this.t進行描画_レーンフラッシュD(); + if ((OpenTaiko.ConfigIni.eClipDispType == EClipDispType.WindowOnly || OpenTaiko.ConfigIni.eClipDispType == EClipDispType.Both) && OpenTaiko.ConfigIni.nPlayerCount == 1) this.actAVI.t窓表示(); if (!OpenTaiko.ConfigIni.bNoInfo && !OpenTaiko.ConfigIni.bTokkunMode) this.t進行描画_ゲージ(); - this.actLaneTaiko.ゴーゴー炎(); - - // bIsFinishedPlaying was dependent on 2P in this case - + this.actLaneTaiko.ゴーゴー炎(); + + // bIsFinishedPlaying was dependent on 2P in this case + this.actDan.Draw(); - for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - // bIsFinishedPlaying = this.t進行描画_チップ(E楽器パート.DRUMS, i); + for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { + // bIsFinishedPlaying = this.t進行描画_チップ(E楽器パート.DRUMS, i); bool btmp = this.t進行描画_チップ(EInstrumentPad.Drums, i); if (btmp == true) - ifp[i] = true; - + ifp[i] = true; + #if DEBUG if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.D0)) { ifp[i] = true; - } + } #endif - + this.t進行描画_チップ_連打(EInstrumentPad.Drums, i); } @@ -480,7 +480,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { this.actComboBalloon.Draw(); for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - this.actRoll.On進行描画(this.n現在の連打数[i], i); + this.actRoll.On進行描画(this.nCurrentRollCount[i], i); } @@ -489,21 +489,21 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { this.t進行描画_演奏情報(); - if (OpenTaiko.DTX.listLyric2.Count > ShownLyric2 && OpenTaiko.DTX.listLyric2[ShownLyric2].Time < (long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed)) { - this.actPanel.t歌詞テクスチャを生成する(OpenTaiko.DTX.listLyric2[ShownLyric2++].TextTex); + if (OpenTaiko.TJA.listLyric2.Count > ShownLyric2 && OpenTaiko.TJA.listLyric2[ShownLyric2].Time < (long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed)) { + this.actPanel.t歌詞テクスチャを生成する(OpenTaiko.TJA.listLyric2[ShownLyric2++].TextTex); } this.actPanel.t歌詞テクスチャを描画する(); - actChara.OnDraw_Balloon(); - - // Floor voice + actChara.OnDraw_Balloon(); + + // Floor voice if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) this.actComboVoice.tPlayFloorSound(); - this.t全体制御メソッド(); - - //this.actEnd.On進行描画(); + this.t全体制御メソッド(); + + //this.actEnd.On進行描画(); this.t進行描画_STAGEFAILED(); this.ScoreRank.Draw(); @@ -521,9 +521,9 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (!ifp[i]) bIsFinishedPlaying = false; } - this.actPauseMenu.t進行描画(); - - //演奏終了→演出表示→フェードアウト + this.actPauseMenu.t進行描画(); + + //演奏終了→演出表示→フェードアウト if (bIsFinishedPlaying && base.ePhaseID == CStage.EPhase.Common_NORMAL) { if (OpenTaiko.ConfigIni.bTokkunMode) { bIsFinishedPlaying = false; @@ -568,22 +568,22 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { return (int)this.eフェードアウト完了時の戻り値; } - ManageMixerQueue(); - - // キー入力 - + ManageMixerQueue(); + + // キー入力 + this.tキー入力(); } base.sw.Stop(); return 0; - } - - // その他 - + } + + // その他 + #region [ private ] - //----------------- + //----------------- [StructLayout(LayoutKind.Sequential)] private struct ST文字位置 { public char ch; @@ -615,20 +615,20 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { private int[] nチャンネルtoX座標 = new int[] { 370, 470, 582, 527, 645, 748, 694, 373, 815, 298, 419, 419 }; private CCounter ct手つなぎ; private CTexture txヒットバーGB; - private CTexture txレーンフレームGB; - //private CTexture tx太鼓ノーツ; - //private CTexture txHand; - //private CTexture txSenotes; - //private CTexture tx小節線; - //private CTexture tx小節線_branch; - + private CTexture txレーンフレームGB; + //private CTexture tx太鼓ノーツ; + //private CTexture txHand; + //private CTexture txSenotes; + //private CTexture tx小節線; + //private CTexture tx小節線_branch; + private CTexture tx判定数表示パネル; - private CTexture tx判定数小文字; - //private CTexture txNamePlate; //ちょっと描画順で都合が悪くなるので移動。 - //private CTexture txNamePlate2P; //ちょっと描画順で都合が悪くなるので移動。 - //private CTexture txPlayerNumber; - private CTexture txMovie; //2016.08.30 kairera0467 ウィンドウ表示 - + private CTexture tx判定数小文字; + //private CTexture txNamePlate; //ちょっと描画順で都合が悪くなるので移動。 + //private CTexture txNamePlate2P; //ちょっと描画順で都合が悪くなるので移動。 + //private CTexture txPlayerNumber; + private CTexture txMovie; //2016.08.30 kairera0467 ウィンドウ表示 + public float nGauge = 0.0f; private int ShownLyric2 = 0; @@ -636,29 +636,29 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { private int n待機中の大音符の座標; private readonly ST文字位置[] st小文字位置; - private readonly ST文字位置[] st大文字位置; - //----------------- - - protected override ENoteJudge tチップのヒット処理(long nHitTime, CDTX.CChip pChip, bool bCorrectLane) { - ENoteJudge eJudgeResult = tチップのヒット処理(nHitTime, pChip, EInstrumentPad.Drums, bCorrectLane, 0); - // #24074 2011.01.23 add ikanick - if (pChip.nコース == this.n現在のコース[0] && NotesManager.IsMissableNote(pChip) && pChip.bShow == true && eJudgeResult != ENoteJudge.Auto) + private readonly ST文字位置[] st大文字位置; + //----------------- + + protected override ENoteJudge tチップのヒット処理(long nHitTime, CChip pChip, bool bCorrectLane) { + ENoteJudge eJudgeResult = tチップのヒット処理(nHitTime, pChip, EInstrumentPad.Drums, bCorrectLane, 0); + // #24074 2011.01.23 add ikanick + if (pChip.nBranch == this.nCurrentBranch[0] && NotesManager.IsMissableNote(pChip) && pChip.bShow == true && eJudgeResult != ENoteJudge.Auto) this.actGame.t叩ききりまショー_判定から各数値を増加させる(eJudgeResult, (int)(nHitTime - pChip.n発声時刻ms)); return eJudgeResult; } - protected override void tチップのヒット処理_BadならびにTight時のMiss(CDTX.ECourse eCourse, EInstrumentPad part) { + protected override void tチップのヒット処理_BadならびにTight時のMiss(CTja.ECourse eCourse, EInstrumentPad part) { this.tチップのヒット処理_BadならびにTight時のMiss(eCourse, part, 0, EInstrumentPad.Drums); } - protected override void tチップのヒット処理_BadならびにTight時のMiss(CDTX.ECourse eCourse, EInstrumentPad part, int nLane) { + protected override void tチップのヒット処理_BadならびにTight時のMiss(CTja.ECourse eCourse, EInstrumentPad part, int nLane) { this.tチップのヒット処理_BadならびにTight時のMiss(eCourse, part, nLane, EInstrumentPad.Drums); } - private int ChannelNumToFlyNoteNum(CDTX.CChip pChip, int nPlayer, bool b両手入力 = false, int nInput = 0) { + private int ChannelNumToFlyNoteNum(CChip pChip, int nPlayer, bool b両手入力 = false, int nInput = 0) { var _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; int nFly = 0; - switch (pChip.nチャンネル番号) { + switch (pChip.nChannelNo) { case 0x11: nFly = 1; break; @@ -686,7 +686,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { return nFly; } - private bool tドラムヒット処理(long nHitTime, EPad type, CDTX.CChip pChip, bool b両手入力, int nPlayer) { + private bool tドラムヒット処理(long nHitTime, EPad type, CChip pChip, bool b両手入力, int nPlayer) { int nInput = 0; switch (type) { @@ -752,7 +752,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { this.tチップのヒット処理(nHitTime, pChip, EInstrumentPad.Taiko, true, nInput, nPlayer); if ((e判定 != ENoteJudge.Poor) && (e判定 != ENoteJudge.Miss)) { - OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(pChip.nチャンネル番号, e判定, b両手入力, nPlayer); + OpenTaiko.stage演奏ドラム画面.actLaneTaiko.Start(pChip.nChannelNo, e判定, b両手入力, nPlayer); int nFly = ChannelNumToFlyNoteNum(pChip, nPlayer, b両手入力, nInput); @@ -787,19 +787,19 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { base.t進行描画_演奏情報(1000, 257); } - protected override void t紙吹雪_開始() { - //if( this.actCombo.n現在のコンボ数.Drums % 10 == 0 && this.actCombo.n現在のコンボ数.Drums > 0 ) - { - //this.actChipFireD.Start紙吹雪(); + protected override void t紙吹雪_開始() { + //if( this.actCombo.n現在のコンボ数.Drums % 10 == 0 && this.actCombo.n現在のコンボ数.Drums > 0 ) + { + //this.actChipFireD.Start紙吹雪(); } } - protected override void t入力処理_ドラム() { - // Input adjust deprecated - var nInputAdjustTimeMs = 0; // TJAPlayer3.ConfigIni.nInputAdjustTimeMs; - - for (int nPad = 0; nPad < (int)EPad.Max; nPad++) // #27029 2012.1.4 from: <10 to <=10; Eパッドの要素が1つ(HP)増えたため。 - // 2012.1.5 yyagi: (int)Eパッド.MAX に変更。Eパッドの要素数への依存を無くすため。 + protected override void t入力処理_ドラム() { + // Input adjust deprecated + var nInputAdjustTimeMs = 0; // TJAPlayer3.ConfigIni.nInputAdjustTimeMs; + + for (int nPad = 0; nPad < (int)EPad.Max; nPad++) // #27029 2012.1.4 from: <10 to <=10; Eパッドの要素が1つ(HP)増えたため。 + // 2012.1.5 yyagi: (int)Eパッド.MAX に変更。Eパッドの要素数への依存を無くすため。 { List listInputEvent = OpenTaiko.Pad.GetEvents(EInstrumentPad.Drums, (EPad)nPad); @@ -812,22 +812,22 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (!inputEvent.Pressed) continue; - long nTime = (long)(((SoundManager.PlayTimer.NowTimeMs + nInputAdjustTimeMs) * OpenTaiko.ConfigIni.SongPlaybackSpeed)); - //int nPad09 = ( nPad == (int) Eパッド.HP ) ? (int) Eパッド.BD : nPad; // #27029 2012.1.5 yyagi - + long nTime = (long)(((SoundManager.PlayTimer.NowTimeMs + nInputAdjustTimeMs) * OpenTaiko.ConfigIni.SongPlaybackSpeed)); + //int nPad09 = ( nPad == (int) Eパッド.HP ) ? (int) Eパッド.BD : nPad; // #27029 2012.1.5 yyagi + bool bHitted = false; int nLane = 0; int nHand = 0; - int nChannel = 0; - - //連打チップを検索してから通常音符検索 - //連打チップの検索は、 - //一番近くの連打音符を探す→時刻チェック - //発声 < 現在時刻 && 終わり > 現在時刻 - - //2015.03.19 kairera0467 Chipを1つにまとめて1つのレーン扱いにする。 - + int nChannel = 0; + + //連打チップを検索してから通常音符検索 + //連打チップの検索は、 + //一番近くの連打音符を探す→時刻チェック + //発声 < 現在時刻 && 終わり > 現在時刻 + + //2015.03.19 kairera0467 Chipを1つにまとめて1つのレーン扱いにする。 + bool isPad1P = (nPad >= 12 && nPad <= 15) || nPad == 32; bool isPad2P = (nPad >= 16 && nPad <= 19) || nPad == 33; bool isPad3P = (nPad >= 20 && nPad <= 23) || nPad == 34; @@ -839,25 +839,25 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { nUsePlayer = 0; } else if (isPad2P) { nUsePlayer = 1; - if (OpenTaiko.ConfigIni.nPlayerCount < 2) //プレイ人数が2人以上でなければ入力をキャンセル + if (OpenTaiko.ConfigIni.nPlayerCount < 2) //プレイ人数が2人以上でなければ入力をキャンセル break; } else if (isPad3P) { nUsePlayer = 2; - if (OpenTaiko.ConfigIni.nPlayerCount < 3) //プレイ人数が3人以上でなければ入力をキャンセル + if (OpenTaiko.ConfigIni.nPlayerCount < 3) //プレイ人数が3人以上でなければ入力をキャンセル break; } else if (isPad4P) { nUsePlayer = 3; - if (OpenTaiko.ConfigIni.nPlayerCount < 4) //プレイ人数が4人以上でなければ入力をキャンセル + if (OpenTaiko.ConfigIni.nPlayerCount < 4) //プレイ人数が4人以上でなければ入力をキャンセル break; } else if (isPad5P) { nUsePlayer = 4; - if (OpenTaiko.ConfigIni.nPlayerCount < 5) //プレイ人数が5人以上でなければ入力をキャンセル + if (OpenTaiko.ConfigIni.nPlayerCount < 5) //プレイ人数が5人以上でなければ入力をキャンセル break; } if (OpenTaiko.stage演奏ドラム画面.isDeniedPlaying[nUsePlayer]) break; - if (!OpenTaiko.ConfigIni.bTokkunMode && OpenTaiko.ConfigIni.bAutoPlay[0] && isPad1P)//2020.05.18 Mr-Ojii オート時の入力キャンセル + if (!OpenTaiko.ConfigIni.bTokkunMode && OpenTaiko.ConfigIni.bAutoPlay[0] && isPad1P)//2020.05.18 Mr-Ojii オート時の入力キャンセル break; else if ((OpenTaiko.ConfigIni.bAutoPlay[1] || OpenTaiko.ConfigIni.bAIBattleMode) && isPad2P) break; @@ -866,32 +866,32 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { else if (OpenTaiko.ConfigIni.bAutoPlay[3] && isPad4P) break; else if (OpenTaiko.ConfigIni.bAutoPlay[4] && isPad5P) - break; - //var padTo = nUsePlayer == 0 ? nPad - 12 : nPad - 12 - 4; + break; + //var padTo = nUsePlayer == 0 ? nPad - 12 : nPad - 12 - 4; var padTo = nPad - 12; padTo -= 4 * nUsePlayer; var isDon = padTo < 2 ? true : false; - CDTX.CChip chipNoHit = r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(nTime, nUsePlayer); + CChip chipNoHit = r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(nTime, nUsePlayer); ENoteJudge e判定 = (chipNoHit != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipNoHit, nUsePlayer) : ENoteJudge.Miss; - e判定 = AlterJudgement(nUsePlayer, e判定, false); - + e判定 = AlterJudgement(nUsePlayer, e判定, false); + #region [ADLIB] - + bool b太鼓音再生フラグ = true; if (chipNoHit != null) { if (NotesManager.IsADLIB(chipNoHit) && (e判定 == ENoteJudge.Perfect || e判定 == ENoteJudge.Good)) b太鼓音再生フラグ = false; if (NotesManager.IsADLIB(chipNoHit) && (e判定 != ENoteJudge.Miss && e判定 != ENoteJudge.Poor)) this.soundAdlib[chipNoHit.nPlayerSide]?.PlayStart(); - } - + } + #endregion - + #region [Visual effects] - + switch (nPad) { case 12: nLane = 0; @@ -922,8 +922,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { nChannel = 0x12; if (b太鼓音再生フラグ) this.soundBlue[0]?.PlayStart(); - break; - //以下2P + break; + //以下2P case 16: nLane = 0; nHand = 0; @@ -953,8 +953,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { nChannel = 0x12; if (b太鼓音再生フラグ) this.soundBlue[1]?.PlayStart(); - break; - //以下3P + break; + //以下3P case 20: nLane = 0; nHand = 0; @@ -984,8 +984,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { nChannel = 0x12; if (b太鼓音再生フラグ) this.soundBlue[2]?.PlayStart(); - break; - //以下4P + break; + //以下4P case 24: nLane = 0; nHand = 0; @@ -1015,8 +1015,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { nChannel = 0x12; if (b太鼓音再生フラグ) this.soundBlue[3]?.PlayStart(); - break; - //以下5P + break; + //以下5P case 28: nLane = 0; nHand = 0; @@ -1046,8 +1046,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { nChannel = 0x12; if (b太鼓音再生フラグ) this.soundBlue[4]?.PlayStart(); - break; - // Clap + break; + // Clap case (int)EPad.Clap: if (OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(0)] == EGameType.Konga) { nLane = (int)PlayerLane.FlashType.Clap; @@ -1115,11 +1115,11 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { } OpenTaiko.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nUsePlayer].Start((PlayerLane.FlashType)nLane); - OpenTaiko.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(nChannel, nHand, nUsePlayer); - + OpenTaiko.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(nChannel, nHand, nUsePlayer); + #endregion - - // Chip bools + + // Chip bools EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nUsePlayer)]; bool _isBigKaTaiko = NotesManager.IsBigKaTaiko(chipNoHit, _gt); bool _isBigDonTaiko = NotesManager.IsBigDonTaiko(chipNoHit, _gt); @@ -1127,7 +1127,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { bool _isPinkKonga = NotesManager.IsSwapNote(chipNoHit, _gt); - if (this.b連打中[nUsePlayer]) { + if (this.bCurrentlyDrumRoll[nUsePlayer]) { chipNoHit = this.chip現在処理中の連打チップ[nUsePlayer]; e判定 = ENoteJudge.Perfect; } @@ -1156,13 +1156,13 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { case EPad.RBlue2P: case EPad.RBlue3P: case EPad.RBlue4P: - case EPad.RBlue5P: { - - // Regular notes - + case EPad.RBlue5P: { + + // Regular notes + #region [Fetch values] - - // Flatten pads from 8 to 4 + + // Flatten pads from 8 to 4 var _pad = (EPad)nPad; if ((EPad)nPad == EPad.LRed2P) _pad = EPad.LRed; if ((EPad)nPad == EPad.RRed2P) _pad = EPad.RRed; @@ -1191,29 +1191,29 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { int waitRec = waitInstr == 2 ? 1 : 2; bool _isBigNoteTaiko = _isBlue ? _isBigKaTaiko : _isBigDonTaiko; - bool _isSmallNote = NotesManager.IsSmallNote(chipNoHit, _isBlue); - + bool _isSmallNote = NotesManager.IsSmallNote(chipNoHit, _isBlue); + #endregion - - // Register to replay file - OpenTaiko.ReplayInstances[nUsePlayer]?.tRegisterInput(nTime, (byte)_pad); - - // Process small note + + // Register to replay file + OpenTaiko.ReplayInstances[nUsePlayer]?.tRegisterInput(nTime, (byte)_pad); + + // Process small note if (e判定 != ENoteJudge.Miss && _isSmallNote) { this.tドラムヒット処理(nTime, _pad, chipNoHit, false, nUsePlayer); bHitted = true; - } - - // Process big notes (judge big notes off) + } + + // Process big notes (judge big notes off) if (e判定 != ENoteJudge.Miss && _isBigNoteTaiko && !OpenTaiko.ConfigIni.bJudgeBigNotes) { this.tドラムヒット処理(nTime, _pad, chipNoHit, true, nUsePlayer); - bHitted = true; - //this.nWaitButton = 0; + bHitted = true; + //this.nWaitButton = 0; this.nStoredHit[nUsePlayer] = 0; break; - } - - // Process big notes (judge big notes on) + } + + // Process big notes (judge big notes on) if (e判定 != ENoteJudge.Miss && ((_isBigNoteTaiko && OpenTaiko.ConfigIni.bJudgeBigNotes) || _isPinkKonga)) { CConfigIni.CTimingZones tz = this.GetTimingZones(nUsePlayer); double divided_songspeed = OpenTaiko.ConfigIni.SongPlaybackSpeed; @@ -1225,38 +1225,38 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (chipNoHit.eNoteState == ENoteState.None) { if (_timeBadOrLater) { chipNoHit.nProcessTime = (int)(SoundManager.PlayTimer.NowTimeMs * divided_songspeed); - chipNoHit.eNoteState = ENoteState.Wait; - //this.nWaitButton = waitInstr; + chipNoHit.eNoteState = ENoteState.Wait; + //this.nWaitButton = waitInstr; this.nStoredHit[nUsePlayer] = (int)_pad; } } else if (chipNoHit.eNoteState == ENoteState.Wait) { - bool _isExpected = NotesManager.IsExpectedPad(this.nStoredHit[nUsePlayer], (int)_pad, chipNoHit, _gt); - - // Double tap success + bool _isExpected = NotesManager.IsExpectedPad(this.nStoredHit[nUsePlayer], (int)_pad, chipNoHit, _gt); + + // Double tap success if (_isExpected && _timeBadOrLater && chipNoHit.nProcessTime + nWaitTime > (int)(SoundManager.PlayTimer.NowTimeMs * divided_songspeed)) { this.tドラムヒット処理(nTime, _pad, chipNoHit, true, nUsePlayer); - bHitted = true; - //this.nWaitButton = 0; + bHitted = true; + //this.nWaitButton = 0; this.nStoredHit[nUsePlayer] = 0; - } - - // Double tap failure + } + + // Double tap failure else if (!_isExpected || (_timeBadOrLater && chipNoHit.nProcessTime + nWaitTime < (int)(SoundManager.PlayTimer.NowTimeMs * divided_songspeed))) { if (!_isPinkKonga) { this.tドラムヒット処理(nTime, _pad, chipNoHit, false, nUsePlayer); bHitted = true; - } - - //this.nWaitButton = 0; + } + + //this.nWaitButton = 0; this.nStoredHit[nUsePlayer] = 0; } } - } - - // Judge rolls + } + + // Judge rolls if (e判定 != ENoteJudge.Miss && NotesManager.IsGenericRoll(chipNoHit) && !NotesManager.IsRollEnd(chipNoHit)) { @@ -1264,12 +1264,12 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { bool _isKusudama = NotesManager.IsKusudama(chipNoHit); bool _isKongaRedRoll = (NotesManager.IsSmallRoll(chipNoHit) || NotesManager.IsBigRoll(chipNoHit)) || _gt == EGameType.Taiko; - bool _isRedOnly = _isBalloon || _isKongaRedRoll || _isKusudama; - - // To be added later - bool _isKongaPinkRoll = NotesManager.IsBigRoll(chipNoHit) && _gt == EGameType.Konga; - - // To improve (array of functions ?) + bool _isRedOnly = _isBalloon || _isKongaRedRoll || _isKusudama; + + // To be added later + bool _isKongaPinkRoll = NotesManager.IsBigRoll(chipNoHit) && _gt == EGameType.Konga; + + // To improve (array of functions ?) bool _isBlueOnly = ((NotesManager.IsYellowRoll(chipNoHit) || NotesManager.IsBigRoll(chipNoHit)) || _gt == EGameType.Taiko) && !_isBalloon && !_isKusudama; @@ -1288,15 +1288,15 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { case EPad.Clap3P: case EPad.Clap4P: case EPad.Clap5P: { - var _pad = (EPad)nPad; - - // Process konga clap + var _pad = (EPad)nPad; + + // Process konga clap if (e判定 != ENoteJudge.Miss && _isClapKonga) { this.tドラムヒット処理(nTime, _pad, chipNoHit, false, nUsePlayer); bHitted = true; - } - - // Judge rolls + } + + // Judge rolls if (e判定 != ENoteJudge.Miss && NotesManager.IsGenericRoll(chipNoHit) && !NotesManager.IsRollEnd(chipNoHit)) { @@ -1323,15 +1323,15 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (e判定 != ENoteJudge.Miss && NotesManager.IsMine(chipNoHit)) { this.tドラムヒット処理(nTime, (EPad)nPad, chipNoHit, false, nUsePlayer); bHitted = true; - } - + } + #region [ ヒットしてなかった場合は、レーンフラッシュ、パッドアニメ、空打ち音再生を実行 ] - //----------------------------- - int pad = nPad; // 以下、nPad の代わりに pad を用いる。(成りすまし用) - // BAD or TIGHT 時の処理。 - if (OpenTaiko.ConfigIni.bTight && !b連打中[nUsePlayer]) // 18/8/13 - 連打時にこれが発動すると困る!!! (AioiLight) - this.tチップのヒット処理_BadならびにTight時のMiss(chipNoHit.nコース, EInstrumentPad.Drums, 0, EInstrumentPad.Taiko); - //----------------------------- + //----------------------------- + int pad = nPad; // 以下、nPad の代わりに pad を用いる。(成りすまし用) + // BAD or TIGHT 時の処理。 + if (OpenTaiko.ConfigIni.bTight && !bCurrentlyDrumRoll[nUsePlayer]) // 18/8/13 - 連打時にこれが発動すると困る!!! (AioiLight) + this.tチップのヒット処理_BadならびにTight時のMiss(chipNoHit.nBranch, EInstrumentPad.Drums, 0, EInstrumentPad.Taiko); + //----------------------------- #endregion } } @@ -1341,18 +1341,18 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { Rectangle bgrect = new Rectangle(0, 0, 1280, 720); string DefaultBgFilename = @$"Graphics{Path.DirectorySeparatorChar}5_Game{Path.DirectorySeparatorChar}5_Background{Path.DirectorySeparatorChar}0{Path.DirectorySeparatorChar}Background.png"; string BgFilename = ""; - if (!String.IsNullOrEmpty(OpenTaiko.DTX.strBGIMAGE_PATH)) - BgFilename = OpenTaiko.DTX.strBGIMAGE_PATH; + if (!String.IsNullOrEmpty(OpenTaiko.TJA.strBGIMAGE_PATH)) + BgFilename = OpenTaiko.TJA.strBGIMAGE_PATH; base.t背景テクスチャの生成(DefaultBgFilename, bgrect, BgFilename); } - protected override void t進行描画_チップ_Taiko(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, int nPlayer) { + protected override void t進行描画_チップ_Taiko(CConfigIni configIni, ref CTja dTX, ref CChip pChip, int nPlayer) { int nLane = (int)PlayerLane.FlashType.Red; - EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; - - + EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; + + #region[ 作り直したもの ] - - if (pChip.b可視) { + + if (pChip.bVisible) { if (!pChip.bHit) { long nPlayTime = (long)(SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed); if ((!pChip.bHit) && (pChip.n発声時刻ms <= nPlayTime)) { @@ -1365,20 +1365,20 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (bAutoPlay && !this.bPAUSE && !NotesManager.IsMine(pChip)) { pChip.bHit = true; - if (!NotesManager.IsADLIB(pChip)) // Provisional, to avoid crash on 0x101 - this.FlyingNotes.Start(ChannelNumToFlyNoteNum(pChip, nPlayer), nPlayer); + if (!NotesManager.IsADLIB(pChip)) // Provisional, to avoid crash on 0x101 + this.FlyingNotes.Start(ChannelNumToFlyNoteNum(pChip, nPlayer), nPlayer); + + //this.actChipFireTaiko.Start(pChip.nチャンネル番号 < 0x1A ? (pChip.nチャンネル番号 - 0x10) : (pChip.nチャンネル番号 - 0x17), nPlayer); + if (pChip.nChannelNo == 0x12 || pChip.nChannelNo == 0x14 || pChip.nChannelNo == 0x1B) nLane = (int)PlayerLane.FlashType.Blue; - //this.actChipFireTaiko.Start(pChip.nチャンネル番号 < 0x1A ? (pChip.nチャンネル番号 - 0x10) : (pChip.nチャンネル番号 - 0x17), nPlayer); - if (pChip.nチャンネル番号 == 0x12 || pChip.nチャンネル番号 == 0x14 || pChip.nチャンネル番号 == 0x1B) nLane = (int)PlayerLane.FlashType.Blue; - - if (pChip.nチャンネル番号 == 0x14 && _gt == EGameType.Konga) nLane = (int)PlayerLane.FlashType.Clap; + if (pChip.nChannelNo == 0x14 && _gt == EGameType.Konga) nLane = (int)PlayerLane.FlashType.Clap; OpenTaiko.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start((PlayerLane.FlashType)nLane); OpenTaiko.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Hit); - this.actMtaiko.tMtaikoEvent(pChip.nチャンネル番号, this.nHand[nPlayer], nPlayer); + this.actMtaiko.tMtaikoEvent(pChip.nChannelNo, this.nHand[nPlayer], nPlayer); - int n大音符 = (pChip.nチャンネル番号 == 0x11 || pChip.nチャンネル番号 == 0x12 ? 2 : 0); + int n大音符 = (pChip.nChannelNo == 0x11 || pChip.nChannelNo == 0x12 ? 2 : 0); this.tチップのヒット処理(pChip.n発声時刻ms, pChip, EInstrumentPad.Taiko, true, nLane + n大音符, nPlayer, false); this.tサウンド再生(pChip, nPlayer); @@ -1404,18 +1404,18 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { break; } - int x = pChip.nバーからの距離dot.Taiko; - int y = NoteOriginY[nPlayer];// + ((int)(pChip.nコース) * 100) - + int x = pChip.nHorizontalChipDistance; + int y = NoteOriginY[nPlayer];// + ((int)(pChip.nコース) * 100) + int xTemp = 0; - int yTemp = 0; - + int yTemp = 0; + #region[ スクロール方向変更 ] - if (pChip.nスクロール方向 != 0) { + if (pChip.nScrollDirection != 0) { xTemp = x; yTemp = y; } - switch (pChip.nスクロール方向) { + switch (pChip.nScrollDirection) { case 0: x += (NoteOriginX[nPlayer]); break; @@ -1446,21 +1446,21 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { x = (NoteOriginX[nPlayer]) - xTemp; y = NoteOriginY[nPlayer] + xTemp; break; - } + } #endregion - + #region[ 両手待ち時 ] if (pChip.eNoteState == ENoteState.Wait) { x = (NoteOriginX[nPlayer]); - } + } #endregion - + #region[ HIDSUD & STEALTH ] if (OpenTaiko.ConfigIni.eSTEALTH[OpenTaiko.GetActualPlayer(nPlayer)] == EStealthMode.Stealth || OpenTaiko.stage演奏ドラム画面.bCustomDoron) { pChip.bShow = false; - } + } #endregion - + long __dbt = (long)(SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed); long time = pChip.n発声時刻ms - __dbt; @@ -1470,7 +1470,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { y = NoteOriginY[nPlayer]; - double _scrollSpeed = pChip.dbSCROLL_Y * (this.act譜面スクロール速度.db現在の譜面スクロール速度[nPlayer] + 1.0) / 10.0; + double _scrollSpeed = pChip.dbSCROLL_Y * (this.actScrollSpeed.dbConfigScrollSpeed[nPlayer] + 1.0) / 10.0; float play_bpm_time = this.GetNowPBMTime(dTX, 0); y += NotesManager.GetNoteY(pChip, time * pChip.dbBPM, _scrollSpeed, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, false); @@ -1489,40 +1489,40 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { } if (x > 0 - OpenTaiko.Skin.Game_Notes_Size[0] && x < OpenTaiko.Skin.Resolution[0]) { - if (OpenTaiko.Tx.Notes[(int)_gt] != null) { - //int num9 = this.actCombo.n現在のコンボ数.Drums >= 50 ? this.ctチップ模様アニメ.Drums.n現在の値 * 130 : 0; + if (OpenTaiko.Tx.Notes[(int)_gt] != null) { + //int num9 = this.actCombo.n現在のコンボ数.Drums >= 50 ? this.ctチップ模様アニメ.Drums.n現在の値 * 130 : 0; int num9 = 0; if (OpenTaiko.Skin.Game_Notes_Anime && !OpenTaiko.ConfigIni.SimpleMode) { - if (this.actCombo.n現在のコンボ数[nPlayer] >= 300 && ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = ctChipAnime[nPlayer].n現在の値 != 0 ? 260 : 0; + if (this.actCombo.nCurrentCombo[nPlayer] >= 300 && ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = ctChipAnime[nPlayer].n現在の値 != 0 ? 260 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue == 1 || (int)ctChipAnime[nPlayer].CurrentValue == 3) { num9 = OpenTaiko.Skin.Game_Notes_Size[1] * 2; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 300 && !ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 300 && !ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue == 1 || (int)ctChipAnime[nPlayer].CurrentValue == 3) { num9 = OpenTaiko.Skin.Game_Notes_Size[1]; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 150) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 150) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue == 1 || (int)ctChipAnime[nPlayer].CurrentValue == 3) { num9 = OpenTaiko.Skin.Game_Notes_Size[1]; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 50 && ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 50 && ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue <= 1) { num9 = OpenTaiko.Skin.Game_Notes_Size[1]; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 50 && !ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 50 && !ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; num9 = 0; } else { num9 = 0; @@ -1552,15 +1552,15 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { } this.ct手つなぎ.TickLoop(); - float fHand = (this.ct手つなぎ.CurrentValue < 30 ? this.ct手つなぎ.CurrentValue : 60 - this.ct手つなぎ.CurrentValue) / 30.0f; - - - //x = ( x ) - ( ( int ) ( (TJAPlayer3.Skin.Game_Note_Size[0] * pChip.dbチップサイズ倍率 ) / 2.0 ) ); - - //TJAPlayer3.Tx.Notes[(int)_gt].b加算合成 = false; - //TJAPlayer3.Tx.SENotes.b加算合成 = false; - - switch (pChip.nチャンネル番号) { + float fHand = (this.ct手つなぎ.CurrentValue < 30 ? this.ct手つなぎ.CurrentValue : 60 - this.ct手つなぎ.CurrentValue) / 30.0f; + + + //x = ( x ) - ( ( int ) ( (TJAPlayer3.Skin.Game_Note_Size[0] * pChip.dbチップサイズ倍率 ) / 2.0 ) ); + + //TJAPlayer3.Tx.Notes[(int)_gt].b加算合成 = false; + //TJAPlayer3.Tx.SENotes.b加算合成 = false; + + switch (pChip.nChannelNo) { case 0x11: case 0x12: case 0x13: @@ -1568,9 +1568,9 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { case 0x1C: case 0x101: { NotesManager.DisplayNote(nPlayer, x, y, pChip, num9); - NotesManager.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip); - - //TJAPlayer3.Tx.SENotes[(int)_gt]?.t2D描画(device, x - 2, y + nSenotesY, new Rectangle(0, 30 * pChip.nSenote, 136, 30)); + NotesManager.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip); + + //TJAPlayer3.Tx.SENotes[(int)_gt]?.t2D描画(device, x - 2, y + nSenotesY, new Rectangle(0, 30 * pChip.nSenote, 136, 30)); break; } @@ -1579,8 +1579,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { int moveX = (int)(fHand * OpenTaiko.Skin.Game_Notes_Arm_Move[0]); int moveY = (int)(fHand * OpenTaiko.Skin.Game_Notes_Arm_Move[1]); if (OpenTaiko.ConfigIni.eSTEALTH[OpenTaiko.GetActualPlayer(nPlayer)] == EStealthMode.Off && pChip.bShow) { - if (nPlayer != OpenTaiko.ConfigIni.nPlayerCount - 1) { - //上から下 + if (nPlayer != OpenTaiko.ConfigIni.nPlayerCount - 1) { + //上から下 OpenTaiko.Tx.Notes_Arm?.t2D上下反転描画( x + OpenTaiko.Skin.Game_Notes_Arm_Offset_Left_X[0] + moveX, y + OpenTaiko.Skin.Game_Notes_Arm_Offset_Left_Y[0] + moveY); @@ -1588,8 +1588,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { x + OpenTaiko.Skin.Game_Notes_Arm_Offset_Right_X[0] - moveX, y + OpenTaiko.Skin.Game_Notes_Arm_Offset_Right_Y[0] - moveY); } - if (nPlayer != 0) { - //下から上 + if (nPlayer != 0) { + //下から上 OpenTaiko.Tx.Notes_Arm?.t2D描画( x + OpenTaiko.Skin.Game_Notes_Arm_Offset_Left_X[1] + moveX, y + OpenTaiko.Skin.Game_Notes_Arm_Offset_Left_Y[1] + moveY); @@ -1611,17 +1611,17 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { } break; - } - //CDTXMania.act文字コンソール.tPrint( x + 60, y + 160, C文字コンソール.Eフォント種別.白, pChip.nPlayerSide.ToString() ); + } + //CDTXMania.act文字コンソール.tPrint( x + 60, y + 160, C文字コンソール.Eフォント種別.白, pChip.nPlayerSide.ToString() ); } } } } else { return; - } + } #endregion } - protected override void t進行描画_チップ_Taiko連打(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, int nPlayer) { + protected override void t進行描画_チップ_Taiko連打(CConfigIni configIni, ref CTja dTX, ref CChip pChip, int nPlayer) { int nSenotesX = 0; int nSenotesY = 0; long nowTime = (long)(SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed); @@ -1643,20 +1643,20 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { break; } - int nノート座標 = pChip.nバーからの距離dot.Taiko; - int nノート末端座標 = pChip.nバーからのノーツ末端距離dot; - int nノート末端座標_Y = pChip.nバーからのノーツ末端距離dot_Y; + int nノート座標 = pChip.nHorizontalChipDistance; + int nノート末端座標 = pChip.nNoteTipDistance_X; + int nノート末端座標_Y = pChip.nNoteTipDistance_Y; int n先頭発声位置 = 0; - EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; - - // 2016.11.2 kairera0467 - // 黄連打音符を赤くするやつの実装方法メモ - //前面を黄色、背面を変色後にしたものを重ねて、打数に応じて前面の透明度を操作すれば、色を操作できるはず。 - //ただしテクスチャのαチャンネル部分が太くなるなどのデメリットが出る。備えよう。 - + EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(nPlayer)]; + + // 2016.11.2 kairera0467 + // 黄連打音符を赤くするやつの実装方法メモ + //前面を黄色、背面を変色後にしたものを重ねて、打数に応じて前面の透明度を操作すれば、色を操作できるはず。 + //ただしテクスチャのαチャンネル部分が太くなるなどのデメリットが出る。備えよう。 + #region[ 作り直したもの ] - if (pChip.b可視) { + if (pChip.bVisible) { if (NotesManager.IsGenericRoll(pChip)) { if (pChip.nノーツ出現時刻ms != 0 && (nowTime < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms)) pChip.bShow = false; @@ -1669,8 +1669,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { else pChip.bShow = true; - CDTX.CChip cChip = null; - if (pChip.nノーツ移動開始時刻ms != 0) // n先頭発声位置 value is only used when this condition is met + CChip cChip = null; + if (pChip.nノーツ移動開始時刻ms != 0) // n先頭発声位置 value is only used when this condition is met { cChip = OpenTaiko.stage演奏ドラム画面.r指定時刻に一番近い連打Chip_ヒット未済問わず不可視考慮(pChip.n発声時刻ms, 0x10 + pChip.n連打音符State, 0, nPlayer); if (cChip != null) { @@ -1685,7 +1685,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { int y = NoteOriginY[nPlayer]; if (pChip.dbSCROLL_Y != 0.0) { - double _scrollSpeed = pChip.dbSCROLL_Y * (this.act譜面スクロール速度.db現在の譜面スクロール速度[nPlayer] + 1.0) / 10.0; + double _scrollSpeed = pChip.dbSCROLL_Y * (this.actScrollSpeed.dbConfigScrollSpeed[nPlayer] + 1.0) / 10.0; long __dbt = nowTime; long time = pChip.n発声時刻ms - __dbt; float play_bpm_time = this.GetNowPBMTime(dTX, 0); @@ -1703,71 +1703,71 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { y末端 -= OpenTaiko.Skin.Game_Notes_Size[1] / 2; } } - } - + } + #region[ HIDSUD & STEALTH ] - + if (OpenTaiko.ConfigIni.eSTEALTH[OpenTaiko.GetActualPlayer(nPlayer)] == EStealthMode.Stealth || OpenTaiko.stage演奏ドラム画面.bCustomDoron) { pChip.bShow = false; - } - + } + #endregion - - //if( CDTXMania.ConfigIni.eScrollMode != EScrollMode.Normal ) - //x -= 10; - - //if(x末端 > 0 - TJAPlayer3.Skin.Game_Notes_Size[0] && x < TJAPlayer3.Skin.Resolution[0]) + + //if( CDTXMania.ConfigIni.eScrollMode != EScrollMode.Normal ) + //x -= 10; + + //if(x末端 > 0 - TJAPlayer3.Skin.Game_Notes_Size[0] && x < TJAPlayer3.Skin.Resolution[0]) if ((Math.Min(x, x末端) < OpenTaiko.Skin.Resolution[0] && Math.Max(x, x末端) > 0 - OpenTaiko.Skin.Game_Notes_Size[0])) { - if (OpenTaiko.Tx.Notes[(int)_gt] != null) { - //int num9 = this.actCombo.n現在のコンボ数.Drums >= 50 ? this.ctチップ模様アニメ.Drums.n現在の値 * 130 : 0; - //int num9 = this.actCombo.n現在のコンボ数.Drums >= 50 ? base.n現在の音符の顔番号 * 130 : 0; - int num9 = 0; - //if( this.actCombo.n現在のコンボ数[ nPlayer ] >= 300 ) - //{ - // num9 = base.n現在の音符の顔番号 != 0 ? 260 : 0; - //} - //else if( this.actCombo.n現在のコンボ数[ nPlayer ] >= 50 ) - //{ - // num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; - //} + if (OpenTaiko.Tx.Notes[(int)_gt] != null) { + //int num9 = this.actCombo.n現在のコンボ数.Drums >= 50 ? this.ctチップ模様アニメ.Drums.n現在の値 * 130 : 0; + //int num9 = this.actCombo.n現在のコンボ数.Drums >= 50 ? base.n現在の音符の顔番号 * 130 : 0; + int num9 = 0; + //if( this.actCombo.n現在のコンボ数[ nPlayer ] >= 300 ) + //{ + // num9 = base.n現在の音符の顔番号 != 0 ? 260 : 0; + //} + //else if( this.actCombo.n現在のコンボ数[ nPlayer ] >= 50 ) + //{ + // num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + //} if (OpenTaiko.Skin.Game_Notes_Anime && !OpenTaiko.ConfigIni.SimpleMode) { - if (this.actCombo.n現在のコンボ数[nPlayer] >= 300 && ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = ctChipAnime[nPlayer].db現在の値 != 0 ? 260 : 0; + if (this.actCombo.nCurrentCombo[nPlayer] >= 300 && ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = ctChipAnime[nPlayer].db現在の値 != 0 ? 260 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue == 1 || (int)ctChipAnime[nPlayer].CurrentValue == 3) { num9 = OpenTaiko.Skin.Game_Notes_Size[1] * 2; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 300 && !ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 300 && !ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue == 1 || (int)ctChipAnime[nPlayer].CurrentValue == 3) { num9 = OpenTaiko.Skin.Game_Notes_Size[1]; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 150) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 150) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue == 1 || (int)ctChipAnime[nPlayer].CurrentValue == 3) { num9 = OpenTaiko.Skin.Game_Notes_Size[1]; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 50 && ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 50 && ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; if ((int)ctChipAnime[nPlayer].CurrentValue <= 1) { num9 = OpenTaiko.Skin.Game_Notes_Size[1]; } else { num9 = 0; } - } else if (this.actCombo.n現在のコンボ数[nPlayer] >= 50 && !ctChipAnimeLag[nPlayer].IsEnded) { - //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; + } else if (this.actCombo.nCurrentCombo[nPlayer] >= 50 && !ctChipAnimeLag[nPlayer].IsEnded) { + //num9 = base.n現在の音符の顔番号 != 0 ? base.n現在の音符の顔番号 * 130 : 0; num9 = 0; } else { num9 = 0; } - } - - //kairera0467氏 の TJAPlayer2forPC のコードを参考にし、打数に応じて色を変える(打数の変更以外はほとんどそのまんま) ろみゅ~? 2018/8/20 + } + + //kairera0467氏 の TJAPlayer2forPC のコードを参考にし、打数に応じて色を変える(打数の変更以外はほとんどそのまんま) ろみゅ~? 2018/8/20 pChip.RollInputTime?.Tick(); pChip.RollDelay?.Tick(); @@ -1785,10 +1785,10 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { float f減少するカラー = 1.0f - ((0.95f / 100) * pChip.RollEffectLevel); var effectedColor = new Color4(1.0f, f減少するカラー, f減少するカラー, 1f); - var normalColor = new Color4(1.0f, 1.0f, 1.0f, 1f); - //float f末端ノーツのテクスチャ位置調整 = 65f; - - //136, 30 + var normalColor = new Color4(1.0f, 1.0f, 1.0f, 1f); + //float f末端ノーツのテクスチャ位置調整 = 65f; + + //136, 30 var _size = OpenTaiko.Skin.Game_SENote_Size; int _60_cut = 60 * _size[0] / 136; int _58_cut = 58 * _size[0] / 136; @@ -1796,7 +1796,7 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (NotesManager.IsRoll(pChip) || NotesManager.IsFuzeRoll(pChip)) { if (NotesManager.IsFuzeRoll(pChip) - && nowTime >= pChip.n発声時刻ms && nowTime < pChip.nノーツ終了時刻ms) { + && nowTime >= pChip.n発声時刻ms && nowTime < pChip.nNoteEndTimems) { x = NoteOriginX[nPlayer]; y = NoteOriginY[nPlayer]; } @@ -1823,24 +1823,24 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (NotesManager.IsBalloon(pChip) || NotesManager.IsKusudama(pChip)) { if (pChip.bShow) { - if (nowTime >= pChip.n発声時刻ms && nowTime < pChip.nノーツ終了時刻ms) + if (nowTime >= pChip.n発声時刻ms && nowTime < pChip.nNoteEndTimems) x = NoteOriginX[nPlayer]; - else if (nowTime >= pChip.nノーツ終了時刻ms) - x = (NoteOriginX[nPlayer] + pChip.nバーからのノーツ末端距離dot); + else if (nowTime >= pChip.nNoteEndTimems) + x = (NoteOriginX[nPlayer] + pChip.nNoteTipDistance_X); NotesManager.DisplayNote(nPlayer, x, y, pChip, num9, OpenTaiko.Skin.Game_Notes_Size[0] * 2); - NotesManager.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip); - + NotesManager.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip); + /* if (TJAPlayer3.ConfigIni.eSTEALTH != Eステルスモード.DORON) TJAPlayer3.Tx.Notes[(int)_gt].t2D描画(x, y, new Rectangle(1430, num9, 260, 130)); - */ - - //TJAPlayer3.Tx.SENotes.t2D描画(x - 2, y + nSenotesY, new Rectangle(0, 30 * pChip.nSenote, 136, 30)); + */ + + //TJAPlayer3.Tx.SENotes.t2D描画(x - 2, y + nSenotesY, new Rectangle(0, 30 * pChip.nSenote, 136, 30)); } } - if (NotesManager.IsRollEnd(pChip)) { - //大きい連打か小さい連打かの区別方法を考えてなかったよちくしょう + if (NotesManager.IsRollEnd(pChip)) { + //大きい連打か小さい連打かの区別方法を考えてなかったよちくしょう if (OpenTaiko.Tx.Notes[(int)_gt] != null) OpenTaiko.Tx.Notes[(int)_gt].vcScaleRatio.X = 1.0f; int n = 0; @@ -1855,9 +1855,9 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { n = 910; break; } - if (pChip.n連打音符State != 7 && pChip.n連打音符State != 9 && pChip.n連打音符State != 13) { - //if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) - // CDTXMania.Tx.Notes.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( n, num9, 130, 130 ) );//大音符:1170 + if (pChip.n連打音符State != 7 && pChip.n連打音符State != 9 && pChip.n連打音符State != 13) { + //if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + // CDTXMania.Tx.Notes.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( n, num9, 130, 130 ) );//大音符:1170 OpenTaiko.Tx.SENotes[(int)_gt]?.t2D描画(x + 56, y + nSenotesY, new Rectangle(_58_cut, 9 * _size[1], _78_cut, _size[1])); } @@ -1865,82 +1865,82 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { } } - if (pChip.n発声時刻ms < nowTime && pChip.nノーツ終了時刻ms > nowTime) { - var puchichara = OpenTaiko.Tx.Puchichara[PuchiChara.tGetPuchiCharaIndexByName(OpenTaiko.GetActualPlayer(nPlayer))]; - - //時間内でかつ0x9Aじゃないならならヒット処理 + if (pChip.n発声時刻ms < nowTime && pChip.nNoteEndTimems > nowTime) { + var puchichara = OpenTaiko.Tx.Puchichara[PuchiChara.tGetPuchiCharaIndexByName(OpenTaiko.GetActualPlayer(nPlayer))]; + + //時間内でかつ0x9Aじゃないならならヒット処理 if (!NotesManager.IsRollEnd(pChip) && ((nPlayer != 1 ? OpenTaiko.ConfigIni.bAutoPlay[nPlayer] : (OpenTaiko.ConfigIni.bAutoPlay[nPlayer] || OpenTaiko.ConfigIni.bAIBattleMode)) || puchichara.effect.Autoroll > 0)) this.tチップのヒット処理(pChip.n発声時刻ms, pChip, EInstrumentPad.Taiko, false, 0, nPlayer, puchichara.effect.Autoroll > 0); } - } + } #endregion } - protected override void t進行描画_チップ_ドラムス(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip) { + protected override void t進行描画_チップ_ドラムス(CConfigIni configIni, ref CTja dTX, ref CChip pChip) { } - protected override void t進行描画_チップ本体_ドラムス(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip) { + protected override void t進行描画_チップ本体_ドラムス(CConfigIni configIni, ref CTja dTX, ref CChip pChip) { } - protected override void t進行描画_チップ_フィルイン(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip) { + protected override void t進行描画_チップ_フィルイン(CConfigIni configIni, ref CTja dTX, ref CChip pChip) { } - protected override void t進行描画_チップ_小節線(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, int nPlayer) { - if (pChip.nコース != this.n現在のコース[nPlayer]) - return; - - //int n小節番号plus1 = pChip.n発声位置 / 384; - //int n小節番号plus1 = this.actPlayInfo.NowMeasure[nPlayer]; - int x = NoteOriginX[nPlayer] + pChip.nバーからの距離dot.Taiko; + protected override void t進行描画_チップ_小節線(CConfigIni configIni, ref CTja dTX, ref CChip pChip, int nPlayer) { + if (pChip.nBranch != this.nCurrentBranch[nPlayer]) + return; + + //int n小節番号plus1 = pChip.n発声位置 / 384; + //int n小節番号plus1 = this.actPlayInfo.NowMeasure[nPlayer]; + int x = NoteOriginX[nPlayer] + pChip.nHorizontalChipDistance; int y = NoteOriginY[nPlayer]; if (pChip.dbSCROLL_Y != 0.0) { - double _scrollSpeed = pChip.dbSCROLL_Y * (this.act譜面スクロール速度.db現在の譜面スクロール速度[nPlayer] + 1.0) / 10.0; + double _scrollSpeed = pChip.dbSCROLL_Y * (this.actScrollSpeed.dbConfigScrollSpeed[nPlayer] + 1.0) / 10.0; long __dbt = (long)(SoundManager.PlayTimer.NowTimeMs * OpenTaiko.ConfigIni.SongPlaybackSpeed); long time = pChip.n発声時刻ms - __dbt; float play_bpm_time = this.GetNowPBMTime(dTX, 0); - y += NotesManager.GetNoteY(pChip, time * pChip.dbBPM, _scrollSpeed, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, false); - - //y += (int)(((pChip.n発声時刻ms - (CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0))) * pChip.dbBPM * pChip.dbSCROLL_Y * (this.act譜面スクロール速度.db現在の譜面スクロール速度[nPlayer] + 1.5)) / 628.7); + y += NotesManager.GetNoteY(pChip, time * pChip.dbBPM, _scrollSpeed, OpenTaiko.Skin.Game_Notes_Interval, play_bpm_time, pChip.eScrollMode, false); + + //y += (int)(((pChip.n発声時刻ms - (CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0))) * pChip.dbBPM * pChip.dbSCROLL_Y * (this.act譜面スクロール速度.db現在の譜面スクロール速度[nPlayer] + 1.5)) / 628.7); } - if ((pChip.b可視 && !pChip.bHideBarLine) && (OpenTaiko.Tx.Bar != null)) { + if ((pChip.bVisible && !pChip.bHideBarLine) && (OpenTaiko.Tx.Bar != null)) { if (x >= 0 && x <= SampleFramework.GameWindowSize.Width) { - if (pChip.bBranch) { - //this.tx小節線_branch.t2D描画( CDTXMania.app.Device, x - 3, y, new Rectangle( 0, 0, 3, 130 ) ); + if (pChip.bBranch) { + //this.tx小節線_branch.t2D描画( CDTXMania.app.Device, x - 3, y, new Rectangle( 0, 0, 3, 130 ) ); OpenTaiko.Tx.Bar_Branch?.t2D描画(x + ((OpenTaiko.Skin.Game_Notes_Size[0] - OpenTaiko.Tx.Bar_Branch.szTextureSize.Width) / 2), y, new Rectangle(0, 0, OpenTaiko.Tx.Bar_Branch.szTextureSize.Width, OpenTaiko.Skin.Game_Notes_Size[1])); - } else { - //this.tx小節線.t2D描画( CDTXMania.app.Device, x - 3, y, new Rectangle( 0, 0, 3, 130 ) ); + } else { + //this.tx小節線.t2D描画( CDTXMania.app.Device, x - 3, y, new Rectangle( 0, 0, 3, 130 ) ); OpenTaiko.Tx.Bar?.t2D描画(x + ((OpenTaiko.Skin.Game_Notes_Size[0] - OpenTaiko.Tx.Bar.szTextureSize.Width) / 2), y, new Rectangle(0, 0, OpenTaiko.Tx.Bar.szTextureSize.Width, OpenTaiko.Skin.Game_Notes_Size[1])); } } } - } - + } + /// /// 全体にわたる制御をする。 /// public void t全体制御メソッド() { - int t = (int)SoundManager.PlayTimer.NowTimeMs; - //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.白, t.ToString() ); - + int t = (int)SoundManager.PlayTimer.NowTimeMs; + //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.白, t.ToString() ); + this.actBalloon.tDrawKusudama(); for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { var chkChip = this.chip現在処理中の連打チップ[i]; if (chkChip != null) { - long nowTime = (long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed); - //int n = this.chip現在処理中の連打チップ[i].nチャンネル番号; - if ((NotesManager.IsGenericBalloon(chkChip) || NotesManager.IsKusudama(chkChip)) && (this.b連打中[i] == true)) { - //if (this.chip現在処理中の連打チップ.n発声時刻ms <= (int)CSound管理.rc演奏用タイマ.n現在時刻ms && this.chip現在処理中の連打チップ.nノーツ終了時刻ms >= (int)CSound管理.rc演奏用タイマ.n現在時刻ms) + long nowTime = (long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed); + //int n = this.chip現在処理中の連打チップ[i].nチャンネル番号; + if ((NotesManager.IsGenericBalloon(chkChip) || NotesManager.IsKusudama(chkChip)) && (this.bCurrentlyDrumRoll[i] == true)) { + //if (this.chip現在処理中の連打チップ.n発声時刻ms <= (int)CSound管理.rc演奏用タイマ.n現在時刻ms && this.chip現在処理中の連打チップ.nノーツ終了時刻ms >= (int)CSound管理.rc演奏用タイマ.n現在時刻ms) if (chkChip.n発声時刻ms <= (int)nowTime - && chkChip.nノーツ終了時刻ms + 500 >= (int)nowTime) { + && chkChip.nNoteEndTimems + 500 >= (int)nowTime) { var balloon = NotesManager.IsKusudama(chkChip) ? nCurrentKusudamaCount : chkChip.nBalloon; if (!NotesManager.IsFuzeRoll(chkChip)) chkChip.bShow = false; this.actBalloon.On進行描画( balloon, - this.n風船残り[i], + this.nBalloonRemaining[i], i, NotesManager.IsFuzeRoll(chkChip) ? CActImplBalloon.EBalloonType.FUSEROLL @@ -1949,17 +1949,17 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { : CActImplBalloon.EBalloonType.BALLOON ); } else { - this.n現在の連打数[i] = 0; + this.nCurrentRollCount[i] = 0; } } } - } + } #region [ Treat big notes hit with a single hand ] - //常時イベントが発生しているメソッドのほうがいいんじゃないかという予想。 - //CDTX.CChip chipNoHit = this.r指定時刻に一番近い未ヒットChip((int)CSound管理.rc演奏用タイマ.n現在時刻ms, 0); + //常時イベントが発生しているメソッドのほうがいいんじゃないかという予想。 + //CDTX.CChip chipNoHit = this.r指定時刻に一番近い未ヒットChip((int)CSound管理.rc演奏用タイマ.n現在時刻ms, 0); for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) { - CDTX.CChip chipNoHit = r指定時刻に一番近い未ヒットChipを過去方向優先で検索する((long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), i); + CChip chipNoHit = r指定時刻に一番近い未ヒットChipを過去方向優先で検索する((long)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed), i); EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(i)]; bool _isBigKaTaiko = NotesManager.IsBigKaTaiko(chipNoHit, _gt); @@ -1973,8 +1973,8 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (chipNoHit.eNoteState == ENoteState.Wait && timeC <= tz.nBadZone && chipNoHit.nProcessTime + nWaitTime <= (int)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed)) { if (!_isSwapNote) { - this.tドラムヒット処理(chipNoHit.nProcessTime, EPad.RRed, chipNoHit, false, i); - //this.nWaitButton = 0; + this.tドラムヒット処理(chipNoHit.nProcessTime, EPad.RRed, chipNoHit, false, i); + //this.nWaitButton = 0; this.nStoredHit[i] = 0; chipNoHit.bHit = true; chipNoHit.IsHitted = true; @@ -1984,19 +1984,19 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { chipNoHit.eNoteState = ENoteState.None; } } - } - + } + #endregion - - //string strNull = "Found"; - + + //string strNull = "Found"; + if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.F1)) { if (!this.actPauseMenu.bIsActivePopupMenu && this.bPAUSE == false) { OpenTaiko.Skin.soundChangeSFX.tPlay(); SoundManager.PlayTimer.Pause(); OpenTaiko.Timer.Pause(); - OpenTaiko.DTX.t全チップの再生一時停止(); + OpenTaiko.TJA.t全チップの再生一時停止(); this.actAVI.tPauseControl(); this.bPAUSE = true; @@ -2013,22 +2013,22 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { if (OpenTaiko.ConfigIni.nPlayerCount == 1 ? (OpenTaiko.ConfigIni.bJudgeCountDisplay && !OpenTaiko.ConfigIni.bAutoPlay[0]) : false) showJudgeInfo = true; if (OpenTaiko.ConfigIni.bTokkunMode) showJudgeInfo = true; - if (showJudgeInfo) { - //ボードの横幅は333px - //数字フォントの小さいほうはリザルトのものと同じ。 + if (showJudgeInfo) { + //ボードの横幅は333px + //数字フォントの小さいほうはリザルトのものと同じ。 if (OpenTaiko.Tx.Judge_Meter != null) OpenTaiko.Tx.Judge_Meter.t2D描画(OpenTaiko.Skin.Game_Judge_Meter[0], OpenTaiko.Skin.Game_Judge_Meter[1]); - this.t小文字表示(OpenTaiko.Skin.Game_Judge_Meter_Perfect[0], OpenTaiko.Skin.Game_Judge_Meter_Perfect[1], this.nヒット数_Auto含まない.Drums.Perfect, false, false); - this.t小文字表示(OpenTaiko.Skin.Game_Judge_Meter_Good[0], OpenTaiko.Skin.Game_Judge_Meter_Good[1], this.nヒット数_Auto含まない.Drums.Great, false, false); - this.t小文字表示(OpenTaiko.Skin.Game_Judge_Meter_Miss[0], OpenTaiko.Skin.Game_Judge_Meter_Miss[1], this.nヒット数_Auto含まない.Drums.Miss, false, false); + this.t小文字表示(OpenTaiko.Skin.Game_Judge_Meter_Perfect[0], OpenTaiko.Skin.Game_Judge_Meter_Perfect[1], this.nHitCount_ExclAuto.Drums.Perfect, false, false); + this.t小文字表示(OpenTaiko.Skin.Game_Judge_Meter_Good[0], OpenTaiko.Skin.Game_Judge_Meter_Good[1], this.nHitCount_ExclAuto.Drums.Great, false, false); + this.t小文字表示(OpenTaiko.Skin.Game_Judge_Meter_Miss[0], OpenTaiko.Skin.Game_Judge_Meter_Miss[1], this.nHitCount_ExclAuto.Drums.Miss, false, false); this.t小文字表示(OpenTaiko.Skin.Game_Judge_Meter_Roll[0], OpenTaiko.Skin.Game_Judge_Meter_Roll[1], GetRoll(0), false, false); - int nNowTotal = this.nヒット数_Auto含まない.Drums.Perfect + this.nヒット数_Auto含まない.Drums.Great + this.nヒット数_Auto含まない.Drums.Miss; - double dbたたけた率 = Math.Round((100.0 * (OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great)) / (double)nNowTotal); - double dbPERFECT率 = Math.Round((100.0 * OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect) / (double)nNowTotal); - double dbGREAT率 = Math.Round((100.0 * OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great / (double)nNowTotal)); - double dbMISS率 = Math.Round((100.0 * OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss / (double)nNowTotal)); + int nNowTotal = this.nHitCount_ExclAuto.Drums.Perfect + this.nHitCount_ExclAuto.Drums.Great + this.nHitCount_ExclAuto.Drums.Miss; + double dbたたけた率 = Math.Round((100.0 * (OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Great)) / (double)nNowTotal); + double dbPERFECT率 = Math.Round((100.0 * OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Perfect) / (double)nNowTotal); + double dbGREAT率 = Math.Round((100.0 * OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Great / (double)nNowTotal)); + double dbMISS率 = Math.Round((100.0 * OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Miss / (double)nNowTotal)); if (double.IsNaN(dbたたけた率)) dbたたけた率 = 0; @@ -2081,6 +2081,6 @@ internal class CStage演奏ドラム画面 : CStage演奏画面共通 { OpenTaiko.Tx.Result_Number.t2D拡大率考慮中央基準描画(_x + (width / 2), _y + (height / 2), new System.Drawing.RectangleF(width * nums[j], height, width, height)); } - } + } #endregion } diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/Dan_Cert.cs b/OpenTaiko/src/Stages/07.Game/Taiko/Dan_Cert.cs index 3469b994..c6025955 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/Dan_Cert.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/Dan_Cert.cs @@ -61,16 +61,16 @@ internal class Dan_Cert : CActivity { ScreenPoint = new double[] { OpenTaiko.Skin.Game_Lane_X[0] - OpenTaiko.Tx.DanC_Screen.szTextureSize.Width / 2, OpenTaiko.Skin.Resolution[0] }; - OpenTaiko.stage演奏ドラム画面.ReSetScore(OpenTaiko.DTX.List_DanSongs[NowShowingNumber].ScoreInit, OpenTaiko.DTX.List_DanSongs[NowShowingNumber].ScoreDiff); + OpenTaiko.stage演奏ドラム画面.ReSetScore(OpenTaiko.TJA.List_DanSongs[NowShowingNumber].ScoreInit, OpenTaiko.TJA.List_DanSongs[NowShowingNumber].ScoreDiff); - OpenTaiko.stage演奏ドラム画面.ftDanReSetScoreNiji(OpenTaiko.DTX.nDan_NotesCount[NowShowingNumber], OpenTaiko.DTX.nDan_BalloonCount[NowShowingNumber]); - OpenTaiko.stage演奏ドラム画面.ftDanReSetBranches(OpenTaiko.DTX.bHasBranchDan[NowShowingNumber]); + OpenTaiko.stage演奏ドラム画面.ftDanReSetScoreNiji(OpenTaiko.TJA.nDan_NotesCount[NowShowingNumber], OpenTaiko.TJA.nDan_BalloonCount[NowShowingNumber]); + OpenTaiko.stage演奏ドラム画面.ftDanReSetBranches(OpenTaiko.TJA.bHasBranchDan[NowShowingNumber]); IsAnimating = true; //段位道場 //TJAPlayer3.stage演奏ドラム画面.actPanel.SetPanelString(TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].Title, TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].Genre, 1 + NowShowingNumber + "曲目"); - OpenTaiko.stage演奏ドラム画面.actPanel.SetPanelString(OpenTaiko.DTX.List_DanSongs[NowShowingNumber].Title, + OpenTaiko.stage演奏ドラム画面.actPanel.SetPanelString(OpenTaiko.TJA.List_DanSongs[NowShowingNumber].Title, CLangManager.LangInstance.GetString("TITLE_MODE_DAN"), 1 + NowShowingNumber + "曲目"); @@ -80,7 +80,7 @@ internal class Dan_Cert : CActivity { public override void Activate() { for (int i = 0; i < CExamInfo.cMaxExam; i++) { - if (OpenTaiko.DTX.Dan_C[i] != null) Challenge[i] = new Dan_C(OpenTaiko.DTX.Dan_C[i]); + if (OpenTaiko.TJA.Dan_C[i] != null) Challenge[i] = new Dan_C(OpenTaiko.TJA.Dan_C[i]); for (int j = 0; j < OpenTaiko.stageSongSelect.rChoosenSong.DanSongs.Count; j++) { if (OpenTaiko.stageSongSelect.rChoosenSong.DanSongs[j].Dan_C[i] != null) { @@ -121,7 +121,7 @@ internal class Dan_Cert : CActivity { if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) IsAnimating = true; - Dan_Plate = OpenTaiko.tテクスチャの生成(Path.GetDirectoryName(OpenTaiko.DTX.strファイル名の絶対パス) + @$"{Path.DirectorySeparatorChar}Dan_Plate.png"); + Dan_Plate = OpenTaiko.tテクスチャの生成(Path.GetDirectoryName(OpenTaiko.TJA.strファイル名の絶対パス) + @$"{Path.DirectorySeparatorChar}Dan_Plate.png"); base.Activate(); } @@ -134,14 +134,14 @@ internal class Dan_Cert : CActivity { var oldReached = Challenge[i].GetReached(); var isChangedAmount = false; - int totalGoods = (int)OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect; - int totalOks = (int)OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great; - int totalBads = (int)OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss; - int totalCombo = (int)OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[0]; + int totalGoods = (int)OpenTaiko.stage演奏ドラム画面.nHitCount_InclAuto.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Perfect; + int totalOks = (int)OpenTaiko.stage演奏ドラム画面.nHitCount_InclAuto.Drums.Great + OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Great; + int totalBads = (int)OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Miss; + int totalCombo = (int)OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[0]; - int individualGoods = OpenTaiko.stage演奏ドラム画面.n良[NowShowingNumber]; - int individualOks = OpenTaiko.stage演奏ドラム画面.n可[NowShowingNumber]; - int individualBads = OpenTaiko.stage演奏ドラム画面.n不可[NowShowingNumber]; + int individualGoods = OpenTaiko.stage演奏ドラム画面.nGood[NowShowingNumber]; + int individualOks = OpenTaiko.stage演奏ドラム画面.nOk[NowShowingNumber]; + int individualBads = OpenTaiko.stage演奏ドラム画面.nBad[NowShowingNumber]; int individualCombo = OpenTaiko.stage演奏ドラム画面.nHighestCombo[NowShowingNumber]; int totalADLIBs = OpenTaiko.stage演奏ドラム画面.CChartScore[0].nADLIB; @@ -176,10 +176,10 @@ internal class Dan_Cert : CActivity { isChangedAmount = Challenge[i].Update((int)OpenTaiko.stage演奏ドラム画面.actScore.GetScore(0)); break; case Exam.Type.Roll: - isChangedAmount = Challenge[i].Update(ExamChange[i] ? OpenTaiko.stage演奏ドラム画面.n連打[NowShowingNumber] : (int)(OpenTaiko.stage演奏ドラム画面.GetRoll(0))); + isChangedAmount = Challenge[i].Update(ExamChange[i] ? OpenTaiko.stage演奏ドラム画面.nRoll[NowShowingNumber] : (int)(OpenTaiko.stage演奏ドラム画面.GetRoll(0))); break; case Exam.Type.Hit: - isChangedAmount = Challenge[i].Update(ExamChange[i] ? OpenTaiko.stage演奏ドラム画面.n良[NowShowingNumber] + OpenTaiko.stage演奏ドラム画面.n可[NowShowingNumber] + OpenTaiko.stage演奏ドラム画面.n連打[NowShowingNumber] : (int)(OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + OpenTaiko.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great + OpenTaiko.stage演奏ドラム画面.GetRoll(0))); + isChangedAmount = Challenge[i].Update(ExamChange[i] ? OpenTaiko.stage演奏ドラム画面.nGood[NowShowingNumber] + OpenTaiko.stage演奏ドラム画面.nOk[NowShowingNumber] + OpenTaiko.stage演奏ドラム画面.nRoll[NowShowingNumber] : (int)(OpenTaiko.stage演奏ドラム画面.nHitCount_InclAuto.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Perfect + OpenTaiko.stage演奏ドラム画面.nHitCount_InclAuto.Drums.Great + OpenTaiko.stage演奏ドラム画面.nHitCount_ExclAuto.Drums.Great + OpenTaiko.stage演奏ドラム画面.GetRoll(0))); break; case Exam.Type.Combo: isChangedAmount = Challenge[i].Update(ExamChange[i] ? individualCombo : totalCombo); @@ -205,10 +205,10 @@ internal class Dan_Cert : CActivity { if (Challenge[i].GetExamRange() == Exam.Range.Less) { Challenge[i].SetReached(!Challenge[i].IsCleared[0]); } else { - songsnotesremain[NowShowingNumber] = OpenTaiko.DTX.nDan_NotesCount[NowShowingNumber] - - (OpenTaiko.stage演奏ドラム画面.n良[NowShowingNumber] - + OpenTaiko.stage演奏ドラム画面.n可[NowShowingNumber] - + OpenTaiko.stage演奏ドラム画面.n不可[NowShowingNumber]); + songsnotesremain[NowShowingNumber] = OpenTaiko.TJA.nDan_NotesCount[NowShowingNumber] + - (OpenTaiko.stage演奏ドラム画面.nGood[NowShowingNumber] + + OpenTaiko.stage演奏ドラム画面.nOk[NowShowingNumber] + + OpenTaiko.stage演奏ドラム画面.nBad[NowShowingNumber]); /* notesremain = TJAPlayer3.DTX.nノーツ数[3] @@ -220,7 +220,7 @@ internal class Dan_Cert : CActivity { + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss); */ - notesremain = OpenTaiko.DTX.nノーツ数[3] + notesremain = OpenTaiko.TJA.nノーツ数[3] - (OpenTaiko.stage演奏ドラム画面.CChartScore[0].nGood + OpenTaiko.stage演奏ドラム画面.CChartScore[0].nGreat + OpenTaiko.stage演奏ドラム画面.CChartScore[0].nMiss); @@ -253,8 +253,8 @@ internal class Dan_Cert : CActivity { : notesremain < (Challenge[i].Value[0] - Challenge[i].Amount)) Challenge[i].SetReached(true); break; case Exam.Type.Combo: - if (notesremain + OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.P1 < ((Challenge[i].Value[0])) - && OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[0] < (Challenge[i].Value[0])) Challenge[i].SetReached(true); + if (notesremain + OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.P1 < ((Challenge[i].Value[0])) + && OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[0] < (Challenge[i].Value[0])) Challenge[i].SetReached(true); break; default: break; @@ -265,10 +265,10 @@ internal class Dan_Cert : CActivity { // Check challenge fails at the end of each songs - if (OpenTaiko.DTX.listChip.Count > 0) { + if (OpenTaiko.TJA.listChip.Count > 0) { if (ExamChange[i] - ? OpenTaiko.DTX.pDan_LastChip[NowShowingNumber].n発声時刻ms <= SoundManager.PlayTimer.NowTime//TJAPlayer3.Timer.n現在時刻 - : OpenTaiko.DTX.listChip[OpenTaiko.DTX.listChip.Count - 1].n発声時刻ms <= SoundManager.PlayTimer.NowTime)//TJAPlayer3.Timer.n現在時刻) + ? OpenTaiko.TJA.pDan_LastChip[NowShowingNumber].n発声時刻ms <= SoundManager.PlayTimer.NowTime//TJAPlayer3.Timer.n現在時刻 + : OpenTaiko.TJA.listChip[OpenTaiko.TJA.listChip.Count - 1].n発声時刻ms <= SoundManager.PlayTimer.NowTime)//TJAPlayer3.Timer.n現在時刻) { switch (Challenge[i].GetExamType()) { case Exam.Type.Score: @@ -350,20 +350,20 @@ internal class Dan_Cert : CActivity { if (Counter_Text.CurrentValue >= 2000) { for (int i = Counter_Text_Old; i < Counter_Text.CurrentValue; i++) { if (i % 2 == 0) { - if (OpenTaiko.DTX.List_DanSongs[NowShowingNumber].TitleTex != null) { - OpenTaiko.DTX.List_DanSongs[NowShowingNumber].TitleTex.Opacity--; + if (OpenTaiko.TJA.List_DanSongs[NowShowingNumber].TitleTex != null) { + OpenTaiko.TJA.List_DanSongs[NowShowingNumber].TitleTex.Opacity--; } - if (OpenTaiko.DTX.List_DanSongs[NowShowingNumber].SubTitleTex != null) { - OpenTaiko.DTX.List_DanSongs[NowShowingNumber].SubTitleTex.Opacity--; + if (OpenTaiko.TJA.List_DanSongs[NowShowingNumber].SubTitleTex != null) { + OpenTaiko.TJA.List_DanSongs[NowShowingNumber].SubTitleTex.Opacity--; } } } } else { - if (OpenTaiko.DTX.List_DanSongs[NowShowingNumber].TitleTex != null) { - OpenTaiko.DTX.List_DanSongs[NowShowingNumber].TitleTex.Opacity = 255; + if (OpenTaiko.TJA.List_DanSongs[NowShowingNumber].TitleTex != null) { + OpenTaiko.TJA.List_DanSongs[NowShowingNumber].TitleTex.Opacity = 255; } - if (OpenTaiko.DTX.List_DanSongs[NowShowingNumber].SubTitleTex != null) { - OpenTaiko.DTX.List_DanSongs[NowShowingNumber].SubTitleTex.Opacity = 255; + if (OpenTaiko.TJA.List_DanSongs[NowShowingNumber].SubTitleTex != null) { + OpenTaiko.TJA.List_DanSongs[NowShowingNumber].SubTitleTex.Opacity = 255; } } Counter_Text_Old = Counter_Text.CurrentValue; @@ -430,8 +430,8 @@ internal class Dan_Cert : CActivity { } if (Counter_Text != null) { if (Counter_Text.IsUnEnded) { - var title = OpenTaiko.DTX.List_DanSongs[NowShowingNumber].TitleTex; - var subTitle = OpenTaiko.DTX.List_DanSongs[NowShowingNumber].SubTitleTex; + var title = OpenTaiko.TJA.List_DanSongs[NowShowingNumber].TitleTex; + var subTitle = OpenTaiko.TJA.List_DanSongs[NowShowingNumber].SubTitleTex; if (subTitle == null) title?.t2D拡大率考慮中央基準描画(OpenTaiko.Skin.Game_DanC_Title_X[0], OpenTaiko.Skin.Game_DanC_Title_Y[0]); else { diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/NotesManager.cs b/OpenTaiko/src/Stages/07.Game/Taiko/NotesManager.cs index 5e40b55b..055b48b8 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/NotesManager.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/NotesManager.cs @@ -49,7 +49,7 @@ class NotesManager { return -1; } - public static int GetNoteX(CDTX.CChip pChip, double timems, double scroll, int interval, float play_bpm_time, EScrollMode eScrollMode, bool roll) { + public static int GetNoteX(CChip pChip, double timems, double scroll, int interval, float play_bpm_time, EScrollMode eScrollMode, bool roll) { double hbtime = ((roll ? pChip.fBMSCROLLTime_end : pChip.fBMSCROLLTime) - (play_bpm_time)); double screen_ratio = OpenTaiko.Skin.Resolution[0] / 1280.0; switch (eScrollMode) { @@ -66,7 +66,7 @@ class NotesManager { } } - public static int GetNoteY(CDTX.CChip pChip, double timems, double scroll, int interval, float play_bpm_time, EScrollMode eScrollMode, bool roll) { + public static int GetNoteY(CChip pChip, double timems, double scroll, int interval, float play_bpm_time, EScrollMode eScrollMode, bool roll) { double hbtime = ((roll ? pChip.fBMSCROLLTime_end : pChip.fBMSCROLLTime) - (play_bpm_time)); double screen_ratio = OpenTaiko.Skin.Resolution[1] / 720.0; switch (eScrollMode) { @@ -87,7 +87,7 @@ class NotesManager { #region [Gameplay] - public static bool IsExpectedPad(int stored, int hit, CDTX.CChip chip, EGameType gt) { + public static bool IsExpectedPad(int stored, int hit, CChip chip, EGameType gt) { var inPad = (EPad)hit; var onPad = (EPad)stored; @@ -120,56 +120,56 @@ class NotesManager { #region [General] - public static bool IsCommonNote(CDTX.CChip chip) { + public static bool IsCommonNote(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 >= 0x11 && chip.nチャンネル番号 < 0x18; + return chip.nChannelNo >= 0x11 && chip.nChannelNo < 0x18; } - public static bool IsMine(CDTX.CChip chip) { + public static bool IsMine(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x1C; + return chip.nChannelNo == 0x1C; } - public static bool IsDonNote(CDTX.CChip chip) { + public static bool IsDonNote(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x11 || chip.nチャンネル番号 == 0x13 || chip.nチャンネル番号 == 0x1A; + return chip.nChannelNo == 0x11 || chip.nChannelNo == 0x13 || chip.nChannelNo == 0x1A; } - public static bool IsKaNote(CDTX.CChip chip) { + public static bool IsKaNote(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x12 || chip.nチャンネル番号 == 0x14 || chip.nチャンネル番号 == 0x1B; + return chip.nChannelNo == 0x12 || chip.nChannelNo == 0x14 || chip.nChannelNo == 0x1B; } - public static bool IsSmallNote(CDTX.CChip chip, bool blue) { + public static bool IsSmallNote(CChip chip, bool blue) { if (chip == null) return false; - return blue ? chip.nチャンネル番号 == 0x12 : chip.nチャンネル番号 == 0x11; + return blue ? chip.nChannelNo == 0x12 : chip.nChannelNo == 0x11; } - public static bool IsSmallNote(CDTX.CChip chip) { + public static bool IsSmallNote(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x12 || chip.nチャンネル番号 == 0x11; + return chip.nChannelNo == 0x12 || chip.nChannelNo == 0x11; } - public static bool IsBigNote(CDTX.CChip chip) { + public static bool IsBigNote(CChip chip) { if (chip == null) return false; - return (chip.nチャンネル番号 == 0x13 || chip.nチャンネル番号 == 0x14 || chip.nチャンネル番号 == 0x1A || chip.nチャンネル番号 == 0x1B); + return (chip.nChannelNo == 0x13 || chip.nChannelNo == 0x14 || chip.nChannelNo == 0x1A || chip.nChannelNo == 0x1B); } - public static bool IsBigKaTaiko(CDTX.CChip chip, EGameType gt) { + public static bool IsBigKaTaiko(CChip chip, EGameType gt) { if (chip == null) return false; - return (chip.nチャンネル番号 == 0x14 || chip.nチャンネル番号 == 0x1B) && gt == EGameType.Taiko; + return (chip.nChannelNo == 0x14 || chip.nChannelNo == 0x1B) && gt == EGameType.Taiko; } - public static bool IsBigDonTaiko(CDTX.CChip chip, EGameType gt) { + public static bool IsBigDonTaiko(CChip chip, EGameType gt) { if (chip == null) return false; - return (chip.nチャンネル番号 == 0x13 || chip.nチャンネル番号 == 0x1A) && gt == EGameType.Taiko; + return (chip.nChannelNo == 0x13 || chip.nChannelNo == 0x1A) && gt == EGameType.Taiko; } - public static bool IsClapKonga(CDTX.CChip chip, EGameType gt) { + public static bool IsClapKonga(CChip chip, EGameType gt) { if (chip == null) return false; - return (chip.nチャンネル番号 == 0x14 || chip.nチャンネル番号 == 0x1B) && gt == EGameType.Konga; + return (chip.nChannelNo == 0x14 || chip.nChannelNo == 0x1B) && gt == EGameType.Konga; } - public static bool IsSwapNote(CDTX.CChip chip, EGameType gt) { + public static bool IsSwapNote(CChip chip, EGameType gt) { if (chip == null) return false; return ( IsKongaPink(chip, gt) // Konga Pink note @@ -177,87 +177,87 @@ class NotesManager { ); } - public static bool IsKongaPink(CDTX.CChip chip, EGameType gt) { + public static bool IsKongaPink(CChip chip, EGameType gt) { if (chip == null) return false; // Purple notes are treated as Pink in Konga - return (chip.nチャンネル番号 == 0x13 || chip.nチャンネル番号 == 0x1A || IsPurpleNote(chip)) && gt == EGameType.Konga; + return (chip.nChannelNo == 0x13 || chip.nChannelNo == 0x1A || IsPurpleNote(chip)) && gt == EGameType.Konga; } - public static bool IsPurpleNote(CDTX.CChip chip) { + public static bool IsPurpleNote(CChip chip) { if (chip == null) return false; - return (chip.nチャンネル番号 == 0x101); + return (chip.nChannelNo == 0x101); } - public static bool IsYellowRoll(CDTX.CChip chip) { + public static bool IsYellowRoll(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x21; + return chip.nChannelNo == 0x21; } - public static bool IsClapRoll(CDTX.CChip chip) { + public static bool IsClapRoll(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x20; + return chip.nChannelNo == 0x20; } - public static bool IsKusudama(CDTX.CChip chip) { + public static bool IsKusudama(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x19; + return chip.nChannelNo == 0x19; } - public static bool IsFuzeRoll(CDTX.CChip chip) { + public static bool IsFuzeRoll(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x1D; + return chip.nChannelNo == 0x1D; } - public static bool IsRollEnd(CDTX.CChip chip) { + public static bool IsRollEnd(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x18; + return chip.nChannelNo == 0x18; } - public static bool IsBalloon(CDTX.CChip chip) { + public static bool IsBalloon(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x17; + return chip.nChannelNo == 0x17; } - public static bool IsBigRoll(CDTX.CChip chip) { + public static bool IsBigRoll(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x16; + return chip.nChannelNo == 0x16; } - public static bool IsSmallRoll(CDTX.CChip chip) { + public static bool IsSmallRoll(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x15; + return chip.nChannelNo == 0x15; } - public static bool IsADLIB(CDTX.CChip chip) { + public static bool IsADLIB(CChip chip) { if (chip == null) return false; - return chip.nチャンネル番号 == 0x1F; + return chip.nChannelNo == 0x1F; } - public static bool IsRoll(CDTX.CChip chip) { + public static bool IsRoll(CChip chip) { if (chip == null) return false; return IsBigRoll(chip) || IsSmallRoll(chip) || IsClapRoll(chip) || IsYellowRoll(chip); } - public static bool IsGenericBalloon(CDTX.CChip chip) { + public static bool IsGenericBalloon(CChip chip) { if (chip == null) return false; return IsBalloon(chip) || IsKusudama(chip) || IsFuzeRoll(chip); } - public static bool IsGenericRoll(CDTX.CChip chip) { + public static bool IsGenericRoll(CChip chip) { if (chip == null) return false; - return (0x15 <= chip.nチャンネル番号 && chip.nチャンネル番号 <= 0x19) || - (chip.nチャンネル番号 == 0x20 || chip.nチャンネル番号 == 0x21) - || chip.nチャンネル番号 == 0x1D; + return (0x15 <= chip.nChannelNo && chip.nChannelNo <= 0x19) || + (chip.nChannelNo == 0x20 || chip.nChannelNo == 0x21) + || chip.nChannelNo == 0x1D; } - public static bool IsMissableNote(CDTX.CChip chip) { + public static bool IsMissableNote(CChip chip) { if (chip == null) return false; - return (0x11 <= chip.nチャンネル番号 && chip.nチャンネル番号 <= 0x14) - || chip.nチャンネル番号 == 0x1A - || chip.nチャンネル番号 == 0x1B - || chip.nチャンネル番号 == 0x101; + return (0x11 <= chip.nChannelNo && chip.nChannelNo <= 0x14) + || chip.nChannelNo == 0x1A + || chip.nChannelNo == 0x1B + || chip.nChannelNo == 0x101; } - public static bool IsHittableNote(CDTX.CChip chip) { + public static bool IsHittableNote(CChip chip) { if (chip == null) return false; return IsMissableNote(chip) || IsGenericRoll(chip) @@ -287,7 +287,7 @@ class NotesManager { } // Regular display - public static void DisplayNote(int player, int x, int y, CDTX.CChip chip, int frame, int length = -1) { + public static void DisplayNote(int player, int x, int y, CChip chip, int frame, int length = -1) { if (OpenTaiko.ConfigIni.eSTEALTH[OpenTaiko.GetActualPlayer(player)] != EStealthMode.Off || !chip.bShow) return; @@ -325,7 +325,7 @@ class NotesManager { } // Roll display - public static void DisplayRoll(int player, int x, int y, CDTX.CChip chip, int frame, + public static void DisplayRoll(int player, int x, int y, CChip chip, int frame, Color4 normalColor, Color4 effectedColor, int x末端, int y末端) { EGameType _gt = OpenTaiko.ConfigIni.nGameType[OpenTaiko.GetActualPlayer(player)]; @@ -417,7 +417,7 @@ class NotesManager { } // SENotes - public static void DisplaySENotes(int player, int x, int y, CDTX.CChip chip) { + public static void DisplaySENotes(int player, int x, int y, CChip chip) { if (OpenTaiko.ConfigIni.eSTEALTH[OpenTaiko.GetActualPlayer(player)] == EStealthMode.Stealth) return; diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/ScriptBG.cs b/OpenTaiko/src/Stages/07.Game/Taiko/ScriptBG.cs index 0ef9cda1..632dbb0e 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/ScriptBG.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/ScriptBG.cs @@ -249,12 +249,12 @@ class ScriptBG : IDisposable { } double timestamp = -1.0; - if (OpenTaiko.DTX != null) { + if (OpenTaiko.TJA != null) { double timeoffset = OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan ? -2.0 : -8.2; // Due to the fact that all Dans use DELAY to offset instead of OFFSET, Dan offset can't be properly synced. ¯\_(ツ)_/¯ timestamp = (((double)(SoundManager.PlayTimer.NowTime * OpenTaiko.ConfigIni.SongPlaybackSpeed)) / 1000.0) + - (-(OpenTaiko.ConfigIni.MusicPreTimeMs + OpenTaiko.DTX.nOFFSET) / 1000.0) + + (-(OpenTaiko.ConfigIni.MusicPreTimeMs + OpenTaiko.TJA.nOFFSET) / 1000.0) + timeoffset; } diff --git a/OpenTaiko/src/Stages/08.Result/CActResultImage.cs b/OpenTaiko/src/Stages/08.Result/CActResultImage.cs index 00cb1955..a8b16e19 100644 --- a/OpenTaiko/src/Stages/08.Result/CActResultImage.cs +++ b/OpenTaiko/src/Stages/08.Result/CActResultImage.cs @@ -65,12 +65,12 @@ internal class CActResultImage : CActivity { private CTexture txリザルト画像; private bool tプレビュー画像の指定があれば構築する() { - if (string.IsNullOrEmpty(OpenTaiko.DTX.PREIMAGE)) { + if (string.IsNullOrEmpty(OpenTaiko.TJA.PREIMAGE)) { return false; } OpenTaiko.tDisposeSafely(ref this.txリザルト画像); this.r表示するリザルト画像 = null; - string path = OpenTaiko.DTX.strフォルダ名 + OpenTaiko.DTX.PREIMAGE; + string path = OpenTaiko.TJA.strフォルダ名 + OpenTaiko.TJA.PREIMAGE; if (!File.Exists(path)) { Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path }); return false; diff --git a/OpenTaiko/src/Stages/08.Result/CActResultParameterPanel.cs b/OpenTaiko/src/Stages/08.Result/CActResultParameterPanel.cs index c702f9b3..f53d51b3 100644 --- a/OpenTaiko/src/Stages/08.Result/CActResultParameterPanel.cs +++ b/OpenTaiko/src/Stages/08.Result/CActResultParameterPanel.cs @@ -460,7 +460,7 @@ internal class CActResultParameterPanel : CActivity { OpenTaiko.stage演奏ドラム画面.CChartScore[i].nGood, OpenTaiko.stage演奏ドラム画面.CChartScore[i].nMiss, OpenTaiko.stage演奏ドラム画面.GetRoll(i), - OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[i], + OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[i], OpenTaiko.stage演奏ドラム画面.CChartScore[i].nADLIB, OpenTaiko.stage演奏ドラム画面.CChartScore[i].nMine, }; diff --git a/OpenTaiko/src/Stages/08.Result/CActResultSongBar.cs b/OpenTaiko/src/Stages/08.Result/CActResultSongBar.cs index 245a2f29..9815a56b 100644 --- a/OpenTaiko/src/Stages/08.Result/CActResultSongBar.cs +++ b/OpenTaiko/src/Stages/08.Result/CActResultSongBar.cs @@ -21,7 +21,7 @@ internal class CActResultSongBar : CActivity { public override void Activate() { - var title = OpenTaiko.DTX.TITLE.GetString(""); + var title = OpenTaiko.TJA.TITLE.GetString(""); using (var bmpSongTitle = pfMusicName.DrawText(title, OpenTaiko.Skin.Result_MusicName_ForeColor, OpenTaiko.Skin.Result_MusicName_BackColor, null, 30)) { this.txMusicName = OpenTaiko.tテクスチャの生成(bmpSongTitle, false); diff --git a/OpenTaiko/src/Stages/08.Result/CStage結果.cs b/OpenTaiko/src/Stages/08.Result/CStage結果.cs index 9bd260ae..33d6ccd4 100644 --- a/OpenTaiko/src/Stages/08.Result/CStage結果.cs +++ b/OpenTaiko/src/Stages/08.Result/CStage結果.cs @@ -39,7 +39,7 @@ internal class CStage結果 : CStage { public int[] nスコアランク = { 0, 0, 0, 0, 0 }; //0:未取得 1:白粋 2:銅粋 3:銀粋 4:金雅 5:桃雅 6:紫雅 7:虹極 public int[] nHighScore = { 0, 0, 0, 0, 0 }; - public CDTX.CChip[] r空うちドラムチップ; + public CChip[] r空うちドラムチップ; public STDGBVALUE st演奏記録; @@ -50,7 +50,7 @@ internal class CStage結果 : CStage { this.st演奏記録.Guitar = new CScoreIni.C演奏記録(); this.st演奏記録.Bass = new CScoreIni.C演奏記録(); this.st演奏記録.Taiko = new CScoreIni.C演奏記録(); - this.r空うちドラムチップ = new CDTX.CChip[10]; + this.r空うちドラムチップ = new CChip[10]; this.n総合ランク値 = -1; this.nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 }; base.eStageID = CStage.EStage.Results; @@ -325,7 +325,7 @@ internal class CStage結果 : CStage { }; int level = OpenTaiko.stageSongSelect.rChoosenSong.nLevel[diff]; - CDTX.ELevelIcon levelIcon = OpenTaiko.stageSongSelect.rChoosenSong.nLevelIcon[diff]; + CTja.ELevelIcon levelIcon = OpenTaiko.stageSongSelect.rChoosenSong.nLevelIcon[diff]; return (diffArr[Math.Min(diff, 6)] + "Lv." + level + diffArrIcon[(int)levelIcon]); } @@ -630,7 +630,7 @@ internal class CStage結果 : CStage { this.ctPhase3 = null; examsShift = 0; - Dan_Plate = OpenTaiko.tテクスチャの生成(Path.GetDirectoryName(OpenTaiko.DTX.strファイル名の絶対パス) + @$"{Path.DirectorySeparatorChar}Dan_Plate.png"); + Dan_Plate = OpenTaiko.tテクスチャの生成(Path.GetDirectoryName(OpenTaiko.TJA.strファイル名の絶対パス) + @$"{Path.DirectorySeparatorChar}Dan_Plate.png"); base.Activate(); @@ -1533,7 +1533,7 @@ internal class CStage結果 : CStage { OpenTaiko.stage演奏ドラム画面.GetRoll(0), 1.0f); this.actParameterPanel.t小文字表示(OpenTaiko.Skin.DanResult_MaxCombo[0] + offset, OpenTaiko.Skin.DanResult_MaxCombo[1], - OpenTaiko.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[0], 1.0f); + OpenTaiko.stage演奏ドラム画面.actCombo.nCurrentCombo.最高値[0], 1.0f); this.actParameterPanel.t小文字表示(OpenTaiko.Skin.DanResult_TotalHit[0] + offset, OpenTaiko.Skin.DanResult_TotalHit[1], totalHit, 1.0f); @@ -1596,10 +1596,10 @@ internal class CStage結果 : CStage { int[] scoresArr = { - OpenTaiko.stage演奏ドラム画面.n良[i], - OpenTaiko.stage演奏ドラム画面.n可[i], - OpenTaiko.stage演奏ドラム画面.n不可[i], - OpenTaiko.stage演奏ドラム画面.n連打[i] + OpenTaiko.stage演奏ドラム画面.nGood[i], + OpenTaiko.stage演奏ドラム画面.nOk[i], + OpenTaiko.stage演奏ドラム画面.nBad[i], + OpenTaiko.stage演奏ドラム画面.nRoll[i] }; int[] num_x = {