OSDN Git Service

DTXManiaソリューション、DTXManiaプロジェクト、DTXCreatorプロジェクト、FDKプロジェクトについて英語化。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CStage演奏画面共通_描画.cs
diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通_描画.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通_描画.cs
deleted file mode 100644 (file)
index 93b2f70..0000000
+++ /dev/null
@@ -1,644 +0,0 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Linq;\r
-using System.Text;\r
-using System.Threading.Tasks;\r
-using SharpDX;\r
-using FDK;\r
-using System.Drawing;\r
-using System.IO;\r
-using System.Diagnostics;\r
-using System.Drawing.Imaging;\r
-\r
-using Rectangle = System.Drawing.Rectangle;\r
-\r
-namespace DTXMania\r
-{\r
-       internal partial class CStage演奏画面共通 : CStage\r
-       {\r
-               void SudHidInvChip( EPart inst, ref CChip pChip )\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.SemiInv ||\r
-                               CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.FullInv)\r
-                       {\r
-                               cInvisibleChip.SetInvisibleStatus(ref pChip);\r
-                       }\r
-                       else\r
-                       {\r
-                               if (CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.Sudden ||\r
-                                       CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.SudHid)\r
-                               {\r
-                                       if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nSuddenFrom[inst])\r
-                                       {\r
-                                               pChip.b可視 = true;\r
-                                               pChip.n透明度 = 0xff;\r
-                                       }\r
-                                       else if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nSuddenFrom[inst] + 100)\r
-                                       {\r
-                                               pChip.b可視 = true;\r
-                                               pChip.n透明度 = 0xff - (int)((pChip.nバーからの距離dot[inst] -\r
-                                                       CDTXMania.Instance.ConfigIni.nSuddenFrom[inst]) * 255.0 / 50.0);\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               pChip.b可視 = false;\r
-                                               pChip.n透明度 = 0;\r
-                                       }\r
-                               }\r
-                               if (CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.Hidden ||\r
-                                       CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.SudHid)\r
-                               {\r
-                                       if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nHiddenFrom[inst])\r
-                                       {\r
-                                               pChip.b可視 = false;\r
-                                       }\r
-                                       else if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nHiddenFrom[inst] + 100)\r
-                                       {\r
-                                               pChip.b可視 = true;\r
-                                               pChip.n透明度 = (int)((pChip.nバーからの距離dot[inst] -\r
-                                                       CDTXMania.Instance.ConfigIni.nHiddenFrom[inst]) * 255.0 / 50.0);\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-\r
-               /// <summary>\r
-               /// ギター・ベースのチップ表示\r
-               /// </summary>\r
-               /// <param name="configIni"></param>\r
-               /// <param name="dTX"></param>\r
-               /// <param name="pChip">描画するチップ</param>\r
-               /// <param name="inst">楽器種別</param>\r
-               protected void t進行描画_チップ_ギターベース(ref CChip pChip, EPart inst)\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                       {\r
-                               SudHidInvChip(inst, ref pChip);\r
-\r
-                               bool bChipHasR = pChip.bGuitarBass_R;\r
-                               bool bChipHasG = pChip.bGuitarBass_G;\r
-                               bool bChipHasB = pChip.bGuitarBass_B;\r
-                               bool bChipHasW = pChip.bGuitarBass_Wailing;\r
-                               bool bChipIsO = pChip.bGuitarBass_Open;\r
-\r
-                               #region [ chip描画 ]\r
-                               if (!pChip.bHit && pChip.b可視)\r
-                               {\r
-                                       if (this.txチップGB != null)\r
-                                       {\r
-                                               this.txチップGB.n透明度 = pChip.n透明度;\r
-                                       }\r
-\r
-                                       int barY = C演奏判定ライン座標共通.n判定ラインY座標(inst);\r
-                                       int y = CDTXMania.Instance.ConfigIni.bReverse[inst] ?\r
-                                               barY - pChip.nバーからの距離dot[inst] :\r
-                                               barY + pChip.nバーからの距離dot[inst];\r
-\r
-                                       int showRangeY0 = 0;\r
-                                       int showRangeY1 = SampleFramework.GameWindowSize.Height;\r
-\r
-                                       if ((showRangeY0 < y) && (y < showRangeY1))\r
-                                       {\r
-                                               if (this.txチップGB != null)\r
-                                               {\r
-                                                       int nアニメカウンタ現在の値 = this.ctチップ模様アニメ[inst].n現在の値;\r
-                                                       #region [ OPENチップの描画 ]\r
-                                                       if (pChip[(inst == EPart.Guitar) ? EChannel.Guitar_Open : EChannel.Bass_Open])\r
-                                                       {\r
-                                                               int xo = CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst];\r
-                                                               this.txチップGB.t2D描画(CDTXMania.Instance.Device, xo,\r
-                                                                       y - CDTXMania.Instance.Coordinates.ImgGtChipOpen.H / 2,\r
-                                                                       CDTXMania.Instance.Coordinates.ImgGtChipOpen.ApplyCounterY(nアニメカウンタ現在の値 % CDTXMania.Instance.Coordinates.ImgGtCountOpenChip, 2));\r
-                                                       }\r
-                                                       Rectangle rect = CDTXMania.Instance.Coordinates.ImgGtRGBButton.ApplyCounterY(nアニメカウンタ現在の値 % CDTXMania.Instance.Coordinates.ImgGtCountRGBChip, 2);\r
-                                                       #endregion\r
-                                                       #region [ RGBチップ描画 ]\r
-                                                       if (bChipHasR)\r
-                                                       {\r
-                                                               this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(inst == EPart.Guitar ? ELane.GtR : ELane.BsR) +\r
-                                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(inst == EPart.Guitar ? ELane.GtR : ELane.BsR) - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                       y - rect.Height / 2, rect);\r
-                                                       }\r
-                                                       rect.X += rect.Width;\r
-                                                       if (bChipHasG)\r
-                                                       {\r
-                                                               this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(inst == EPart.Guitar ? ELane.GtG : ELane.BsG) +\r
-                                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(inst == EPart.Guitar ? ELane.GtG : ELane.BsG) - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                       y - rect.Height / 2, rect);\r
-                                                       }\r
-                                                       rect.X += rect.Width;\r
-                                                       if (bChipHasB)\r
-                                                       {\r
-                                                               this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(inst == EPart.Guitar ? ELane.GtB : ELane.BsB) +\r
-                                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(inst == EPart.Guitar ? ELane.GtB : ELane.BsB) - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                       y - rect.Height / 2, rect);\r
-                                                       }\r
-                                                       #endregion\r
-                                               }\r
-                                       }\r
-                               }\r
-                               #endregion\r
-\r
-                               // #35411 2015.08.20 chnmr0 modified\r
-                               // 従来のAUTO処理に加えてプレーヤーゴーストの再生機能を追加\r
-                               bool autoPlayCondition = (!pChip.bHit) && (pChip.nバーからの距離dot[inst] < 0);\r
-                               if (autoPlayCondition)\r
-                               {\r
-                                       cInvisibleChip.StartSemiInvisible(inst);\r
-                               }\r
-\r
-                               bool autoPick = (inst == EPart.Guitar) ?\r
-                                                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick :\r
-                                                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick;\r
-\r
-                               autoPlayCondition = !pChip.bHit && autoPick;\r
-                               long ghostLag = 0;\r
-                               bool bUsePerfectGhost = true;\r
-\r
-                               if ((pChip.e楽器パート == EPart.Guitar || pChip.e楽器パート == EPart.Bass) &&\r
-                                               CDTXMania.Instance.ConfigIni.eAutoGhost[pChip.e楽器パート] != EAutoGhostData.Perfect &&\r
-                                               CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート] != null &&\r
-                                               0 <= pChip.n楽器パートでの出現順 &&\r
-                                               pChip.n楽器パートでの出現順 < CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート].Count)\r
-                               {\r
-                                       // #35411 (mod) Ghost data が有効なので 従来のAUTOではなくゴーストのラグを利用\r
-                                       // 発生時刻と現在時刻からこのタイミングで演奏するかどうかを決定\r
-                                       ghostLag = CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート][pChip.n楽器パートでの出現順];\r
-                                       bool resetCombo = ghostLag > 255;\r
-                                       ghostLag = (ghostLag & 255) - 128;\r
-                                       ghostLag -= (pChip.e楽器パート == EPart.Guitar ?\r
-                                                                                               CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar :\r
-                                                                                               CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass);\r
-                                       autoPlayCondition &= (pChip.n発声時刻ms + ghostLag <= CSound管理.rc演奏用タイマ.n現在時刻ms);\r
-                                       if (resetCombo && autoPlayCondition)\r
-                                       {\r
-                                               this.actCombo.dgbコンボ数[pChip.e楽器パート].ResetCombo();\r
-                                       }\r
-                                       bUsePerfectGhost = false;\r
-                               }\r
-\r
-                               if (bUsePerfectGhost)\r
-                               {\r
-                                       // 従来のAUTOを使用する場合\r
-                                       autoPlayCondition &= (pChip.nバーからの距離dot[inst] < 0);\r
-                               }\r
-\r
-                               if (autoPlayCondition)\r
-                               {\r
-                                       // lane offset\r
-                                       int lo = (inst == EPart.Guitar) ? 0 : 3;\r
-                                       bool autoR = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtR : CDTXMania.Instance.ConfigIni.bAutoPlay.BsR;\r
-                                       bool autoG = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtG : CDTXMania.Instance.ConfigIni.bAutoPlay.BsG;\r
-                                       bool autoB = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtB : CDTXMania.Instance.ConfigIni.bAutoPlay.BsB;\r
-                                       bool pushingR = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtR : EPad.BsR);\r
-                                       bool pushingG = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtG : EPad.BsG);\r
-                                       bool pushingB = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtB : EPad.BsB);\r
-\r
-                                       #region [ Chip Fire effects (auto時用) ]\r
-                                       // autoPickでない時の処理は、 t入力処理・ギターベース(E楽器パート) で行う\r
-                                       bool bSuccessOPEN = bChipIsO && (autoR || !pushingR) && (autoG || !pushingG) && (autoB || !pushingB);\r
-                                       {\r
-                                               if ((bChipHasR && (autoR || pushingR)) || bSuccessOPEN)\r
-                                               {\r
-                                                       this.actChipFireGB.Start(0 + lo);\r
-                                               }\r
-                                               if ((bChipHasG && (autoG || pushingG)) || bSuccessOPEN)\r
-                                               {\r
-                                                       this.actChipFireGB.Start(1 + lo);\r
-                                               }\r
-                                               if ((bChipHasB && (autoB || pushingB)) || bSuccessOPEN)\r
-                                               {\r
-                                                       this.actChipFireGB.Start(2 + lo);\r
-                                               }\r
-                                       }\r
-                                       #endregion\r
-                                       #region [ autopick ]\r
-                                       {\r
-                                               bool bMiss = true;\r
-                                               if (bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB)   // autoレーンとチップレーン一致時はOK\r
-                                               {                                     // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。\r
-                                                       bMiss = false;\r
-                                               }\r
-                                               else if ((autoR || (bChipHasR == pushingR)) && (autoG || (bChipHasG == pushingG)) && (autoB || (bChipHasB == pushingB)))\r
-                                               // ( bChipHasR == ( pushingR | autoR ) ) && ( bChipHasG == ( pushingG | autoG ) ) && ( bChipHasB == ( pushingB | autoB ) ) )\r
-                                               {\r
-                                                       bMiss = false;\r
-                                               }\r
-                                               else if (((bChipIsO == true) && (!pushingR | autoR) && (!pushingG | autoG) && (!pushingB | autoB))) // OPEN時\r
-                                               {\r
-                                                       bMiss = false;\r
-                                               }\r
-                                               pChip.bHit = true;\r
-                                               this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag,\r
-                                                       inst, CDTXMania.Instance.DTX.nモニタを考慮した音量(inst), false, bMiss);\r
-                                               this.r次にくるギターChip = null;\r
-                                               if (!bMiss)\r
-                                               {\r
-                                                       this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip);\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       pChip.nLag = 0;   // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入\r
-                                                       this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip, false);\r
-                                               }\r
-                                               EChannel chWailingChip = (inst == EPart.Guitar) ? EChannel.Guitar_Wailing : EChannel.Bass_Wailing;\r
-                                               CChip item = this.r指定時刻に一番近い未ヒットChip(pChip.n発声時刻ms + ghostLag, chWailingChip, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst], 140);\r
-                                               if (item != null && !bMiss)\r
-                                               {\r
-                                                       this.queWailing[inst].Enqueue(item);\r
-                                               }\r
-                                       }\r
-                                       #endregion\r
-                                       // #35411 modify end\r
-                               }\r
-                               SetGhostTargetOnGraph(inst);\r
-                               return;\r
-                       } // end of "if configIni.bGuitar有効"\r
-                       else\r
-                       {\r
-                               // Guitar/Bass無効の場合は、自動演奏する\r
-                               if ((!pChip.bHit && (pChip.nバーからの距離dot[inst] < 0)))\r
-                               {\r
-                                       pChip.bHit = true;\r
-                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, CDTXMania.Instance.DTX.nモニタを考慮した音量(inst));\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void SetGhostTargetOnGraph(EPart inst)\r
-               {\r
-                       if (inst != EPart.Unknown)\r
-                       {\r
-                               // #35411 2015.08.21 chnmr0 add\r
-                               // 目標値グラフにゴーストの達成率を渡す\r
-                               if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.None &&\r
-                                               CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null)\r
-                               {\r
-                                       double val = 0;\r
-                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.Online)\r
-                                       {\r
-                                               if (CDTXMania.Instance.DTX.n可視チップ数[inst] > 0)\r
-                                               {\r
-                                                       // Online Stats の計算式\r
-                                                       val = 100 *\r
-                                                                       (this.nヒット数_TargetGhost[inst].Perfect * 17 +\r
-                                                                        this.nヒット数_TargetGhost[inst].Great * 7 +\r
-                                                                        this.n最大コンボ数_TargetGhost[inst] * 3) / (20.0 * CDTXMania.Instance.DTX.n可視チップ数[inst]);\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               val = CScoreIni.t演奏型スキルを計算して返す(\r
-                                                                               CDTXMania.Instance.DTX.n可視チップ数[inst],\r
-                                                                               this.nヒット数_TargetGhost[inst].Perfect,\r
-                                                                               this.nヒット数_TargetGhost[inst].Great,\r
-                                                                               this.nヒット数_TargetGhost[inst].Good,\r
-                                                                               this.nヒット数_TargetGhost[inst].Poor,\r
-                                                                               this.nヒット数_TargetGhost[inst].Miss,\r
-                                                                               EPart.Drums, false);\r
-                                       }\r
-                                       if (val < 0)\r
-                                       {\r
-                                               val = 0;\r
-                                       }\r
-                                       if (val > 100)\r
-                                       {\r
-                                               val = 100;\r
-                                       }\r
-                                       this.actGraph.dbTarget[inst] = val;\r
-                               }\r
-                       }\r
-               }\r
-\r
-\r
-               protected void t進行描画_チップ_小節線_拍線(ref CChip pChip)\r
-               {\r
-                       int n小節番号plus1 = pChip.n発声位置 / 384;\r
-                       if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
-                       {\r
-                               pChip.bHit = true;\r
-                               this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;\r
-                               if (CDTXMania.Instance.ConfigIni.bWaveAdjust && (bIsDirectSound || CDTXMania.Instance.ConfigIni.bUseOSTimer))\r
-                               {\r
-                                       CDTXMania.Instance.DTX.tWave再生位置自動補正();\r
-                               }\r
-                               // dTX.tWaveBGM再生位置表示();            //デバッグ用\r
-                       }\r
-\r
-                       EPart ePhraseNumberDisplayInst = EPart.Drums;\r
-                       if (!CDTXMania.Instance.DTX.bチップがある.Drums)\r
-                       {\r
-                               ePhraseNumberDisplayInst = EPart.Guitar;\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.Guitar)\r
-                               {\r
-                                       ePhraseNumberDisplayInst = EPart.Bass;\r
-                               }\r
-                       }\r
-\r
-                       for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
-                       {\r
-                               if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])\r
-                               {\r
-                                       if ((inst == EPart.Guitar || inst == EPart.Bass) && pChip[EChannel.BeatLine])\r
-                                       {\r
-                                               continue;\r
-                                       }\r
-                                       this.txチップ.n透明度 = 255;\r
-\r
-                                       int y = C演奏判定ライン座標共通.n判定ラインY座標(inst);\r
-                                       int ymin = 0;\r
-                                       int ymax = SampleFramework.GameWindowSize.Height;\r
-\r
-                                       int dy = 0;\r
-                                       Rectangle rc = pChip[EChannel.BeatLine] ?\r
-                                               CDTXMania.Instance.Coordinates.ImgBeatLine :\r
-                                               CDTXMania.Instance.Coordinates.ImgBarLine;\r
-\r
-                                       if (\r
-                                               (inst == EPart.Drums && !CDTXMania.Instance.ConfigIni.bReverse.Drums) ||\r
-                                               (inst != EPart.Drums && CDTXMania.Instance.ConfigIni.bReverse[inst])\r
-                                               )\r
-                                       {\r
-                                               // 上から下へくるパターン\r
-                                               y = y - (int)(pChip.nバーからの距離dot[inst]) - rc.Height / 2;\r
-                                               dy = -dy;\r
-                                       }\r
-                                       else if (\r
-                                               (inst == EPart.Drums && CDTXMania.Instance.ConfigIni.bReverse.Drums) ||\r
-                                               (inst != EPart.Drums && !CDTXMania.Instance.ConfigIni.bReverse[inst])\r
-                                               )\r
-                                       {\r
-                                               // 下から上へくるパターン\r
-                                               y = y + (int)(pChip.nバーからの距離dot[inst]) - rc.Height / 2;\r
-                                       }\r
-\r
-                                       // Reverse時の小節線消失位置を、RGBボタンの真ん中程度に。\r
-                                       // 非Reverse時の消失処理は、従来通りt進行描画・チップ()にお任せ。\r
-                                       // int n小節線消失距離dot = C演奏判定ライン座標共通.n判定ラインY座標(inst, false, true) - dy;\r
-\r
-                                       if ((CDTXMania.Instance.DTX.bチップがある[(int)inst]) && (ymin < y) && (y < ymax) &&\r
-                                               (CDTXMania.Instance.ConfigIni.eDark == EDark.Off ||\r
-                                               (CDTXMania.Instance.ConfigIni.eDark == EDark.Half && ( pChip[EChannel.BarLine] || pChip[EChannel.BeatLine] ))))\r
-                                               /*&& (pChip.nバーからの距離dot[(int)inst] >= n小節線消失距離dot)*/\r
-                                       {\r
-                                               int jx = CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst].Value;\r
-                                               int jy = CDTXMania.Instance.ConfigIni.cdJudgeLineY[inst];\r
-                                               int jw = CDTXMania.Instance.Coordinates.Instrument[inst].W;\r
-                                               //小節線・拍線\r
-                                               if (pChip.b可視)\r
-                                               {\r
-                                                       for ( int offsetX = 0; offsetX < jw; offsetX += rc.Width )\r
-                                                       {\r
-                                                               int x = jx + offsetX;\r
-                                                               if ( offsetX + rc.Width > jw )\r
-                                                               {\r
-                                                                       rc.Width = jw - offsetX;\r
-                                                               }\r
-                                                               this.txチップ.t2D描画( CDTXMania.Instance.Device, x, y, rc );\r
-                                                       }\r
-                                               }\r
-                                               if (\r
-                                                       pChip[EChannel.BarLine] &&\r
-                                                       CDTXMania.Instance.ConfigIni.bDebugInfo &&\r
-                                                       (CDTXMania.Instance.ConfigIni.eDark == EDark.Off) &&\r
-                                                       inst == ePhraseNumberDisplayInst)\r
-                                               {\r
-                                                       // 小節番号の表示\r
-                                                       int n小節番号 = n小節番号plus1 - 1;\r
-                                                       int x = jx + jw + CDTXMania.Instance.Coordinates.ImgConsoleFont.W;\r
-                                                       CDTXMania.Instance.act文字コンソール.tPrint(x, y - CDTXMania.Instance.Coordinates.ImgConsoleFont.H / 2,\r
-                                                               C文字コンソール.Eフォント種別.白, n小節番号.ToString()\r
-                                                       );\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_判定ライン()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark != EDark.Full)\r
-                       {\r
-                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
-                               {\r
-                                       if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])\r
-                                       {\r
-                                               // #31602 2016.2.11 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
-                                               int y = C演奏判定ライン座標共通.n判定ラインY座標(inst, false, true);\r
-                                               if (this.txヒットバー != null)\r
-                                               {\r
-                                                       int lineLength = CDTXMania.Instance.Coordinates.Instrument[inst].W;\r
-                                                       Rectangle rc = CDTXMania.Instance.Coordinates.ImgJudgeLine;\r
-                                                       int barHeight = rc.Height;\r
-                                                       for (int tmpW = 0; tmpW < lineLength; tmpW += rc.Width)\r
-                                                       {\r
-                                                               if (tmpW + rc.Width > lineLength)\r
-                                                               {\r
-                                                                       rc.Width = lineLength - tmpW;\r
-                                                               }\r
-                                                               this.txヒットバー.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       CDTXMania.Instance.ConfigIni.cdInstX[ inst ][ CDTXMania.Instance.ConfigIni.eActiveInst ] + tmpW, y - barHeight / 2, rc );\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void t背景テクスチャの生成()\r
-               {\r
-                       string bgfilename = null;\r
-\r
-                       if ((CDTXMania.Instance.ConfigIni.b楽器有効(EPart.Drums) == false) &&  (CDTXMania.Instance.DTX.BACKGROUND_GR != null) && (CDTXMania.Instance.DTX.BACKGROUND_GR.Length > 0))\r
-                       {\r
-                               bgfilename = CDTXMania.Instance.DTX.BACKGROUND_GR;\r
-                       }\r
-                       else if ((CDTXMania.Instance.DTX.BACKGROUND != null) && (CDTXMania.Instance.DTX.BACKGROUND.Length > 0))\r
-                       {\r
-                               bgfilename = CDTXMania.Instance.DTX.BACKGROUND;\r
-                       }\r
-\r
-                       if (bgfilename != null && bgfilename.Length > 0)\r
-                       {\r
-                               bgfilename = CDTXMania.Instance.DTX.strフォルダ名 + bgfilename;\r
-                       }\r
-\r
-                       using (Bitmap bgbitmap = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height))\r
-                       {\r
-                               if (bgfilename != null && File.Exists(bgfilename))\r
-                               {\r
-                                       using (Bitmap originalBackground = new Bitmap(bgfilename))\r
-                                       {\r
-                                               float W = originalBackground.Width;\r
-                                               float H = originalBackground.Height;\r
-\r
-                                               float mag = 1;\r
-                                               // VGA補正\r
-                                               if (W > 0 && H > 0)\r
-                                               {\r
-                                                       float mx = SampleFramework.GameWindowSize.Width / W;\r
-                                                       float my = SampleFramework.GameWindowSize.Height / H;\r
-\r
-                                                       mag = Math.Min(mx, my);\r
-                                               }\r
-\r
-                                               using (Graphics graphic2 = Graphics.FromImage(bgbitmap))\r
-                                               {\r
-                                                       float x = (SampleFramework.GameWindowSize.Width - W * mag) / 2;\r
-                                                       float y = (SampleFramework.GameWindowSize.Height - H * mag) / 2;\r
-                                                       graphic2.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;\r
-                                                       graphic2.DrawImage(originalBackground, x, y, W * mag, H * mag);\r
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                               using (Bitmap image = new Bitmap(CSkin.Path(@"Graphics\ScreenPlayDrums-background-center.png")))\r
-                               {\r
-                                       // フレーム画像合成\r
-                                       using (Graphics graphics3 = Graphics.FromImage(image))\r
-                                       {\r
-                                               graphics3.DrawImage(bgbitmap, new Rectangle(0, 0, image.Width, image.Height));\r
-\r
-                                               #region [ BGA領域黒抜き・テクスチャ変換・Full再生透明度 ]\r
-                                               if ((CDTXMania.Instance.DTX.listBMP.Count > 0) || (CDTXMania.Instance.DTX.listBMPTEX.Count > 0) || CDTXMania.Instance.DTX.listAVI.Count > 0)\r
-                                               {\r
-                                                       graphics3.FillRectangle(Brushes.Black,\r
-                                                               new Rectangle(\r
-                                                                       CDTXMania.Instance.ConfigIni.cdMovieX[CDTXMania.Instance.ConfigIni.eActiveInst],\r
-                                                                       CDTXMania.Instance.ConfigIni.cdMovieY[CDTXMania.Instance.ConfigIni.eActiveInst],\r
-                                                                       CDTXMania.Instance.Coordinates.Movie.W, CDTXMania.Instance.Coordinates.Movie.H));\r
-                                               }\r
-                                               #endregion\r
-                                       }\r
-                                       TextureFactory.tテクスチャの解放(ref this.tx背景);\r
-                                       this.tx背景 = TextureFactory.tテクスチャの生成(image, true);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_チップ_ドラムス(ref CChip pChip)\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                       {\r
-                               SudHidInvChip(EPart.Drums, ref pChip);\r
-\r
-                               if (!pChip.bHit && pChip.b可視)\r
-                               {\r
-                                       if (this.txチップ != null)\r
-                                       {\r
-                                               this.txチップ.n透明度 = pChip.n透明度;\r
-                                       }\r
-                                       int jy = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Drums);\r
-                                       int y = CDTXMania.Instance.ConfigIni.bReverse.Drums ? (int)(jy + pChip.nバーからの距離dot.Drums) : (int)(jy - pChip.nバーからの距離dot.Drums);\r
-\r
-                                       if (this.txチップ != null)\r
-                                       {\r
-                                               this.txチップ.vc拡大縮小倍率 = new Vector3((float)(pChip.dbチップサイズ倍率), (float)pChip.dbチップサイズ倍率, 1f);\r
-                                       }\r
-\r
-                                       int num9 = this.ctチップ模様アニメ.Drums.n現在の値 % CDTXMania.Instance.Coordinates.ImgDrCountChip;\r
-                                       int x = CDTXMania.Instance.ConfigIni.GetLaneX(EnumConverter.LaneFromChannel(pChip.eチャンネル番号)) +\r
-                                               (int)((CDTXMania.Instance.ConfigIni.GetLaneW(EnumConverter.LaneFromChannel(pChip.eチャンネル番号))\r
-                                               - (CDTXMania.Instance.Coordinates.ImgDrChip[EnumConverter.PadFromChannel(pChip.eチャンネル番号)].W * (pChip.dbチップサイズ倍率))) / 2.0);\r
-                                       if (this.txチップ != null)\r
-                                       {\r
-                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x,\r
-                                                       y - CDTXMania.Instance.Coordinates.ImgDrChip[EnumConverter.PadFromChannel(pChip.eチャンネル番号)].H / 2,\r
-                                                       CDTXMania.Instance.Coordinates.ImgDrChip[EnumConverter.PadFromChannel(pChip.eチャンネル番号)].ApplyCounterY(num9, 2));\r
-                                       }\r
-\r
-                                       // Chip Decoration\r
-                                       switch (pChip.eチャンネル番号)\r
-                                       {\r
-                                               case EChannel.Cymbal:\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x,\r
-                                                                       y - CDTXMania.Instance.Coordinates.ImgDrChipCYDeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipCYDeco);\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case EChannel.HiHatOpen:\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipHHODeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipHHODeco);\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case EChannel.RideCymbal:\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipHHODeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipHHODeco);\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case EChannel.LeftCymbal:\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipCYDeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipCYDeco);\r
-                                                       }\r
-                                                       break;\r
-                                       }\r
-                                       if (this.txチップ != null)\r
-                                       {\r
-                                               this.txチップ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
-                                               this.txチップ.n透明度 = 0xff;\r
-                                       }\r
-                               }\r
-\r
-                               // #35411 chnmr0 modified\r
-                               bool autoPlayCondition = (CDTXMania.Instance.ConfigIni.bAutoPlay[EnumConverter.PadFromChannel(pChip.eチャンネル番号)] && !pChip.bHit);\r
-                               bool UsePerfectGhost = true;\r
-                               long ghostLag = 0;\r
-\r
-                               if (CDTXMania.Instance.ConfigIni.eAutoGhost.Drums != EAutoGhostData.Perfect &&\r
-                                               CDTXMania.Instance.DTX.listAutoGhostLag.Drums != null &&\r
-                                               0 <= pChip.n楽器パートでの出現順 && pChip.n楽器パートでの出現順 < CDTXMania.Instance.DTX.listAutoGhostLag.Drums.Count)\r
-                               {\r
-                                       // ゴーストデータが有効 : ラグに合わせて判定\r
-                                       ghostLag = CDTXMania.Instance.DTX.listAutoGhostLag.Drums[pChip.n楽器パートでの出現順];\r
-                                       ghostLag = (ghostLag & 255) - 128;\r
-                                       ghostLag -= CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums;\r
-                                       autoPlayCondition &= !pChip.bHit && (ghostLag + pChip.n発声時刻ms <= CSound管理.rc演奏用タイマ.n現在時刻ms);\r
-                                       UsePerfectGhost = false;\r
-                               }\r
-                               if (UsePerfectGhost)\r
-                               {\r
-                                       // 従来の AUTO : バー下で判定\r
-                                       autoPlayCondition &= (pChip.nバーからの距離dot.Drums < 0);\r
-                               }\r
-\r
-                               if (autoPlayCondition)\r
-                               {\r
-                                       pChip.bHit = true;\r
-                                       this.actLaneFlushD.Start(EnumConverter.LaneFromChannel(pChip.eチャンネル番号), ((float)CInput管理.n通常音量) / 127f);\r
-                                       bool flag = this.bフィルイン中;\r
-                                       bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである(pChip);\r
-                                       //bool flag3 = flag2;\r
-                                       // #31602 2013.6.24 yyagi 判定ラインの表示位置をずらしたら、チップのヒットエフェクトの表示もずらすために、nJudgeLine..を追加\r
-                                       this.actChipFireD.Start(EnumConverter.LaneFromChannel(pChip.eチャンネル番号), flag, flag2, flag2);\r
-                                       this.actPad.Hit(EnumConverter.PadFromChannel(pChip.eチャンネル番号));\r
-                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, EPart.Drums, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Drums));\r
-                                       this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip);\r
-                                       cInvisibleChip.StartSemiInvisible(EPart.Drums);\r
-                               }\r
-                               // #35411 modify end\r
-\r
-                               SetGhostTargetOnGraph(EPart.Drums);\r
-                               return;\r
-                       }\r
-                       else\r
-                       {\r
-                               if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
-                               {\r
-                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, EPart.Drums, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Drums));\r
-                                       pChip.bHit = true;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r