basePlayPosition = n発声位置;\r
ms = n発声時刻ms;\r
dbBarLength = db実数値;\r
- return;\r
}\r
else if (this[Ech定義.BPM])\r
{\r
basePlayPosition = n発声位置;\r
ms = n発声時刻ms;\r
bpm = basebpm + n整数値;\r
- return;\r
}\r
else if (this[Ech定義.BPMEx])\r
{\r
{\r
bpm = ((listBPM[n整数値_内部番号].n表記上の番号 == 0) ? 0.0 : basebpm) + listBPM[n整数値_内部番号].dbBPM値;\r
}\r
- return;\r
}\r
else if (bMovie)\r
{\r
int num22 = ms + ((int)(((0x271 * ((n発声位置 + listAVIPAN[n整数値].n移動時間ct) - basePlayPosition)) * dbBarLength) / bpm));\r
n総移動時間 = num22 - num21;\r
}\r
- return;\r
}\r
else if (bBGALayer)\r
{\r
public CChip(int playPosition, double phraseLengthFactor, Ech定義 channel)\r
: this()\r
{\r
-\r
+ n発声位置 = playPosition;\r
+ db実数値 = phraseLengthFactor;\r
+ eチャンネル番号 = channel;\r
}\r
\r
public CChip(Ech定義 channel)\r
{\r
if (this.rAVI != null && this.rAVI.avi != null)\r
{\r
- // int dwRate = (int) this.rAVI.avi.dwレート;\r
- // int dwScale = (int) this.rAVI.avi.dwスケール;\r
- // (int) ( 1000.0f * dwScale / dwRate * this.rAVI.avi.GetMaxFrameCount() );\r
nDuration = this.rAVI.avi.GetDuration();\r
}\r
}\r
bool bGtBsB = bGuitarBass_B;\r
bool bGtBsW = bGuitarBass_Wailing;\r
bool bGtBsO = bGuitarBass_Open;\r
- //if ( (\r
- // ( ( pChip.e楽器パート == E楽器パート.DRUMS ) && bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) ||\r
- // ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && bIsAutoPlay.Guitar ) ) ||\r
- // ( ( pChip.e楽器パート == E楽器パート.BASS ) && bIsAutoPlay.Bass )\r
- // )\r
- //// if ((pChip.e楽器パート == E楽器パート.DRUMS) && bIsAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])\r
- //{\r
- // bPChipIsAutoPlay = true;\r
- //}\r
if (bDrums可視チップ)\r
{\r
if (bIsAutoPlay[CStage演奏画面共通.nチャンネル0Atoレーン07[eチャンネル番号 - Ech定義.HiHatClose]])\r
this.bチップがある.Bass |= chip.bBass可視チップ;\r
this.bチップがある.OpenBass |= chip[Ech定義.Bass_Open];\r
this.bチップがある.BGA |= chip.bBGALayer;\r
- this.bチップがある.Movie |= chip[Ech定義.Movie] | chip[Ech定義.MovieFull];\r
- if (CDTXMania.Instance.ConfigIni.bForceAVIFullscreen || chip[Ech定義.MovieFull])\r
+ this.bチップがある.Movie |= chip.bMovie;\r
+ if (chip.bMovie)\r
{\r
- this.bMovieをFullscreen再生する = true;\r
+ if (chip[Ech定義.MovieFull] || CDTXMania.Instance.ConfigIni.bForceAVIFullscreen)\r
+ {\r
+ this.bMovieをFullscreen再生する = true;\r
+ }\r
}\r
\r
// 空打ちチップを変換する。\r
CDTXMania.Instance.DTX.tギターとベースのランダム化(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.eRandom.Guitar);\r
CDTXMania.Instance.DTX.tギターとベースのランダム化(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.eRandom.Bass);\r
\r
- if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
- CDTXMania.Instance.stage演奏ギター画面.On活性化();\r
- else\r
- CDTXMania.Instance.stage演奏ドラム画面.On活性化();\r
+ CDTXMania.Instance.stage演奏画面.On活性化();\r
\r
span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV);\r
Trace.TraceInformation("WAV/譜面後処理時間({0,4}): {1}", (CDTXMania.Instance.DTX.listBMP.Count + CDTXMania.Instance.DTX.listBMPTEX.Count + CDTXMania.Instance.DTX.listAVI.Count), span.ToString());\r
{\r
if (this.tx描画用 != null && (this.tx描画用.szテクスチャサイズ.Width != width || this.tx描画用.szテクスチャサイズ.Height != height))\r
{\r
- //Debug.WriteLine( "orgW=" + this.tx描画用.szテクスチャサイズ.Width + ", W=" + width + ", orgH=" + this.tx描画用.szテクスチャサイズ.Height + ", H=" + height );\r
this.tx描画用.Dispose();\r
this.tx描画用 = null;\r
}\r
private int guitar;\r
private int bass;\r
}\r
+\r
public C演奏判定ライン座標共通 演奏判定ライン座標\r
{\r
get;\r
protected CTexture txCOMBOドラム;\r
\r
// 内部クラス\r
-\r
protected class CSTATUS\r
{\r
public CSTAT Bass = new CSTAT();\r
}\r
}\r
\r
-\r
// コンストラクタ\r
-\r
public CAct演奏Combo共通()\r
{\r
this.b活性化してない = true;\r
演奏判定ライン座標 = new C演奏判定ライン座標共通();\r
}\r
\r
-\r
// メソッド\r
-\r
- protected virtual void tコンボ表示_ドラム(int nCombo値, int nジャンプインデックス)\r
+ private void tコンボ表示_ドラム(int nCombo値, int nジャンプインデックス)\r
{\r
#region [ 事前チェック。]\r
//-----------------\r
//-----------------\r
#endregion\r
}\r
- protected virtual void tコンボ表示_ギター(int nCombo値, int nジャンプインデックス)\r
- {\r
- }\r
- protected virtual void tコンボ表示_ベース(int nCombo値, int nジャンプインデックス)\r
- {\r
- }\r
- protected void tコンボ表示_ギター(int nCombo値, int n表示中央X, int n表示中央Y, int nジャンプインデックス)\r
+ protected void tコンボ表示_ギター(int nCombo値, int nジャンプインデックス)\r
{\r
+ int x, y;\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ x = (int)(230 * Scale.X);\r
+ y = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0x103 : 150;\r
+ y = (int)(y * Scale.Y);\r
+ if (txCOMBOギター != null)\r
+ {\r
+ txCOMBOギター.n透明度 = 0xff;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (CDTXMania.Instance.DTX.bチップがある.Bass || CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1638 : 1567 + 5;\r
+ y = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ y += CDTXMania.Instance.ConfigIni.bReverse.Guitar ? (int)(-134 * Scale.Y) : (int)(+174 * Scale.Y);\r
+ if (txCOMBOギター != null)\r
+ {\r
+ txCOMBOギター.n透明度 = 120;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ x = 1344;\r
+ y = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ y += CDTXMania.Instance.ConfigIni.bReverse.Guitar ? (int)(-134 * Scale.Y) : (int)(+174 * Scale.Y);\r
+ if (txCOMBOギター != null)\r
+ {\r
+ txCOMBOギター.n透明度 = 0xff;\r
+ }\r
+ }\r
+ }\r
+ int n表示中央X = x;\r
+ int n表示中央Y = y;\r
+\r
#region [ 事前チェック。]\r
//-----------------\r
if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar) == E判定文字表示位置.表示OFF)\r
#endregion\r
tコンボ表示_ギターベース(nCombo値, n表示中央X, n表示中央Y, nジャンプインデックス);\r
}\r
- protected void tコンボ表示_ベース(int nCombo値, int n表示中央X, int n表示中央Y, int nジャンプインデックス)\r
+ protected void tコンボ表示_ベース(int nCombo値, int nジャンプインデックス)\r
{\r
+ int x, y;\r
+\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ x = (int)(410 * Scale.X);\r
+ y = CDTXMania.Instance.ConfigIni.bReverse.Bass ? 0x103 : 150;\r
+ y = (int)(y * Scale.Y);\r
+ if (txCOMBOギター != null)\r
+ {\r
+ txCOMBOギター.n透明度 = 0xff;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1311 : 1311 - 994 + 5;\r
+ y = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ y += CDTXMania.Instance.ConfigIni.bReverse.Bass ? (int)(-134 * Scale.Y) : (int)(+174 * Scale.Y);\r
+ if (txCOMBOギター != null)\r
+ {\r
+ txCOMBOギター.n透明度 = 120;\r
+ }\r
+ }\r
+ int n表示中央X = x;\r
+ int n表示中央Y = y;\r
+\r
#region [ 事前チェック。]\r
//-----------------\r
if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass) == E判定文字表示位置.表示OFF)\r
\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
this.n現在のコンボ数 = new STCOMBO() { act = this };\r
using System.Text;\r
using System.Drawing;\r
using FDK;\r
+using SlimDX;\r
\r
namespace DTXMania\r
{\r
- internal abstract class CAct演奏Danger共通 : CActivity\r
+ internal class CAct演奏Danger共通 : CActivity\r
{\r
- // コンストラクタ\r
-\r
- public CAct演奏Danger共通()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
for (int i = 0; i < 3; i++)\r
{\r
this.bDanger中[i] = false;\r
}\r
- // this.ct移動用 = new CCounter();\r
- // this.ct透明度用 = new CCounter();\r
this.ct移動用 = null;\r
this.ct透明度用 = null;\r
\r
base.On活性化();\r
}\r
+\r
public override void On非活性化()\r
{\r
this.ct移動用 = null;\r
base.On非活性化();\r
}\r
\r
+ public override void OnManagedリソースの作成()\r
+ {\r
+ if (base.b活性化してる)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.txDANGER = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlayDrums danger.png"), false);\r
+ }\r
+ else\r
+ {\r
+ this.txDANGER = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlayGuitar danger.png"), false);\r
+ }\r
+ base.OnManagedリソースの作成();\r
+ }\r
+ }\r
+\r
+\r
+ public override void OnManagedリソースの解放()\r
+ {\r
+ if (base.b活性化してる)\r
+ {\r
+ TextureFactory.tテクスチャの解放(ref this.txDANGER);\r
+ base.OnManagedリソースの解放();\r
+ }\r
+ }\r
+\r
/// <summary>\r
/// DANGER描画\r
/// </summary>\r
/// <param name="bIsDamgerGuitar">GuitarがDangerならtrue</param>\r
/// <param name="bIsDangerBass">BassがDangerならtrue</param>\r
/// <returns></returns>\r
- public abstract int t進行描画(bool bIsDangerDrums, bool bIsDamgerGuitar, bool bIsDangerBass);\r
-\r
+ public int t進行描画(STDGBVALUE<bool> isDanger)\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ if (!isDanger.Drums)\r
+ {\r
+ this.bDanger中[(int)E楽器パート.DRUMS] = false;\r
+ return 0;\r
+ }\r
+ if (!this.bDanger中[(int)E楽器パート.DRUMS])\r
+ {\r
+ this.ct移動用 = new CCounter(0, 0x7f, 7, CDTXMania.Instance.Timer);\r
+ this.ct透明度用 = new CCounter(0, 0x167, 4, CDTXMania.Instance.Timer);\r
+ }\r
+ this.bDanger中[(int)E楽器パート.DRUMS] = isDanger.Drums;\r
+ this.ct移動用.t進行Loop();\r
+ this.ct透明度用.t進行Loop();\r
+ if (!this.bDanger中[(int)E楽器パート.DRUMS])\r
+ {\r
+ return 0;\r
+ }\r
+ int num = this.ct透明度用.n現在の値;\r
+ if (this.txDANGER != null)\r
+ {\r
+ this.txDANGER.n透明度 = 60 + ((num < 180) ? num : (360 - num));\r
+ }\r
+ num = this.ct移動用.n現在の値;\r
+ int num2 = CDTXMania.Instance.ConfigIni.bReverse.Drums ? (0x7f - num) : num;\r
+ float[,] n基準X座標 = new float[,] { { 38, 298 }, { 211f, 405.5f } };\r
+ for (int i = -1; i < 4; i++)\r
+ {\r
+ if (this.txDANGER != null)\r
+ {\r
+ float d = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1.0f : 0.75f;\r
+ this.txDANGER.vc拡大縮小倍率 = new Vector3(d, d, d);\r
+ this.txDANGER.t2D描画(CDTXMania.Instance.Device, n基準X座標[(CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 0 : 1), 0] * Scale.X, ((i * 0x80) + num2) * Scale.Y);\r
+ this.txDANGER.t2D描画(CDTXMania.Instance.Device, n基準X座標[(CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 0 : 1), 1] * Scale.X, ((i * 0x80) + num2) * Scale.Y);\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (this.ct透明度用 == null)\r
+ {\r
+ this.ct透明度用 = new CCounter(0, n波長, 8, CDTXMania.Instance.Timer);\r
+ }\r
+ if (this.ct透明度用 != null)\r
+ {\r
+ this.ct透明度用.t進行Loop();\r
+ }\r
+ for (E楽器パート ePart = E楽器パート.GUITAR; ePart <= E楽器パート.BASS; ePart++)\r
+ {\r
+ if (isDanger[(int)ePart])\r
+ {\r
+ if (this.txDANGER != null)\r
+ {\r
+ int d = this.ct透明度用.n現在の値;\r
+ this.txDANGER.n透明度 = n透明度MIN + ((d < n波長 / 2) ?\r
+ (n透明度MAX - n透明度MIN) * d / (n波長 / 2) :\r
+ (n透明度MAX - n透明度MIN) * (n波長 - d) / (n波長 / 2)); // 60-200\r
+ this.txDANGER.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ nGaugeX[(int)ePart] * Scale.X,\r
+ 0\r
+ );\r
+ }\r
+ }\r
\r
+ }\r
+ }\r
+ }\r
+ return 0;\r
+ }\r
\r
- // その他\r
+ private CTextureAf txDANGER;\r
\r
- #region [ private ]\r
- //-----------------\r
protected bool[] bDanger中 = { false, false, false };\r
protected CCounter ct移動用;\r
protected CCounter ct透明度用;\r
- //-----------------\r
- #endregion\r
\r
+ private const int n波長 = 40;\r
+ private const int n透明度MAX = 180;\r
+ private const int n透明度MIN = 20;\r
+ private readonly int[] nGaugeX = { 0, 168, 328 };\r
}\r
}\r
using System.Collections.Generic;\r
using System.Text;\r
using FDK;\r
+using System.Drawing;\r
\r
namespace DTXMania\r
{\r
internal class CAct演奏RGB共通 : CActivity\r
{\r
// プロパティ\r
-\r
protected bool[] b押下状態 = new bool[6];\r
protected CTexture txRGB;\r
\r
base.b活性化してない = true;\r
}\r
\r
-\r
// メソッド\r
-\r
public void Push(int nLane)\r
{\r
this.b押下状態[nLane] = true;\r
\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
for (int i = 0; i < 6; i++)\r
}\r
}\r
\r
- public virtual int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標共通)\r
+ public virtual int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標)\r
{\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+ {\r
+ return 0;\r
+ }\r
+ if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+ {\r
+ for (int j = 0; j < 3; j++)\r
+ {\r
+ int index = CDTXMania.Instance.ConfigIni.bLeft.Guitar ? (2 - j) : j;\r
+ Rectangle rectangle = new Rectangle(\r
+ (int)(index * 0x18 * Scale.X),\r
+ 0,\r
+ (int)(0x18 * Scale.X),\r
+ (int)(0x20 * Scale.Y)\r
+ );\r
+ if (b押下状態[index])\r
+ {\r
+ rectangle.Y += (int)(0x20 * Scale.Y);\r
+ }\r
+ if (txRGB != null)\r
+ {\r
+ int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.GUITAR, true, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ txRGB.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (0x1f + (j * 0x24)) * Scale.X,\r
+ y,\r
+ rectangle\r
+ );\r
+ }\r
+ }\r
+ }\r
+ if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
+ {\r
+ for (int k = 0; k < 3; k++)\r
+ {\r
+ int index = CDTXMania.Instance.ConfigIni.bLeft.Bass ? (2 - k) : k;\r
+ Rectangle rectangle2 = new Rectangle(\r
+ (int)(index * 0x18 * Scale.X),\r
+ 0,\r
+ (int)(0x18 * Scale.X),\r
+ (int)(0x20 * Scale.Y)\r
+ );\r
+ if (b押下状態[index + 3])\r
+ {\r
+ rectangle2.Y += (int)(0x20 * Scale.Y);\r
+ }\r
+ if (txRGB != null)\r
+ {\r
+ int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.BASS, true, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ txRGB.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (0x1e5 + (k * 0x24)) * Scale.X,\r
+ y,\r
+ rectangle2\r
+ );\r
+ }\r
+ }\r
+ }\r
+ for (int i = 0; i < 6; i++)\r
+ {\r
+ b押下状態[i] = false;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+ {\r
+ return 0;\r
+ }\r
+ if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+ {\r
+ int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1527 : 1456;\r
+ for (int i = 0; i < 3; i++)\r
+ {\r
+ int index = CDTXMania.Instance.ConfigIni.bLeft.Guitar ? (2 - i) : i;\r
+ Rectangle rc = new Rectangle(\r
+ index * 72,\r
+ 0,\r
+ 72,\r
+ 72\r
+ );\r
+ if (b押下状態[index])\r
+ {\r
+ rc.Y += 72;\r
+ }\r
+ if (txRGB != null)\r
+ {\r
+ int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.GUITAR, false, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ txRGB.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x + (i * 26 * 3),\r
+ y,\r
+ rc\r
+ );\r
+ }\r
+ }\r
+ }\r
+ if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
+ {\r
+ for (int i = 0; i < 3; i++)\r
+ {\r
+ int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1200 : 206;\r
+ int index = CDTXMania.Instance.ConfigIni.bLeft.Bass ? (2 - i) : i;\r
+ Rectangle rc = new Rectangle(\r
+ index * 72,\r
+ 0,\r
+ 72,\r
+ 72\r
+ );\r
+ if (b押下状態[index + 3])\r
+ {\r
+ rc.Y += 72;\r
+ }\r
+ if (txRGB != null)\r
+ {\r
+ int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.BASS, false, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ txRGB.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x + (i * 26 * 3),\r
+ y,\r
+ rc\r
+ );\r
+ }\r
+ }\r
+ }\r
+ for (int i = 0; i < 6; i++)\r
+ {\r
+ b押下状態[i] = false;\r
+ }\r
+ }\r
+ }\r
return 0;\r
}\r
}\r
\r
namespace DTXMania\r
{\r
- internal abstract class CAct演奏WailingBonus共通 : CActivity\r
+ internal class CAct演奏WailingBonus共通 : CActivity\r
{\r
- // メソッド\r
-\r
+ // Constructor\r
public CAct演奏WailingBonus共通()\r
{\r
+ for (int i = 0; i < 3; ++i)\r
+ {\r
+ for (int j = 0; j < 4; ++j)\r
+ {\r
+ ct進行用[i, j] = null;\r
+ }\r
+ }\r
base.b活性化してない = true;\r
}\r
\r
- public void Start(E楽器パート part)\r
+ // Method\r
+ public void Start(E楽器パート part, CChip r歓声Chip = null)\r
{\r
- this.Start(part, null);\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ if (part != E楽器パート.DRUMS)\r
+ {\r
+ for (int i = 0; i < 4; i++)\r
+ {\r
+ if ((this.ct進行用[(int)part, i] == null) || this.ct進行用[(int)part, i].b停止中)\r
+ {\r
+ this.ct進行用[(int)part, i] = new CCounter(0, 300, 2, CDTXMania.Instance.Timer);\r
+ if (CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
+ {\r
+ if (r歓声Chip != null)\r
+ {\r
+ CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+ return;\r
+ }\r
+ CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = (part == E楽器パート.GUITAR) ? -50 : 50;\r
+ CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
+ return;\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if ((part == E楽器パート.GUITAR) || (part == E楽器パート.BASS))\r
+ {\r
+ int num = (int)part;\r
+ for (int i = 0; i < 4; i++)\r
+ {\r
+ if (this.ct進行用[num, i].b停止中)\r
+ {\r
+ this.ct進行用[num, i] = new CCounter(0, 300, 2, CDTXMania.Instance.Timer);\r
+ if (CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
+ {\r
+ if (r歓声Chip != null)\r
+ {\r
+ CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+ return;\r
+ }\r
+ CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
+ return;\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
}\r
- public abstract void Start(E楽器パート part, CChip r歓声Chip);\r
-\r
\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ for (int i = 0; i < 3; i++)\r
+ {\r
+ for (int j = 0; j < 4; j++)\r
+ {\r
+ this.ct進行用[i, j] = new CCounter();\r
+ }\r
+ }\r
+ }\r
base.On活性化();\r
}\r
+\r
public override void On非活性化()\r
{\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ for (int i = 0; i < 3; i++)\r
+ {\r
+ for (int j = 0; j < 4; j++)\r
+ {\r
+ this.ct進行用[i, j] = null;\r
+ }\r
+ }\r
+ }\r
base.On非活性化();\r
}\r
\r
}\r
}\r
\r
+ public override int On進行描画()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ for (int i = 0; i < 2; i++)\r
+ {\r
+ E楽器パート e楽器パート = (i == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+ for (int k = 0; k < 4; k++)\r
+ {\r
+ if ((this.ct進行用[(int)e楽器パート, k] != null) && !this.ct進行用[(int)e楽器パート, k].b停止中)\r
+ {\r
+ if (this.ct進行用[(int)e楽器パート, k].b終了値に達した)\r
+ {\r
+ this.ct進行用[(int)e楽器パート, k].t停止();\r
+ }\r
+ else\r
+ {\r
+ this.ct進行用[(int)e楽器パート, k].t進行();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ for (int j = 0; j < 2; j++)\r
+ {\r
+ E楽器パート e楽器パート2 = (j == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+ for (int m = 0; m < 4; m++)\r
+ {\r
+ if ((this.ct進行用[(int)e楽器パート2, m] != null) && !this.ct進行用[(int)e楽器パート2, m].b停止中)\r
+ {\r
+ int x = ((e楽器パート2 == E楽器パート.GUITAR) ? 0x1a : 480) + 0x71;\r
+ int num6 = 0;\r
+ int num7 = 0;\r
+ int num8 = this.ct進行用[(int)e楽器パート2, m].n現在の値;\r
+ if (num8 < 100)\r
+ {\r
+ num6 = (int)(64.0 + (290.0 * Math.Cos(Math.PI / 2 * (((double)num8) / 100.0))));\r
+ }\r
+ else if (num8 < 150)\r
+ {\r
+ num6 = (int)(64.0 + ((150 - num8) * Math.Sin((Math.PI * ((num8 - 100) % 0x19)) / 25.0)));\r
+ }\r
+ else if (num8 < 200)\r
+ {\r
+ num6 = 0x40;\r
+ }\r
+ else\r
+ {\r
+ num6 = (int)(64.0 - (((double)(290 * (num8 - 200))) / 100.0));\r
+ }\r
+ if (CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート2])\r
+ {\r
+ num6 = (0x199 - num6) - 0xf4;\r
+ }\r
+ Rectangle rectangle = new Rectangle(0, 0, 0x1a, 0x7a * 2);\r
+ if ((0x199 - num6) < rectangle.Bottom)\r
+ {\r
+ rectangle.Height = (0x199 - num6) - rectangle.Top;\r
+ }\r
+ if (num6 < 0)\r
+ {\r
+ rectangle.Y = -num6;\r
+ rectangle.Height -= -num6;\r
+ num7 = -num6;\r
+ }\r
+ if ((rectangle.Top < rectangle.Bottom) && (this.txWailingBonus != null))\r
+ {\r
+ rectangle.X = (int)(rectangle.X * Scale.X);\r
+ rectangle.Y = (int)(rectangle.Y * Scale.Y);\r
+ rectangle.Width = (int)(rectangle.Width * Scale.X);\r
+ rectangle.Height = (int)(rectangle.Height * Scale.Y);\r
\r
- // その他\r
+ this.txWailingBonus.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x * Scale.X,\r
+ (num6 + num7) * Scale.Y,\r
+ rectangle\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ for (int i = 0; i < 2; i++)\r
+ {\r
+ E楽器パート e楽器パート = (i == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+ for (int j = 0; j < 4; j++)\r
+ {\r
+ if (!this.ct進行用[(int)e楽器パート, j].b停止中)\r
+ {\r
+ if (this.ct進行用[(int)e楽器パート, j].b終了値に達した)\r
+ {\r
+ this.ct進行用[(int)e楽器パート, j].t停止();\r
+ }\r
+ else\r
+ {\r
+ this.ct進行用[(int)e楽器パート, j].t進行();\r
+ int x = ((e楽器パート == E楽器パート.GUITAR) ? 1521 + 234 : 1194 + 234);\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ x -= (e楽器パート == E楽器パート.GUITAR) ? 71 : 994;\r
+ }\r
+ int num4 = 0;\r
+ int num5 = 0;\r
+ int num6 = this.ct進行用[(int)e楽器パート, j].n現在の値;\r
+ if (num6 < 100)\r
+ {\r
+ num4 = (int)(64.0 + (290.0 * Math.Cos(Math.PI / 2 * (((float)num6) / 100f))));\r
+ }\r
+ else if (num6 < 150)\r
+ {\r
+ num4 = (int)(64.0 + ((150 - num6) * Math.Sin((Math.PI * ((num6 - 100) % 0x19)) / 25.0)));\r
+ }\r
+ else if (num6 < 200)\r
+ {\r
+ num4 = 0x40;\r
+ }\r
+ else\r
+ {\r
+ num4 = (int)(64f - (((float)(290 * (num6 - 200))) / 100f));\r
+ }\r
+ if (CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート])\r
+ {\r
+ num4 = (0x163 - num4) - 0xf4;\r
+ }\r
+ Rectangle rectangle = new Rectangle(0, 0, 0x1a, 0x7a * 2);\r
+ if ((0x163 - num4) < rectangle.Bottom)\r
+ {\r
+ rectangle.Height = (0x163 - num4) - rectangle.Top;\r
+ }\r
+ if (num4 < 0)\r
+ {\r
+ rectangle.Y = -num4;\r
+ num5 = -num4;\r
+ }\r
+ if ((rectangle.Top < rectangle.Bottom) && (this.txWailingBonus != null))\r
+ {\r
+ rectangle.X = (int)(rectangle.X * Scale.X);\r
+ rectangle.Y = (int)(rectangle.Y * Scale.Y);\r
+ rectangle.Width = (int)(rectangle.Width * Scale.X);\r
+ rectangle.Height = (int)(rectangle.Height * Scale.Y);\r
+ this.txWailingBonus.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x,\r
+ ((((e楽器パート == E楽器パート.GUITAR) ? 0x39 : 0x39) + num4) + num5) * Scale.Y,\r
+ rectangle\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return 0;\r
+ }\r
\r
- #region [ private ]\r
- //-----------------\r
protected CCounter[,] ct進行用 = new CCounter[3, 4];\r
protected CTextureAf txWailingBonus;\r
- //-----------------\r
- #endregion\r
}\r
}\r
// コンストラクタ\r
public CAct演奏ゲージ共通()\r
{\r
- //actLVLNFont = new CActLVLNFont(); // On活性化()に移動\r
- //actLVLNFont.On活性化();\r
}\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
actLVLNFont = new CActLVLNFont();\r
}\r
public override void On非活性化()\r
{\r
+ this.ct本体振動 = null;\r
+ this.ct本体移動 = null;\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ for (int i = 0; i < 24; i++)\r
+ {\r
+ this.st白い星[i].ct進行 = null;\r
+ }\r
+ }\r
actLVLNFont.On非活性化();\r
actLVLNFont = null;\r
base.On非活性化();\r
const double GAUGE_ZERO = 0.0;\r
const double GAUGE_DANGER = 0.3;\r
\r
- public bool bRisky // Riskyモードか否か\r
+ // Riskyモードか否か\r
+ public bool bRisky\r
{\r
get;\r
private set;\r
}\r
- public int nRiskyTimes_Initial // Risky初期値\r
+ // Risky初期値\r
+ public int nRiskyTimes_Initial\r
{\r
get;\r
private set;\r
}\r
- public int nRiskyTimes // 残Miss回数\r
+ // 残Miss回数\r
+ public int nRiskyTimes\r
{\r
get;\r
private set;\r
}\r
- public bool IsFailed(E楽器パート part) // 閉店状態になったかどうか\r
+ // 閉店状態になったかどうか\r
+ public bool IsFailed(E楽器パート part)\r
{\r
if (bRisky)\r
{\r
}\r
return this.db現在のゲージ値[(int)part] <= GAUGE_MIN;\r
}\r
- public bool IsDanger(E楽器パート part) // DANGERかどうか\r
+ // DANGERかどうか\r
+ public bool IsDanger(E楽器パート part)\r
{\r
if (bRisky)\r
{\r
return (this.db現在のゲージ値[(int)part] <= GAUGE_DANGER);\r
}\r
\r
- public double dbゲージ値 // Drums専用\r
+ // Drums専用\r
+ public double dbゲージ値\r
{\r
get\r
{\r
}\r
}\r
\r
-\r
/// <summary>\r
/// ゲージの初期化\r
/// </summary>\r
}\r
}\r
\r
+ public override int On進行描画()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ int num;\r
+ int num9;\r
+ if (base.b初めての進行描画)\r
+ {\r
+ this.ct本体移動 = new CCounter(0, 0x1a, 20, CDTXMania.Instance.Timer);\r
+ this.ct本体振動 = new CCounter(0, 360, 4, CDTXMania.Instance.Timer);\r
+ base.b初めての進行描画 = false;\r
+ }\r
+ this.ct本体移動.t進行Loop();\r
+ this.ct本体振動.t進行Loop();\r
+\r
+ #region [ ギターのゲージ ]\r
+ if (this.db現在のゲージ値.Guitar == 1.0) // ギターのゲージ\r
+ {\r
+ num = (int)(128.0 * this.db現在のゲージ値.Guitar);\r
+ }\r
+ else\r
+ {\r
+ num = (int)((128.0 * this.db現在のゲージ値.Guitar) + (2.0 * Math.Sin(Math.PI * 2 * (((double)this.ct本体振動.n現在の値) / 360.0))));\r
+ }\r
+ if (num > 0)\r
+ {\r
+ Rectangle rectangle;\r
+ int num2 = 0x1a - this.ct本体移動.n現在の値;\r
+ int x = 0xb2 - num2;\r
+ int num4 = num + num2;\r
+ while (num4 > 0)\r
+ {\r
+ if (this.db現在のゲージ値.Guitar == 1.0)\r
+ {\r
+ rectangle = new Rectangle(0x1b, 0, 0x1b, 0x10);\r
+ }\r
+ else\r
+ {\r
+ rectangle = new Rectangle(0, 0, 0x1b, 0x10);\r
+ }\r
+ if (x < 0xb2)\r
+ {\r
+ int num5 = 0xb2 - x;\r
+ rectangle.X += num5;\r
+ rectangle.Width -= num5;\r
+ x += num5;\r
+ }\r
+ if ((x + rectangle.Width) > (0xb2 + num))\r
+ {\r
+ int num6 = (x + rectangle.Width) - (0xb2 + num);\r
+ rectangle.Width -= num6;\r
+ }\r
+ if (rectangle.Left >= rectangle.Right)\r
+ {\r
+ break;\r
+ }\r
+ if (this.txゲージ != null)\r
+ {\r
+ Rectangle rectangle1 = rectangle;\r
+ rectangle1.X = (int)(rectangle1.X * Scale.X);\r
+ rectangle1.Y = (int)(rectangle1.Y * Scale.Y);\r
+ rectangle1.Width = (int)(rectangle1.Width * Scale.X);\r
+ rectangle1.Height = (int)(rectangle1.Height * Scale.Y);\r
+\r
+ this.txゲージ.b加算合成 = false;\r
+ this.txゲージ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x * Scale.X,\r
+ 8 * Scale.Y,\r
+ rectangle1\r
+ );\r
+ }\r
+ num4 -= rectangle.Width;\r
+ x += rectangle.Width;\r
+ }\r
+ rectangle = new Rectangle(0, 0x10, 0x40, 0x10);\r
+ x = (0xb2 + num) - 0x40;\r
+ if (x < 0xb2)\r
+ {\r
+ int num7 = 0xb2 - x;\r
+ rectangle.X += num7;\r
+ rectangle.Width -= num7;\r
+ x += num7;\r
+ }\r
+ if ((x + rectangle.Width) > (0xb2 + num))\r
+ {\r
+ int num8 = (x + rectangle.Width) - (0xb2 + num);\r
+ rectangle.Width -= num8;\r
+ }\r
+ if ((rectangle.Left < rectangle.Right) && (this.txゲージ != null))\r
+ {\r
+ this.txゲージ.b加算合成 = true;\r
+ rectangle.X = (int)(rectangle.X * Scale.X);\r
+ rectangle.Y = (int)(rectangle.Y * Scale.Y);\r
+ rectangle.Width = (int)(rectangle.Width * Scale.X);\r
+ rectangle.Height = (int)(rectangle.Height * Scale.Y);\r
+ this.txゲージ.t2D描画(CDTXMania.Instance.Device,\r
+ x * Scale.X,\r
+ 8 * Scale.Y,\r
+ rectangle\r
+ );\r
+ }\r
+ if (this.bRisky && this.actLVLNFont != null) // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
+ {\r
+ CActLVLNFont.EFontColor efc = this.IsDanger(E楽器パート.GUITAR) ?\r
+ CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
+ actLVLNFont.t文字列描画(\r
+ (int)(196 * Scale.X),\r
+ (int)(6 * Scale.Y),\r
+ nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Left);\r
+ }\r
+ }\r
+ #endregion\r
+\r
+ #region [ ベースのゲージ ]\r
+ if (this.db現在のゲージ値.Bass == 1.0)\r
+ {\r
+ num9 = (int)(128.0 * this.db現在のゲージ値.Bass);\r
+ }\r
+ else\r
+ {\r
+ num9 = (int)((128.0 * this.db現在のゲージ値.Bass) + (2.0 * Math.Sin(Math.PI * 2 * (((double)this.ct本体振動.n現在の値) / 360.0))));\r
+ }\r
+ if (num9 > 0)\r
+ {\r
+ Rectangle rectangle2;\r
+ int num10 = this.ct本体移動.n現在の値;\r
+ int num11 = (0x1cf - num9) - num10;\r
+ int num12 = num9 + num10;\r
+ while (num12 > 0)\r
+ {\r
+ if (this.db現在のゲージ値.Bass == 1.0)\r
+ {\r
+ rectangle2 = new Rectangle(10, 0x30, 0x1b, 0x10);\r
+ }\r
+ else\r
+ {\r
+ rectangle2 = new Rectangle(0x25, 0x30, 0x1b, 0x10);\r
+ }\r
+ if (num11 < (0x1cf - num9))\r
+ {\r
+ int num13 = (0x1cf - num9) - num11;\r
+ rectangle2.X += num13;\r
+ rectangle2.Width -= num13;\r
+ num11 += num13;\r
+ }\r
+ if ((num11 + rectangle2.Width) > 0x1cf)\r
+ {\r
+ int num14 = (num11 + rectangle2.Width) - 0x1cf;\r
+ rectangle2.Width -= num14;\r
+ }\r
+ if (rectangle2.Left >= rectangle2.Right)\r
+ {\r
+ break;\r
+ }\r
+ if (this.txゲージ != null)\r
+ {\r
+ Rectangle rectangle3 = rectangle2;\r
+ rectangle3.X = (int)(rectangle3.X * Scale.X);\r
+ rectangle3.Y = (int)(rectangle3.Y * Scale.Y);\r
+ rectangle3.Width = (int)(rectangle3.Width * Scale.X);\r
+ rectangle3.Height = (int)(rectangle3.Height * Scale.Y);\r
+ this.txゲージ.b加算合成 = false;\r
+ this.txゲージ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ num11 * Scale.X,\r
+ 8 * Scale.Y,\r
+ rectangle3\r
+ );\r
+ }\r
+ num12 -= rectangle2.Width;\r
+ num11 += rectangle2.Width;\r
+ }\r
+ rectangle2 = new Rectangle(0, 0x20, 0x40, 0x10);\r
+ num11 = 0x1cf - num9;\r
+ if ((num11 + rectangle2.Width) > 0x1cf)\r
+ {\r
+ int num15 = (num11 + rectangle2.Width) - 0x1cf;\r
+ rectangle2.Width -= num15;\r
+ }\r
+ if ((rectangle2.Left < rectangle2.Right) && (this.txゲージ != null))\r
+ {\r
+ this.txゲージ.b加算合成 = true;\r
+ rectangle2.X = (int)(rectangle2.X * Scale.X);\r
+ rectangle2.Y = (int)(rectangle2.Y * Scale.Y);\r
+ rectangle2.Width = (int)(rectangle2.Width * Scale.X);\r
+ rectangle2.Height = (int)(rectangle2.Height * Scale.Y);\r
+ this.txゲージ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ num11 * Scale.X,\r
+ 8 * Scale.Y,\r
+ rectangle2\r
+ );\r
+ }\r
+ if (this.bRisky && this.actLVLNFont != null) // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
+ {\r
+ CActLVLNFont.EFontColor efc = this.IsDanger(E楽器パート.GUITAR) ?\r
+ CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
+ actLVLNFont.t文字列描画(\r
+ (int)(445 * Scale.X),\r
+ (int)(6 * Scale.Y),\r
+ nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Right);\r
+ }\r
+ }\r
+ #endregion\r
+ }\r
+ else\r
+ {\r
+ #region [ 初めての進行描画 ]\r
+ if (base.b初めての進行描画)\r
+ {\r
+ for (int k = 0; k < 0x18; k++)\r
+ {\r
+ this.st白い星[k].x = 2 + CDTXMania.Instance.Random.Next(4);\r
+ this.st白い星[k].fScale = 0.2f + (CDTXMania.Instance.Random.Next(2) * 0.05f);\r
+ this.st白い星[k].ct進行 = new CCounter(0, 0x160, 8 + CDTXMania.Instance.Random.Next(4), CDTXMania.Instance.Timer);\r
+ this.st白い星[k].ct進行.n現在の値 = CDTXMania.Instance.Random.Next(0x160);\r
+ }\r
+ this.ct本体移動 = new CCounter(0, 0x1a, 20, CDTXMania.Instance.Timer);\r
+ this.ct本体振動 = new CCounter(0, 360, 4, CDTXMania.Instance.Timer);\r
+ base.b初めての進行描画 = false;\r
+ }\r
+ #endregion\r
+ this.ct本体移動.t進行Loop();\r
+ this.ct本体振動.t進行Loop();\r
+\r
+ #region [ Risky残りMiss回数表示 ]\r
+ if (this.bRisky && this.actLVLNFont != null) // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
+ {\r
+ CActLVLNFont.EFontColor efc = this.IsDanger(E楽器パート.DRUMS) ?\r
+ CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
+ actLVLNFont.t文字列描画((int)(12 * Scale.X), (int)(408 * Scale.Y), nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Right);\r
+ }\r
+ #endregion\r
+\r
+ #region [ 緑orオレンジのゲージ表示 ]\r
+ const double dbゲージ最大値 = 352.0 * Scale.Y;\r
+ int n表示するゲージの高さ = (this.dbゲージ値 == 1.0) ?\r
+ ((int)(dbゲージ最大値 * this.dbゲージ値)) :\r
+ ((int)((dbゲージ最大値 * this.dbゲージ値) + (2.0 * Math.Sin(Math.PI * 2 * (((double)this.ct本体振動.n現在の値) / 360.0)))));\r
+\r
+ if (n表示するゲージの高さ <= 0)\r
+ {\r
+ return 0;\r
+ }\r
+ if (this.txゲージ != null)\r
+ {\r
+ this.txゲージ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
+ this.txゲージ.n透明度 = 0xff;\r
+ this.txゲージ.b加算合成 = false;\r
+ }\r
+ int nCtゲージ内部上昇スクロール現在値 = (int)(this.ct本体移動.n現在の値 * Scale.Y);\r
+ int n表示ゲージ最大値 = (int)(0x195 * Scale.Y);\r
+ int ybar = (n表示ゲージ最大値 - n表示するゲージの高さ) - nCtゲージ内部上昇スクロール現在値;\r
+ int height = n表示するゲージの高さ + nCtゲージ内部上昇スクロール現在値;\r
+ while (height > 0)\r
+ {\r
+ Rectangle rect = (this.dbゲージ値 == 1.0) ?\r
+ new Rectangle(48, 0, 48, 61) :\r
+ new Rectangle(0, 0, 48, 61);\r
+ #region [ clipping ]\r
+ if (ybar < (n表示ゲージ最大値 - n表示するゲージの高さ))\r
+ {\r
+ int d = (n表示ゲージ最大値 - n表示するゲージの高さ) - ybar;\r
+ rect.Y += d;\r
+ rect.Height -= d;\r
+ ybar += d;\r
+ }\r
+ if ((ybar + rect.Height) > n表示ゲージ最大値)\r
+ {\r
+ int num7 = (ybar + rect.Height) - n表示ゲージ最大値;\r
+ rect.Height -= num7;\r
+ }\r
+ if (rect.Top >= rect.Bottom)\r
+ {\r
+ break;\r
+ }\r
+ #endregion\r
+ if (this.txゲージ != null)\r
+ {\r
+ this.txゲージ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ 6 * Scale.X,\r
+ ybar,\r
+ rect\r
+ );\r
+ }\r
+ height -= rect.Height;\r
+ ybar += rect.Height;\r
+ }\r
+ #endregion\r
+ #region [ 光彩 ]\r
+ if (this.txゲージ白 != null)\r
+ {\r
+ this.txゲージ白.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
+ this.txゲージ白.n透明度 = 180;\r
+ this.txゲージ白.b加算合成 = true;\r
+ }\r
+ {\r
+ Rectangle rect = new Rectangle(\r
+ 0,\r
+ 0,\r
+ (int)(0x10 * Scale.X),\r
+ (int)(0x40 * 4 * Scale.Y)\r
+ );\r
+ #region [ clipping1 ]\r
+ int ylight = (n表示ゲージ最大値 - n表示するゲージの高さ) + (int)(0 * 0x40 * Scale.Y);\r
+ if (ylight >= n表示ゲージ最大値)\r
+ {\r
+ //break;\r
+ }\r
+ #endregion\r
+ else\r
+ {\r
+ #region [ Clipping2 ]\r
+ if ((ylight + rect.Height) > n表示ゲージ最大値)\r
+ {\r
+ int d = (ylight + rect.Height) - n表示ゲージ最大値;\r
+ rect.Height -= d;\r
+ }\r
+ #endregion\r
+ if ((rect.Top < rect.Bottom) && (this.txゲージ白 != null))\r
+ {\r
+ this.txゲージ白.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (int)(6 * Scale.X),\r
+ (int)(ylight + 0.5f),\r
+ rect\r
+ );\r
+ }\r
+ }\r
+ }\r
+ #endregion\r
+ #region [ ゲージ頂上の光源 ]\r
+ if (this.txゲージ != null)\r
+ {\r
+ //this.txゲージ.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f );\r
+ this.txゲージ.n透明度 = 0xff;\r
+ this.txゲージ.b加算合成 = false;\r
+ }\r
+ {\r
+ Rectangle rect = new Rectangle(\r
+ (int)(0x30 * Scale.X),\r
+ 0,\r
+ (int)(0x10 * Scale.X),\r
+ (int)(0x10 * Scale.Y)\r
+ );\r
+ int yゲージ頂上 = n表示ゲージ最大値 - n表示するゲージの高さ;\r
+ if (yゲージ頂上 < n表示ゲージ最大値)\r
+ {\r
+ #region [ clipping ]\r
+ if ((yゲージ頂上 + rect.Height) > n表示ゲージ最大値)\r
+ {\r
+ int d = (yゲージ頂上 + rect.Height) - n表示ゲージ最大値;\r
+ rect.Height -= d;\r
+ }\r
+ #endregion\r
+ if ((rect.Top < rect.Bottom) && (this.txゲージ != null))\r
+ {\r
+ this.txゲージ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (int)(6 * Scale.X),\r
+ (int)(yゲージ頂上 + 0.5f),\r
+ rect\r
+ );\r
+ }\r
+ }\r
+ }\r
+ #endregion\r
+ #region [ 泡 ]\r
+ if (this.txゲージ != null)\r
+ {\r
+ this.txゲージ.b加算合成 = true;\r
+ }\r
+ for (int j = 0; j < 24; j++)\r
+ {\r
+ this.st白い星[j].ct進行.t進行Loop();\r
+ int x = 6 + this.st白い星[j].x;\r
+ int y泡 = (n表示ゲージ最大値 - n表示するゲージの高さ) + (int)((0x160 - this.st白い星[j].ct進行.n現在の値) * Scale.Y);\r
+ int n透明度 = (this.st白い星[j].ct進行.n現在の値 < 0xb0) ? 0 : ((int)(255.0 * (((double)(this.st白い星[j].ct進行.n現在の値 - 0xb0)) / 176.0)));\r
+ if ((n透明度 != 0) && (y泡 < (int)(0x191 * Scale.Y)))\r
+ {\r
+ Rectangle rect = new Rectangle(\r
+ (int)(0 * Scale.X),\r
+ (int)(0x20 * Scale.Y),\r
+ (int)(0x20 * Scale.X),\r
+ (int)(0x20 * Scale.Y)\r
+ );\r
+ if (this.txゲージ != null)\r
+ {\r
+ this.txゲージ.vc拡大縮小倍率 = new Vector3(this.st白い星[j].fScale, this.st白い星[j].fScale, 1f);\r
+ this.txゲージ.n透明度 = n透明度;\r
+ this.txゲージ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (int)(x * Scale.X),\r
+ (int)(y泡 + 0.5f),\r
+ rect\r
+ );\r
+ }\r
+ }\r
+ }\r
+ #endregion\r
+ }\r
+ }\r
+ return 0;\r
+ }\r
+ public override void OnManagedリソースの作成()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.txゲージ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums gauge.png"));\r
+ this.txゲージ白 = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlayDrums_gauge_white.png "));\r
+ }\r
+ else\r
+ {\r
+ this.txゲージ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar gauge.png"));\r
+ }\r
+ base.OnManagedリソースの作成();\r
+ }\r
+ }\r
+ public override void OnManagedリソースの解放()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ TextureFactory.tテクスチャの解放(ref this.txゲージ);\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ TextureFactory.tテクスチャの解放(ref this.txゲージ白);\r
+ }\r
+ base.OnManagedリソースの解放();\r
+ }\r
+ }\r
+\r
#region [ DAMAGE ]\r
-#if true // DAMAGELEVELTUNING\r
+ // DAMAGELEVELTUNING\r
#region [ DAMAGELEVELTUNING ]\r
- // ----------------------------------\r
- public float[,] fDamageGaugeDelta = { // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
+ public float[,] fDamageGaugeDelta = {\r
+ // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
// drums, guitar, bass\r
{ 0.004f, 0.006f, 0.006f },\r
{ 0.002f, 0.003f, 0.003f },\r
public float[] fDamageLevelFactor = {\r
0.5f, 1.0f, 1.5f\r
};\r
- // ----------------------------------\r
#endregion\r
-#endif\r
\r
public void Damage(E楽器パート screenmode, E楽器パート part, E判定 e今回の判定)\r
{\r
double fDamage;\r
\r
-#if true // DAMAGELEVELTUNING\r
+ // DAMAGELEVELTUNING\r
+ // before applying #23625 modifications\r
switch (e今回の判定)\r
{\r
case E判定.Perfect:\r
fDamage = 0.0f;\r
break;\r
}\r
-#else // before applying #23625 modifications\r
- switch (e今回の判定)\r
- {\r
- case E判定.Perfect:\r
- fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;\r
- break;\r
\r
- case E判定.Great:\r
- fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;\r
- break;\r
-\r
- case E判定.Good:\r
- fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;\r
- break;\r
-\r
- case E判定.Poor:\r
- fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;\r
- break;\r
-\r
- case E判定.Miss:\r
- fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;\r
- switch( CDTXMania.Instance.ConfigIni.eダメージレベル )\r
- {\r
- case Eダメージレベル.少ない:\r
- fDamage *= 0.6;\r
- break;\r
-\r
- case Eダメージレベル.普通:\r
- fDamage *= 1.0;\r
- break;\r
-\r
- case Eダメージレベル.大きい:\r
- fDamage *= 1.6;\r
- break;\r
- }\r
- break;\r
-\r
- default:\r
- fDamage = 0.0;\r
- break;\r
- }\r
-#endif\r
if (screenmode == E楽器パート.DRUMS) // ドラム演奏画面なら、ギター/ベースのダメージも全部ドラムのゲージに集約する\r
{\r
part = E楽器パート.DRUMS;\r
if (this.db現在のゲージ値[(int)part] > GAUGE_MAX) // RISKY時は決してゲージが増加しないので、ギタレボモード時のギター/ベース両チェック(上限チェック)はしなくて良い\r
this.db現在のゲージ値[(int)part] = GAUGE_MAX;\r
}\r
- //-----------------\r
#endregion\r
\r
public STDGBVALUE<double> db現在のゲージ値;\r
protected CCounter ct本体移動;\r
protected CCounter ct本体振動;\r
protected CTexture txゲージ;\r
+\r
+\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct ST白い星\r
+ {\r
+ public int x;\r
+ public float fScale;\r
+ public CCounter ct進行;\r
+ }\r
+\r
+ private CTextureAf txゲージ白;\r
+ private const int STAR_MAX = 0x18;\r
+ private ST白い星[] st白い星 = new ST白い星[0x18];\r
}\r
}\r
using System;\r
using System.Collections.Generic;\r
using System.Text;\r
+using System.Drawing;\r
using FDK;\r
\r
namespace DTXMania\r
internal class CAct演奏スコア共通 : CActivity\r
{\r
// プロパティ\r
-\r
protected STDGBVALUE<long> nスコアの増分;\r
protected STDGBVALUE<double> n現在の本当のスコア;\r
protected STDGBVALUE<long> n現在表示中のスコア;\r
protected long n進行用タイマ;\r
protected CTexture txScore;\r
-\r
+ private readonly Point[] ptSCORE = new Point[] { new Point(0x1f, 0x1a9), new Point(0x1e9, 0x1a9) };\r
\r
// コンストラクタ\r
-\r
public CAct演奏スコア共通()\r
{\r
base.b活性化してない = true;\r
}\r
\r
-\r
// メソッド\r
-\r
public double Get(E楽器パート part)\r
{\r
return this.n現在の本当のスコア[(int)part];\r
}\r
+\r
public void Set(E楽器パート part, double nScore)\r
{\r
int nPart = (int)part;\r
}\r
}\r
}\r
+ \r
/// <summary>\r
/// 点数を加える(各種AUTO補正つき)\r
/// </summary>\r
\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
this.n進行用タイマ = -1;\r
base.OnManagedリソースの解放();\r
}\r
}\r
+\r
+ // CActivity 実装(共通クラスからの差分のみ)\r
+ public override unsafe int On進行描画()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ if (base.b初めての進行描画)\r
+ {\r
+ n進行用タイマ = CDTXMania.Instance.Timer.n現在時刻;\r
+ b初めての進行描画 = false;\r
+ }\r
+ long num = CDTXMania.Instance.Timer.n現在時刻;\r
+ if (num < n進行用タイマ)\r
+ {\r
+ n進行用タイマ = num;\r
+ }\r
+ while ((num - n進行用タイマ) >= 10)\r
+ {\r
+ for (int j = 0; j < 3; j++)\r
+ {\r
+ this.n現在表示中のスコア[j] += this.nスコアの増分[j];\r
+\r
+ if (this.n現在表示中のスコア[j] > (long)this.n現在の本当のスコア[j])\r
+ this.n現在表示中のスコア[j] = (long)this.n現在の本当のスコア[j];\r
+ }\r
+ n進行用タイマ += 10;\r
+ }\r
+ for (int i = 1; i < 3; i++)\r
+ {\r
+ string str = this.n現在表示中のスコア[i].ToString("0000000000");\r
+ for (int k = 0; k < 10; k++)\r
+ {\r
+ Rectangle rectangle;\r
+ char ch = str[k];\r
+ if (ch.Equals(' '))\r
+ {\r
+ rectangle = new Rectangle(\r
+ 0,\r
+ 0,\r
+ (int)(12 * Scale.X),\r
+ (int)(0x18 * Scale.Y)\r
+ );\r
+ }\r
+ else\r
+ {\r
+ int num5 = int.Parse(str.Substring(k, 1));\r
+ if (num5 < 5)\r
+ {\r
+ rectangle = new Rectangle(\r
+ (int)(num5 * 12 * Scale.X),\r
+ 0,\r
+ (int)(12 * Scale.X),\r
+ (int)(0x18 * Scale.Y)\r
+ );\r
+ }\r
+ else\r
+ {\r
+ rectangle = new Rectangle(\r
+ (int)((num5 - 5) * 12 * Scale.X),\r
+ (int)(0x18 * Scale.Y),\r
+ (int)(12 * Scale.X),\r
+ (int)(0x18 * Scale.Y)\r
+ );\r
+ }\r
+ }\r
+ if (txScore != null)\r
+ {\r
+ txScore.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (this.ptSCORE[i - 1].X + (k * 12)) * Scale.X,\r
+ this.ptSCORE[i - 1].Y * Scale.Y,\r
+ rectangle\r
+ );\r
+ }\r
+ }\r
+ }\r
+\r
+ }\r
+ else\r
+ {\r
+ if (base.b初めての進行描画)\r
+ {\r
+ n進行用タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+ base.b初めての進行描画 = false;\r
+ }\r
+ long num = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+ if (num < n進行用タイマ)\r
+ {\r
+ n進行用タイマ = num;\r
+ }\r
+ while ((num - n進行用タイマ) >= 10)\r
+ {\r
+ for (int j = 0; j < 3; j++)\r
+ {\r
+ this.n現在表示中のスコア[j] += this.nスコアの増分[j];\r
+\r
+ if (this.n現在表示中のスコア[j] > (long)this.n現在の本当のスコア[j])\r
+ this.n現在表示中のスコア[j] = (long)this.n現在の本当のスコア[j];\r
+ }\r
+ n進行用タイマ += 10;\r
+ }\r
+ string str = this.n現在表示中のスコア.Drums.ToString("0000000000");\r
+ for (int i = 0; i < 10; i++)\r
+ {\r
+ Rectangle rectangle;\r
+ char ch = str[i];\r
+ if (ch.Equals(' '))\r
+ {\r
+ rectangle = new Rectangle(\r
+ 0,\r
+ 0,\r
+ (int)(12 * Scale.X),\r
+ (int)(0x18 * Scale.Y)\r
+ );\r
+ }\r
+ else\r
+ {\r
+ int num4 = int.Parse(str.Substring(i, 1));\r
+ if (num4 < 5)\r
+ {\r
+ rectangle = new Rectangle(\r
+ (int)(num4 * 12 * Scale.X),\r
+ 0,\r
+ (int)(12 * Scale.X),\r
+ (int)(0x18 * Scale.Y)\r
+ );\r
+ }\r
+ else\r
+ {\r
+ rectangle = new Rectangle(\r
+ (int)((num4 - 5) * 12 * Scale.X),\r
+ (int)(0x18 * Scale.Y),\r
+ (int)(12 * Scale.X),\r
+ (int)(0x18 * Scale.Y)\r
+ );\r
+ }\r
+ }\r
+ if (txScore != null)\r
+ {\r
+ txScore.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1068 + (i * 36) : 1490 + i * 36,\r
+ 30,\r
+ rectangle\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return 0;\r
+ }\r
+\r
}\r
}\r
{\r
this.stパネルマップ = new STATUSPANEL[12]; // yyagi: 以下、手抜きの初期化でスマン\r
// { "DTXMANIA", 0 }, { "EXTREME", 1 }, ... みたいに書きたいが・・・\r
- string[] labels = new string[12] {\r
+ string[] labels = new string[12]\r
+ {\r
"DTXMANIA", "EXTREME", "ADVANCED", "ADVANCE", "BASIC", "RAW",\r
"REAL", "EASY", "EX-REAL", "ExREAL", "ExpertReal", "NORMAL"\r
};\r
- int[] status = new int[12] {\r
+ int[] status = new int[12] \r
+ {\r
0, 1, 2, 2, 3, 4, 5, 6, 7, 7, 7, 8\r
};\r
\r
this.stパネルマップ[i].label = labels[i];\r
}\r
\r
- #region [ 旧初期化処理(注釈化) ]\r
- //STATUSPANEL[] statuspanelArray = new STATUSPANEL[ 12 ];\r
- //STATUSPANEL statuspanel = new STATUSPANEL();\r
- //statuspanel.status = 0;\r
- //statuspanel.label = "DTXMANIA";\r
- //statuspanelArray[ 0 ] = statuspanel;\r
- //STATUSPANEL statuspanel2 = new STATUSPANEL();\r
- //statuspanel2.status = 1;\r
- //statuspanel2.label = "EXTREME";\r
- //statuspanelArray[ 1 ] = statuspanel2;\r
- //STATUSPANEL statuspanel3 = new STATUSPANEL();\r
- //statuspanel3.status = 2;\r
- //statuspanel3.label = "ADVANCED";\r
- //statuspanelArray[ 2 ] = statuspanel3;\r
- //STATUSPANEL statuspanel4 = new STATUSPANEL();\r
- //statuspanel4.status = 2;\r
- //statuspanel4.label = "ADVANCE";\r
- //statuspanelArray[ 3 ] = statuspanel4;\r
- //STATUSPANEL statuspanel5 = new STATUSPANEL();\r
- //statuspanel5.status = 3;\r
- //statuspanel5.label = "BASIC";\r
- //statuspanelArray[ 4 ] = statuspanel5;\r
- //STATUSPANEL statuspanel6 = new STATUSPANEL();\r
- //statuspanel6.status = 4;\r
- //statuspanel6.label = "RAW";\r
- //statuspanelArray[ 5 ] = statuspanel6;\r
- //STATUSPANEL statuspanel7 = new STATUSPANEL();\r
- //statuspanel7.status = 5;\r
- //statuspanel7.label = "REAL";\r
- //statuspanelArray[ 6 ] = statuspanel7;\r
- //STATUSPANEL statuspanel8 = new STATUSPANEL();\r
- //statuspanel8.status = 6;\r
- //statuspanel8.label = "EASY";\r
- //statuspanelArray[ 7 ] = statuspanel8;\r
- //STATUSPANEL statuspanel9 = new STATUSPANEL();\r
- //statuspanel9.status = 7;\r
- //statuspanel9.label = "EX-REAL";\r
- //statuspanelArray[ 8 ] = statuspanel9;\r
- //STATUSPANEL statuspanel10 = new STATUSPANEL();\r
- //statuspanel10.status = 7;\r
- //statuspanel10.label = "ExREAL";\r
- //statuspanelArray[ 9 ] = statuspanel10;\r
- //STATUSPANEL statuspanel11 = new STATUSPANEL();\r
- //statuspanel11.status = 7;\r
- //statuspanel11.label = "ExpertReal";\r
- //statuspanelArray[ 10 ] = statuspanel11;\r
- //STATUSPANEL statuspanel12 = new STATUSPANEL();\r
- //statuspanel12.status = 8;\r
- //statuspanel12.label = "NORMAL";\r
- //statuspanelArray[ 11 ] = statuspanel12;\r
- //this.stパネルマップ = statuspanelArray;\r
- #endregion\r
base.b活性化してない = true;\r
}\r
\r
\r
// メソッド\r
-\r
public void tラベル名からステータスパネルを決定する(string strラベル名)\r
{\r
if (string.IsNullOrEmpty(strラベル名))\r
base.On活性化();\r
}\r
\r
+ public override void OnManagedリソースの作成()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.txStatusPanels = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels right.png"));\r
+ }\r
+ else\r
+ {\r
+ this.tx左パネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels left.png"));\r
+ this.tx右パネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels right.png"));\r
+ }\r
+ base.OnManagedリソースの作成();\r
+ }\r
+ }\r
+ public override void OnManagedリソースの解放()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ TextureFactory.tテクスチャの解放(ref this.txStatusPanels);\r
+ }\r
+ else\r
+ {\r
+ TextureFactory.tテクスチャの解放(ref this.tx左パネル);\r
+ TextureFactory.tテクスチャの解放(ref this.tx右パネル);\r
+ }\r
+ base.OnManagedリソースの解放();\r
+ }\r
+ }\r
+\r
+ public override int On進行描画()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ if ((this.txStatusPanels != null))\r
+ {\r
+ this.txStatusPanels.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ 0x26f * Scale.X,\r
+ 0x14f * Scale.Y,\r
+ new Rectangle(\r
+ (int)(this.nStatus * 15 * Scale.X),\r
+ (int)(0xb7 * Scale.Y),\r
+ (int)(15 * Scale.X),\r
+ (int)(0x49 * Scale.Y)\r
+ )\r
+ );\r
+ int drums = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums;\r
+ if (drums < 0)\r
+ {\r
+ drums = 0;\r
+ }\r
+ if (drums > 15)\r
+ {\r
+ drums = 15;\r
+ }\r
+ this.txStatusPanels.t2D描画(CDTXMania.Instance.Device,\r
+ 0x26f * Scale.X,\r
+ 0x3b * Scale.Y,\r
+ new Rectangle(\r
+ (int)(drums * 15 * Scale.X),\r
+ 0,\r
+ (int)(15 * Scale.X),\r
+ (int)(0xac * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (this.tx左パネル != null)\r
+ {\r
+ this.tx左パネル.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ 3 * Scale.X,\r
+ 0x143 * Scale.Y,\r
+ new Rectangle(\r
+ (int)(this.nStatus * 15 * Scale.X),\r
+ (int)(0xb7 * Scale.Y),\r
+ (int)(15 * Scale.X),\r
+ (int)(0x49 * Scale.Y)\r
+ )\r
+ );\r
+ int guitar = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Guitar;\r
+ if (guitar < 0)\r
+ {\r
+ guitar = 0;\r
+ }\r
+ if (guitar > 15)\r
+ {\r
+ guitar = 15;\r
+ }\r
+ this.tx左パネル.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ 3 * Scale.X,\r
+ 0x35 * Scale.Y,\r
+ new Rectangle(\r
+ (int)(guitar * 15 * Scale.X),\r
+ 0,\r
+ (int)(15 * Scale.X),\r
+ (int)(0xac * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ if (this.tx右パネル != null)\r
+ {\r
+ this.tx右パネル.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ 0x26e * Scale.X,\r
+ 0x143 * Scale.Y,\r
+ new Rectangle(\r
+ (int)(this.nStatus * 15 * Scale.X),\r
+ (int)(0xb7 * Scale.Y),\r
+ (int)(15 * Scale.X),\r
+ (int)(0x49 * Scale.Y)\r
+ )\r
+ );\r
+ int bass = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Bass;\r
+ if (bass < 0)\r
+ {\r
+ bass = 0;\r
+ }\r
+ if (bass > 15)\r
+ {\r
+ bass = 15;\r
+ }\r
+ this.tx右パネル.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ 0x26e * Scale.X,\r
+ 0x35 * Scale.Y,\r
+ new Rectangle(\r
+ (int)(bass * 15 * Scale.X),\r
+ 0,\r
+ (int)(15 * Scale.X),\r
+ (int)(0xac * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ }\r
+ }\r
+ return 0;\r
+ }\r
\r
- #region [ protected ]\r
- //-----------------\r
[StructLayout(LayoutKind.Sequential)]\r
protected struct STATUSPANEL\r
{\r
public int status;\r
}\r
\r
+ private CTexture tx右パネル;\r
+ private CTexture tx左パネル;\r
+ private CTexture txStatusPanels;\r
protected int nStatus;\r
protected STATUSPANEL[] stパネルマップ = null;\r
- //-----------------\r
- #endregion\r
}\r
}\r
\r
\r
// メソッド\r
-\r
public virtual void Start(int nLane, int n中央X, int n中央Y, C演奏判定ライン座標共通 演奏判定ライン座標)\r
{\r
if ((nLane >= 0) || (nLane <= 5))\r
using System.Collections.Generic;\r
using System.Text;\r
using FDK;\r
+using System.Drawing;\r
\r
namespace DTXMania\r
{\r
internal class CAct演奏レーンフラッシュGB共通 : CActivity\r
{\r
- // プロパティ\r
-\r
protected CCounter[] ct進行 = new CCounter[6];\r
protected CTextureAf[] txFlush = new CTextureAf[6];\r
-\r
+ private readonly int[,,] nRGBのX座標 = new int[,,]\r
+ { \r
+ { { 2, 0x1c, 0x36, 2, 0x1c, 0x36 }, { 0x36, 0x1c, 2, 0x36, 0x1c, 2 } }, // dr. \r
+ { { 0, 0x24, 0x48, 0, 0x24, 0x48 }, { 0x48, 0x24, 0, 0x48, 0x24, 0 } } // gt.\r
+ };\r
\r
// コンストラクタ\r
-\r
public CAct演奏レーンフラッシュGB共通()\r
{\r
base.b活性化してない = true;\r
\r
\r
// メソッド\r
-\r
public void Start(int nLane)\r
{\r
if ((nLane < 0) || (nLane > 6))\r
\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
for (int i = 0; i < 6; i++)\r
}\r
base.On活性化();\r
}\r
+\r
public override void On非活性化()\r
{\r
for (int i = 0; i < 6; i++)\r
}\r
base.On非活性化();\r
}\r
+\r
public override void OnManagedリソースの作成()\r
{\r
if (!base.b活性化してない)\r
base.OnManagedリソースの作成();\r
}\r
}\r
+\r
public override void OnManagedリソースの解放()\r
{\r
if (!base.b活性化してない)\r
base.OnManagedリソースの解放();\r
}\r
}\r
+\r
+ public override int On進行描画()\r
+ {\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ for (int i = 0; i < 6; i++)\r
+ {\r
+ if (!ct進行[i].b停止中)\r
+ {\r
+ E楽器パート e楽器パート = (i < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+ CTextureAf texture = CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート] ? txFlush[(i % 3) + 3] : txFlush[i % 3];\r
+ int bLeft = CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート] ? 1 : 0;\r
+ int x = (((i < 3) ? 1521 : 1194) + this.nRGBのX座標[0,bLeft, i] * 3) + ((16 * ct進行[i].n現在の値) / 100) * 3;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ x -= (e楽器パート == E楽器パート.GUITAR) ? 71 : 994;\r
+ }\r
+ int y = ((i < 3) ? 0x39 : 0x39);\r
+ if (texture != null)\r
+ {\r
+ texture.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x,\r
+ y * Scale.Y,\r
+ new Rectangle(\r
+ 0, //(int) ( ( j * 0x20 ) * Scale.X ),\r
+ 0,\r
+ (int)((0x18 * (100 - ct進行[i].n現在の値)) / 100 * Scale.X),\r
+ (int)(0x76 * 3 * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ ct進行[i].t進行();\r
+ if (ct進行[i].b終了値に達した)\r
+ {\r
+ ct進行[i].t停止();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ for (int i = 0; i < 6; i++)\r
+ {\r
+ if (!ct進行[i].b停止中)\r
+ {\r
+ E楽器パート e楽器パート = (i < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+ CTextureAf texture = CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート] ? txFlush[(i % 3) + 3] : txFlush[i % 3];\r
+ int num2 = CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート] ? 1 : 0;\r
+ {\r
+ int x = (((i < 3) ? 0x1a : 480) + this.nRGBのX座標[1,num2, i]) + ((0x10 * ct進行[i].n現在の値) / 100);\r
+ int y = CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート] ? 0x37 : 0;\r
+ if (texture != null)\r
+ {\r
+ texture.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x * Scale.X,\r
+ y * Scale.Y,\r
+ new Rectangle(\r
+ 0,\r
+ 0,\r
+ (int)(((0x20 * (100 - ct進行[i].n現在の値)) / 100) * Scale.X),\r
+ (int)(0x76 * 3 * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ }\r
+ ct進行[i].t進行();\r
+ if (ct進行[i].b終了値に達した)\r
+ {\r
+ ct進行[i].t停止();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return 0;\r
+ }\r
}\r
}\r
using System.Runtime.InteropServices;\r
using System.Drawing;\r
using FDK;\r
+using SlimDX;\r
\r
namespace DTXMania\r
{\r
\r
\r
// メソッド\r
-\r
public virtual void Start(int nLane, E判定 judge, int lag)\r
{\r
if ((nLane < 0) || (nLane > 11))\r
\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.stレーンサイズ = new STレーンサイズ[12];\r
+ STレーンサイズ stレーンサイズ = new STレーンサイズ();\r
+ int[,] sizeXW = new int[,] {\r
+ { 0x24, 0x24 },\r
+ { 0x4d, 30 },\r
+ { 0x6f, 30 },\r
+ { 0x92, 0x2a },\r
+ { 0xc1, 30 },\r
+ { 0xe3, 30 },\r
+ { 0x105, 30 },\r
+ { 0x127, 0x24 },\r
+ { 0, 0 },\r
+ { 0, 0 },\r
+ { 0x1a, 0x6f }, // 最後2つ(Gt, Bs)がドラムスと異なる\r
+ { 480, 0x6f } // \r
+ };\r
+ for (int i = 0; i < 12; i++)\r
+ {\r
+ this.stレーンサイズ[i] = new STレーンサイズ();\r
+ this.stレーンサイズ[i].x = sizeXW[i, 0];\r
+ this.stレーンサイズ[i].w = sizeXW[i, 1];\r
+ }\r
+ }\r
+ else\r
+ {\r
+ this.stレーンサイズ = new STレーンサイズ[12]\r
+ {\r
+ new STレーンサイズ( 36 - 36, 36 ),\r
+ new STレーンサイズ( 77 - 36, 30 ),\r
+ new STレーンサイズ( 111 - 36, 30 ),\r
+ new STレーンサイズ( 146 - 36, 42 ),\r
+ new STレーンサイズ( 192 - 36, 30 ),\r
+ new STレーンサイズ( 227 - 36, 30 ),\r
+ new STレーンサイズ( 261 - 36, 30 ),\r
+ new STレーンサイズ( 295 - 36, 36 ),\r
+ new STレーンサイズ( 0 - 36, 0 ),\r
+ new STレーンサイズ( 0 - 36, 0 ),\r
+ new STレーンサイズ( 507 - 36, 80 ),\r
+ new STレーンサイズ( 398 - 36, 80 )\r
+ };\r
+ }\r
for (int i = 0; i < 12; i++)\r
{\r
this.st状態[i].ct進行 = new CCounter();\r
base.On活性化();\r
this.nShowLagType = CDTXMania.Instance.ConfigIni.nShowLagType;\r
}\r
+\r
public override void On非活性化()\r
{\r
for (int i = 0; i < 12; i++)\r
}\r
base.On非活性化();\r
}\r
+\r
public override void OnManagedリソースの作成()\r
{\r
if (!base.b活性化してない)\r
base.OnManagedリソースの作成();\r
}\r
}\r
+\r
public override void OnManagedリソースの解放()\r
{\r
if (!base.b活性化してない)\r
}\r
}\r
\r
- public virtual int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標共通)\r
+\r
+ public int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標)\r
{\r
+ if (!base.b活性化してない)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ #region [ 表示拡大率の設定 ]\r
+ for (int i = 0; i < 12; i++)\r
+ {\r
+ if (!st状態[i].ct進行.b停止中)\r
+ {\r
+ st状態[i].ct進行.t進行();\r
+ if (st状態[i].ct進行.b終了値に達した)\r
+ {\r
+ st状態[i].ct進行.t停止();\r
+ }\r
+ int num2 = st状態[i].ct進行.n現在の値;\r
+ if ((st状態[i].judge != E判定.Miss) && (st状態[i].judge != E判定.Bad))\r
+ {\r
+ if (num2 < 50)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f + (1f * (1f - (((float)num2) / 50f)));\r
+ st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else if (num2 < 130)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = ((num2 % 6) == 0) ? (CDTXMania.Instance.Random.Next(6) - 3) : st状態[i].n相対Y座標;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else if (num2 >= 240)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f - ((1f * (num2 - 240)) / 60f);\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ }\r
+ else if (num2 < 50)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else if (num2 >= 200)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
+ st状態[i].fY方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ }\r
+ }\r
+ #endregion\r
+ for (int j = 0; j < 12; j++)\r
+ {\r
+ if (!st状態[j].ct進行.b停止中)\r
+ {\r
+ int index = st判定文字列[(int)st状態[j].judge].n画像番号;\r
+ int baseX = 0;\r
+ int baseY = 0;\r
+ #region [ Drums 判定文字列 baseX/Y生成 ]\r
+ if (j < 8) // Drums\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums == E判定文字表示位置.表示OFF)\r
+ {\r
+ continue;\r
+ }\r
+ baseX = this.stレーンサイズ[j].x;\r
+ baseX = (int)(baseX * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
+ baseX += (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 36 : 205);\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
+ ((((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) == E判定文字表示位置.レーン上) ? (240 + (this.n文字の縦表示位置[j] * 0x20)) : 50) :\r
+ ((((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) == E判定文字表示位置.レーン上) ? (180 + (this.n文字の縦表示位置[j] * 0x20)) : 450);\r
+ baseY = (int)(baseY * Scale.Y);\r
+ }\r
+ #endregion\r
+ #region [ Bass 判定文字列描画 baseX/Y生成 ]\r
+ else if (j == 11) // Bass\r
+ {\r
+ if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass) == E判定文字表示位置.表示OFF)\r
+ {\r
+ continue;\r
+ }\r
+ int yB;\r
+ switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass)\r
+ {\r
+ case E判定文字表示位置.コンボ下:\r
+ baseX = this.stレーンサイズ[j].x + 36;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ baseX -= 331 + 1;\r
+ }\r
+ yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ baseY = (\r
+ CDTXMania.Instance.ConfigIni.bReverse.Bass ?\r
+ yB + (int)((-124 + 0) * Scale.Y) :\r
+ yB + (int)((+184 + 0) * Scale.Y)\r
+ )\r
+ + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
+ break;\r
+ case E判定文字表示位置.レーン上:\r
+ baseX = this.stレーンサイズ[j].x + 36;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ baseX -= 331 + 1;\r
+ }\r
+ //baseY = ( CDTXMania.Instance.ConfigIni.bReverse.Bass ? 240 : 180 ) + ( this.n文字の縦表示位置[ j ] * 0x20 );\r
+ yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ baseY = (\r
+ CDTXMania.Instance.ConfigIni.bReverse.Bass ?\r
+ yB - (int)(134 * Scale.Y) :\r
+ yB + (int)(75 * Scale.Y)\r
+ )\r
+ + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
+ break;\r
+ case E判定文字表示位置.判定ライン上:\r
+ baseX = this.stレーンサイズ[j].x + 36;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ baseX -= 331 + 1;\r
+ }\r
+ yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ?\r
+ yB + (int)(20 * Scale.Y) :\r
+ yB - (int)(24 * Scale.Y);\r
+ break;\r
+ }\r
+ }\r
+ #endregion\r
+ #region [ Guitar 判定文字列描画 baseX/Y生成 ]\r
+ else if (j == 10) // Guitar\r
+ {\r
+ if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar) == E判定文字表示位置.表示OFF)\r
+ {\r
+ continue;\r
+ }\r
+ int yG;\r
+ switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar)\r
+ {\r
+ case E判定文字表示位置.コンボ下:\r
+ baseX = (CDTXMania.Instance.DTX.bチップがある.Bass) ? this.stレーンサイズ[j].x + 36 : 0x198;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ baseX = this.stレーンサイズ[j].x + 36; // 判定表示がドラムレーンにかぶらないよう、ベース有りの時と同じ表示方法にする\r
+ baseX -= 24 + 1;\r
+ }\r
+ yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ baseY = (\r
+ CDTXMania.Instance.ConfigIni.bReverse.Guitar ?\r
+ yG + (int)((-124 + 0) * Scale.Y) :\r
+ yG + (int)((+184 + 0) * Scale.Y)\r
+ )\r
+ + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
+ break;\r
+ case E判定文字表示位置.レーン上:\r
+ baseX = (CDTXMania.Instance.DTX.bチップがある.Bass) ? this.stレーンサイズ[j].x + 36 : 0x198;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ baseX = this.stレーンサイズ[j].x + 36; // 判定表示がドラムレーンにかぶらないよう、ベース有りの時と同じ表示方法にする\r
+ baseX -= 24 + 1;\r
+ }\r
+ //baseY = ( CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 240 : 180 ) + ( this.n文字の縦表示位置[ j ] * 0x20 );\r
+ yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ baseY = (\r
+ CDTXMania.Instance.ConfigIni.bReverse.Guitar ?\r
+ yG - (int)(134 * Scale.Y) :\r
+ yG + (int)(75 * Scale.Y)\r
+ )\r
+ + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
+ break;\r
+ case E判定文字表示位置.判定ライン上:\r
+ baseX = (CDTXMania.Instance.DTX.bチップがある.Bass) ? this.stレーンサイズ[j].x + 36 : 0x198;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ baseX = this.stレーンサイズ[j].x + 36; // 判定表示がドラムレーンにかぶらないよう、ベース有りの時と同じ表示方法にする\r
+ baseX -= 24 + 1;\r
+ }\r
+ yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ?\r
+ yG + (int)(20 * Scale.Y) :\r
+ yG - (int)(24 * Scale.Y);\r
+ break;\r
+ }\r
+ }\r
+ #endregion\r
+ int xc = (int)((((baseX + st状態[j].n相対X座標) + (this.stレーンサイズ[j].w / 2))) * Scale.X); // Xcenter座標\r
+ int x = xc - ((int)(((256f / 2) * st状態[j].fX方向拡大率) * ((j < 10) ? 1.0 : 0.7)));\r
+ int y = (int)(baseY + (st状態[j].n相対Y座標) * Scale.Y) - ((int)((((256f / 3) * st状態[j].fY方向拡大率) * ((j < 10) ? 1.0 : 0.7)) / 2.0));\r
+ if (tx判定文字列[index] != null)\r
+ {\r
+ tx判定文字列[index].n透明度 = st状態[j].n透明度;\r
+ tx判定文字列[index].vc拡大縮小倍率 = new Vector3((float)(st状態[j].fX方向拡大率 * ((j < 10) ? 1.0 : 0.7)), (float)(st状態[j].fY方向拡大率 * ((j < 10) ? 1.0 : 0.7)), 1f);\r
+ tx判定文字列[index].t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x,\r
+ y,\r
+ st判定文字列[(int)st状態[j].judge].rc\r
+ );\r
+\r
+ #region [ #25370 2011.6.3 yyagi ShowLag support ]\r
+ if (nShowLagType == (int)EShowLagType.ON ||\r
+ ((nShowLagType == (int)EShowLagType.GREAT_POOR) && (st状態[j].judge != E判定.Perfect)))\r
+ {\r
+ if (st状態[j].judge != E判定.Auto && txlag数値 != null) // #25370 2011.2.1 yyagi\r
+ {\r
+ bool minus = false;\r
+ int offsetX = 0;\r
+ string strDispLag = st状態[j].nLag.ToString();\r
+ if (st状態[j].nLag < 0)\r
+ {\r
+ minus = true;\r
+ }\r
+ //x = xc - strDispLag.Length * 15 / 2;\r
+ x = xc - (int)((strDispLag.Length * 15 / 2) * Scale.X);\r
+ for (int i = 0; i < strDispLag.Length; i++)\r
+ {\r
+ int p = (strDispLag[i] == '-') ? 11 : (int)(strDispLag[i] - '0'); //int.Parse(strDispLag[i]);\r
+ p += minus ? 0 : 12; // change color if it is minus value\r
+ //base.txlag数値.t2D描画( CDTXMania.Instance.app.Device, x + offsetX, y + 34, base.stLag数値[ p ].rc );\r
+ txlag数値.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x + offsetX * Scale.X,\r
+ y + 38 * Scale.Y,\r
+ stLag数値[p].rc\r
+ );\r
+ offsetX += 12; // 15 -> 12\r
+ }\r
+ }\r
+ }\r
+ #endregion\r
+ }\r
+ // Label_07FC: ;\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ for (int i = 0; i < 12; i++)\r
+ {\r
+ if (!st状態[i].ct進行.b停止中)\r
+ {\r
+ st状態[i].ct進行.t進行();\r
+ if (st状態[i].ct進行.b終了値に達した)\r
+ {\r
+ st状態[i].ct進行.t停止();\r
+ }\r
+ int num2 = st状態[i].ct進行.n現在の値;\r
+ if ((st状態[i].judge != E判定.Miss) && (st状態[i].judge != E判定.Bad))\r
+ {\r
+ if (num2 < 50)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f + (1f * (1f - (((float)num2) / 50f)));\r
+ st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else if (num2 < 130)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = ((num2 % 6) == 0) ? (CDTXMania.Instance.Random.Next(6) - 3) : st状態[i].n相対Y座標;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else if (num2 >= 240)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f - ((1f * (num2 - 240)) / 60f);\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ }\r
+ else if (num2 < 50)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else if (num2 >= 200)\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
+ st状態[i].fY方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ else\r
+ {\r
+ st状態[i].fX方向拡大率 = 1f;\r
+ st状態[i].fY方向拡大率 = 1f;\r
+ st状態[i].n相対X座標 = 0;\r
+ st状態[i].n相対Y座標 = 0;\r
+ st状態[i].n透明度 = 0xff;\r
+ }\r
+ }\r
+ }\r
+ for (int j = 0; j < 12; j++)\r
+ {\r
+ if (!st状態[j].ct進行.b停止中)\r
+ {\r
+ int index = st判定文字列[(int)st状態[j].judge].n画像番号;\r
+ int baseX = 0;\r
+ int baseY = 0;\r
+ if (j >= 8)\r
+ {\r
+ if (j == 11) // Bass\r
+ {\r
+ if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass) == E判定文字表示位置.表示OFF)\r
+ {\r
+ continue;\r
+ }\r
+ int yB;\r
+ switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass)\r
+ {\r
+ case E判定文字表示位置.コンボ下:\r
+ baseX = 0x163;\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? 0x12b : 190;\r
+ break;\r
+ case E判定文字表示位置.レーン上:\r
+ baseX = this.stレーンサイズ[j].x;\r
+ yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? yB - 95 - 52 + 10 : yB + 95 + 52;\r
+ //baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? 0x12b : 190;\r
+ break;\r
+ case E判定文字表示位置.判定ライン上:\r
+ baseX = this.stレーンサイズ[j].x;\r
+ yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? yB + 30 : yB - 20;\r
+ break;\r
+ }\r
+ }\r
+ else if (j == 10) // Guitar\r
+ {\r
+ if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar) == E判定文字表示位置.表示OFF)\r
+ {\r
+ continue;\r
+ }\r
+ int yG;\r
+ switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar)\r
+ {\r
+ case E判定文字表示位置.コンボ下:\r
+ baseX = 0xaf;\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0x12b : 190;\r
+ break;\r
+ case E判定文字表示位置.レーン上:\r
+ baseX = this.stレーンサイズ[j].x;\r
+ yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? yG - 95 - 52 + 10 : yG + 95 + 52;\r
+ //baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0x12b : 190;\r
+ break;\r
+ case E判定文字表示位置.判定ライン上:\r
+ baseX = this.stレーンサイズ[j].x;\r
+ yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+ baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? yG + 30 : yG - 20;\r
+ break;\r
+ }\r
+ }\r
+ int xc = (int)((((baseX + st状態[j].n相対X座標) + (this.stレーンサイズ[j].w / 2))) * Scale.X);\r
+ int x = xc - (int)(((256f / 2) * st状態[j].fX方向拡大率) * 0.8);\r
+ int y = (int)((baseY + st状態[j].n相対Y座標) * Scale.Y) - ((int)((((256f / 3) * st状態[j].fY方向拡大率) * 0.8) / 2.0));\r
+\r
+ if (tx判定文字列[index] != null)\r
+ {\r
+ tx判定文字列[index].n透明度 = st状態[j].n透明度;\r
+ tx判定文字列[index].vc拡大縮小倍率 = new Vector3((float)(st状態[j].fX方向拡大率 * 0.8), (float)(st状態[j].fY方向拡大率 * 0.8), 1f);\r
+ tx判定文字列[index].t2D描画(CDTXMania.Instance.Device, x, y, st判定文字列[(int)st状態[j].judge].rc);\r
+\r
+ #region [ #25370 2011.6.3 yyagi ShowLag support ]\r
+ if (nShowLagType == (int)EShowLagType.ON ||\r
+ ((nShowLagType == (int)EShowLagType.GREAT_POOR) && (st状態[j].judge != E判定.Perfect)))\r
+ {\r
+ if (st状態[j].judge != E判定.Auto && txlag数値 != null) // #25370 2011.2.1 yyagi\r
+ {\r
+ bool minus = false;\r
+ int offsetX = 0;\r
+ string strDispLag = st状態[j].nLag.ToString();\r
+ if (st状態[j].nLag < 0)\r
+ {\r
+ minus = true;\r
+ }\r
+ x = xc - (int)(strDispLag.Length * 15 / 2 * Scale.X);\r
+ for (int i = 0; i < strDispLag.Length; i++)\r
+ {\r
+ int p = (strDispLag[i] == '-') ? 11 : (int)(strDispLag[i] - '0'); //int.Parse(strDispLag[i]);\r
+ p += minus ? 0 : 12; // change color if it is minus value\r
+ txlag数値.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x + offsetX * Scale.X,\r
+ y + 35 * Scale.Y,\r
+ stLag数値[p].rc\r
+ );\r
+ offsetX += 12;\r
+ }\r
+ }\r
+ }\r
+ #endregion\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
return 0;\r
}\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct STレーンサイズ\r
+ {\r
+ public int x;\r
+ public int w;\r
+ public STレーンサイズ(int x_, int w_)\r
+ {\r
+ x = x_;\r
+ w = w_;\r
+ }\r
+\r
+ }\r
+\r
+ private readonly int[] n文字の縦表示位置 = new int[] { 1, 2, 0, 1, 3, 2, 1, 0, 0, 0, 1, 1 };\r
+ private STレーンサイズ[] stレーンサイズ;\r
+\r
}\r
+\r
+\r
}\r
/// <summary>\r
/// 演奏画面の共通クラス (ドラム演奏画面, ギター演奏画面の継承元)\r
/// </summary>\r
- internal abstract partial class CStage演奏画面共通 : CStage\r
+ internal partial class CStage演奏画面共通 : CStage\r
{\r
// members\r
-\r
- #region [Member_Activities]\r
- protected CAct演奏AVI actAVI;\r
- protected CAct演奏BGA actBGA;\r
- protected CAct演奏チップファイアGB actChipFireGB;\r
- protected CAct演奏Combo共通 actCombo;\r
- protected CAct演奏Danger共通 actDANGER;\r
- protected CActFIFOBlack actFI;\r
- protected CActFIFOBlack actFO;\r
- protected CActFIFOWhite actFOClear;\r
- protected CAct演奏ゲージ共通 actGauge;\r
- protected CAct演奏判定文字列共通 actJudgeString;\r
- protected CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
- protected CAct演奏レーンフラッシュGB共通 actLaneFlushGB;\r
- protected CAct演奏パネル文字列 actPanel;\r
- protected CAct演奏演奏情報 actPlayInfo;\r
- protected CAct演奏RGB共通 actRGB;\r
- protected CAct演奏スコア共通 actScore;\r
- protected CAct演奏ステージ失敗 actStageFailed;\r
- protected CAct演奏ステータスパネル共通 actStatusPanels;\r
- protected CAct演奏WailingBonus共通 actWailingBonus;\r
- protected CAct演奏スクロール速度 act譜面スクロール速度;\r
- protected CAct演奏DrumsチップファイアD actChipFireD; // drums only\r
- protected CAct演奏Drumsグラフ actGraph; // drums only #24074 2011.01.23 add ikanick\r
- protected CAct演奏Drumsパッド actPad; // drums only\r
-\r
- #endregion\r
-\r
- public C演奏判定ライン座標共通 演奏判定ライン座標;// #31602 2013.6.23 yyagi 表示遅延対策として、判定ラインの表示位置をずらす機能を追加する\r
-\r
- protected bool bPAUSE;\r
- protected STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
- protected STDGBVALUE<bool> b演奏にキーボードを使った;\r
- protected STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
- protected STDGBVALUE<bool> b演奏にマウスを使った;\r
- protected CCounter ctWailingチップ模様アニメ;\r
- protected STDGBVALUE<CCounter> ctチップ模様アニメ;\r
-\r
- protected E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
-\r
- protected readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
+ #region[Constants]\r
+ private readonly Eパッド[] eチャンネルtoパッド = new Eパッド[]\r
+ {\r
+ Eパッド.HH, Eパッド.SD, Eパッド.BD, Eパッド.HT,\r
+ Eパッド.LT, Eパッド.CY, Eパッド.FT, Eパッド.HHO,\r
+ Eパッド.RD, Eパッド.LC\r
+ };\r
+ private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
public static readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
- protected readonly Ech定義[] nパッド0Atoチャンネル0A = new Ech定義[]\r
+ private readonly Ech定義[] nパッド0Atoチャンネル0A = new Ech定義[]\r
{\r
Ech定義.HiHatClose,\r
Ech定義.Snare,\r
Ech定義.LeftCymbal\r
};\r
\r
- protected readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 }; // パッド画像のヒット処理用\r
- protected readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
- protected STDGBVALUE<CHitCountOfRank> nヒット数_Auto含まない;\r
- protected STDGBVALUE<CHitCountOfRank> nヒット数_Auto含む;\r
- protected STDGBVALUE<CHitCountOfRank> nヒット数_TargetGhost; // #35411 2015.08.21 chnmr0 add\r
- protected STDGBVALUE<int> nコンボ数_TargetGhost;\r
- protected STDGBVALUE<int> n最大コンボ数_TargetGhost;\r
- protected int n現在のトップChip = -1;\r
- protected int[] n最後に再生したBGMの実WAV番号 = new int[50];\r
- protected Ech定義 e最後に再生したHHのチャンネル番号;\r
- protected List<int> L最後に再生したHHの実WAV番号; // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
- protected STLANEVALUE<int> n最後に再生した実WAV番号; // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS"\r
-\r
- protected volatile Queue<STMixer> queueMixerSound; // #24820 2013.1.21 yyagi まずは単純にAdd/Removeを1個のキューでまとめて管理するやり方で設計する\r
- protected DateTime dtLastQueueOperation;\r
- protected bool bIsDirectSound;\r
- protected double db再生速度;\r
- protected bool bValidScore;\r
- protected STDGBVALUE<bool> bReverse;\r
-\r
- protected STDGBVALUE<Queue<CChip>> queWailing;\r
- protected STDGBVALUE<CChip> r現在の歓声Chip;\r
- protected CChip[] r空打ちドラムチップ = new CChip[10];\r
- protected CChip r現在の空うちギターChip;\r
- protected ST空打ち r現在の空うちドラムChip;\r
- protected CChip r現在の空うちベースChip;\r
- protected CChip r次にくるギターChip;\r
- protected CChip r次にくるベースChip;\r
- protected CTexture txWailing枠;\r
- protected CTexture txチップ;\r
- protected CTexture txヒットバー;\r
-\r
- protected CTexture tx背景;\r
-\r
- protected STDGBVALUE<int> nInputAdjustTimeMs; // #23580 2011.1.3 yyagi\r
- protected STAUTOPLAY bIsAutoPlay; // #24239 2011.1.23 yyagi\r
- protected CInvisibleChip cInvisibleChip;\r
- protected bool bUseOSTimer;\r
- protected E判定表示優先度 e判定表示優先度;\r
- protected CWailingChip共通[] cWailingChip;\r
+ private readonly int[,] nチャンネルtoX座標 = new int[,] {\r
+ { 76 * 3, 110 * 3, 145 * 3, 192 * 3, 226 * 3, 294 * 3, 260 * 3, 79 * 3, 300 * 3, 35 * 3 },\r
+ // 619 - 35 * 3= 584\r
+ {\r
+ 76 * 3 * 3 / 4 + 548,\r
+ 110 * 3 * 3 / 4 + 548,\r
+ 145 * 3 * 3 / 4 + 548,\r
+ 192 * 3 * 3 / 4 + 548,\r
+ 226 * 3 * 3 / 4 + 548,\r
+ 294 * 3 * 3 / 4 + 548,\r
+ 260 * 3 * 3 / 4 + 548,\r
+ 79 * 3 * 3 / 4 + 548,\r
+ 300 * 3 * 3 / 4 + 548,\r
+ 35 * 3 * 3 / 4 + 548\r
+ }\r
+ };\r
+ private readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 }; // パッド画像のヒット処理用\r
+ private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
+ #endregion\r
+\r
+ #region [Member_Activities]\r
+ private CAct演奏AVI actAVI;\r
+ private CAct演奏BGA actBGA;\r
+ private CAct演奏チップファイアGB actChipFireGB;\r
+ private CAct演奏Combo共通 actCombo;\r
+ private CAct演奏Danger共通 actDANGER;\r
+ private CActFIFOBlack actFI;\r
+ private CActFIFOBlack actFO;\r
+ private CActFIFOWhite actFOClear;\r
+ private CAct演奏ゲージ共通 actGauge;\r
+ private CAct演奏判定文字列共通 actJudgeString;\r
+ private CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
+ private CAct演奏レーンフラッシュGB共通 actLaneFlushGB;\r
+ private CAct演奏パネル文字列 actPanel;\r
+ private CAct演奏演奏情報 actPlayInfo;\r
+ private CAct演奏RGB共通 actRGB;\r
+ private CAct演奏スコア共通 actScore;\r
+ private CAct演奏ステージ失敗 actStageFailed;\r
+ private CAct演奏ステータスパネル共通 actStatusPanels;\r
+ private CAct演奏WailingBonus共通 actWailingBonus;\r
+ private CAct演奏スクロール速度 act譜面スクロール速度;\r
+ private CAct演奏DrumsチップファイアD actChipFireD; // drums only\r
+ private CAct演奏Drumsグラフ actGraph; // drums only #24074 2011.01.23 add ikanick\r
+ private CAct演奏Drumsパッド actPad; // drums only\r
+\r
+ #endregion\r
+\r
+ private C演奏判定ライン座標共通 演奏判定ライン座標;// #31602 2013.6.23 yyagi 表示遅延対策として、判定ラインの表示位置をずらす機能を追加する\r
+ private bool bPAUSE;\r
+ private STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
+ private STDGBVALUE<bool> b演奏にキーボードを使った;\r
+ private STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
+ private STDGBVALUE<bool> b演奏にマウスを使った;\r
+ private CCounter ctWailingチップ模様アニメ;\r
+ private STDGBVALUE<CCounter> ctチップ模様アニメ;\r
+\r
+ private E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
+\r
+ private STDGBVALUE<CHitCountOfRank> nヒット数_Auto含まない;\r
+ private STDGBVALUE<CHitCountOfRank> nヒット数_Auto含む;\r
+ private STDGBVALUE<CHitCountOfRank> nヒット数_TargetGhost; // #35411 2015.08.21 chnmr0 add\r
+ private STDGBVALUE<int> nコンボ数_TargetGhost;\r
+ private STDGBVALUE<int> n最大コンボ数_TargetGhost;\r
+ private int n現在のトップChip = -1;\r
+ private int[] n最後に再生したBGMの実WAV番号 = new int[50];\r
+ private Ech定義 e最後に再生したHHのチャンネル番号;\r
+ private List<int> L最後に再生したHHの実WAV番号; // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
+ private STLANEVALUE<int> n最後に再生した実WAV番号; // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS"\r
+\r
+ private volatile Queue<STMixer> queueMixerSound; // #24820 2013.1.21 yyagi まずは単純にAdd/Removeを1個のキューでまとめて管理するやり方で設計する\r
+ private DateTime dtLastQueueOperation;\r
+ private bool bIsDirectSound;\r
+ private double db再生速度;\r
+ private bool bValidScore;\r
+ private STDGBVALUE<bool> bReverse;\r
+\r
+ private STDGBVALUE<Queue<CChip>> queWailing;\r
+ private STDGBVALUE<CChip> r現在の歓声Chip;\r
+ private CChip[] r空打ちドラムチップ = new CChip[10];\r
+ private CChip r現在の空うちギターChip;\r
+ private ST空打ち r現在の空うちドラムChip;\r
+ private CChip r現在の空うちベースChip;\r
+ private CChip r次にくるギターChip;\r
+ private CChip r次にくるベースChip;\r
+ private CTexture txWailing枠;\r
+ private CTexture txチップ;\r
+ private CTexture txヒットバー;\r
+ private CTexture txヒットバーGB;\r
+ private CTexture tx背景;\r
+\r
+ private STDGBVALUE<int> nInputAdjustTimeMs; // #23580 2011.1.3 yyagi\r
+ private STAUTOPLAY bIsAutoPlay; // #24239 2011.1.23 yyagi\r
+ private CInvisibleChip cInvisibleChip;\r
+ private bool bUseOSTimer;\r
+ private E判定表示優先度 e判定表示優先度;\r
+ private CWailingChip共通[] cWailingChip;\r
\r
private STDGBVALUE<CScoreIni.C演奏記録> record;\r
\r
- protected CTexture txレーンフレームGB; // drums only\r
- protected bool bフィルイン中; // drums only\r
+ private CTexture txレーンフレームGB; // drums only\r
+ private bool bフィルイン中; // drums only\r
+\r
+ // Constructor\r
+ public CStage演奏画面共通()\r
+ {\r
+ base.eステージID = CStage.Eステージ.演奏;\r
+ base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+ base.b活性化してない = true;\r
+ base.list子Activities.Add(this.actPad = new CAct演奏Drumsパッド());\r
+ base.list子Activities.Add(this.actChipFireD = new CAct演奏DrumsチップファイアD());\r
+ base.list子Activities.Add(this.actChipFireGB = new CAct演奏DrumsチップファイアGB());\r
+ base.list子Activities.Add(this.actStageFailed = new CAct演奏ステージ失敗());\r
+ base.list子Activities.Add(this.actDANGER = new CAct演奏Danger共通());\r
+ base.list子Activities.Add(this.actAVI = new CAct演奏AVI());\r
+ base.list子Activities.Add(this.actBGA = new CAct演奏BGA());\r
+ base.list子Activities.Add(this.actPanel = new CAct演奏パネル文字列());\r
+ base.list子Activities.Add(this.act譜面スクロール速度 = new CAct演奏スクロール速度());\r
+ base.list子Activities.Add(this.actStatusPanels = new CAct演奏ステータスパネル共通());\r
+ base.list子Activities.Add(this.actWailingBonus = new CAct演奏WailingBonus共通());\r
+ base.list子Activities.Add(this.actScore = new CAct演奏スコア共通());\r
+ base.list子Activities.Add(this.actRGB = new CAct演奏RGB共通());\r
+ base.list子Activities.Add(this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD());\r
+ base.list子Activities.Add(this.actLaneFlushGB = new CAct演奏レーンフラッシュGB共通());\r
+ base.list子Activities.Add(this.actJudgeString = new CAct演奏判定文字列共通());\r
+ base.list子Activities.Add(this.actGauge = new CAct演奏ゲージ共通());\r
+ base.list子Activities.Add(this.actGraph = new CAct演奏Drumsグラフ()); // #24074 2011.01.23 add ikanick\r
+ base.list子Activities.Add(this.actCombo = new CAct演奏Combo共通());\r
+ base.list子Activities.Add(this.actChipFireGB = new CAct演奏Guitarチップファイア());\r
+ base.list子Activities.Add(this.actPlayInfo = new CAct演奏演奏情報()); \r
+ base.list子Activities.Add(this.actFI = new CActFIFOBlack());\r
+ base.list子Activities.Add(this.actFO = new CActFIFOBlack());\r
+ base.list子Activities.Add(this.actFOClear = new CActFIFOWhite());\r
+ }\r
\r
// メソッド\r
#region [ PlayRecordSave ]\r
// CStage 実装\r
public override void On活性化()\r
{\r
- this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
- this.n現在のトップChip = (CDTXMania.Instance.DTX.listChip.Count > 0) ? 0 : -1;\r
- this.L最後に再生したHHの実WAV番号 = new List<int>(16);\r
- this.e最後に再生したHHのチャンネル番号 = 0;\r
- this.n最後に再生した実WAV番号.Guitar = -1;\r
- this.n最後に再生した実WAV番号.Bass = -1;\r
- for (int i = 0; i < 50; i++)\r
- {\r
- this.n最後に再生したBGMの実WAV番号[i] = -1;\r
- }\r
- this.r次にくるギターChip = null;\r
- this.r次にくるベースChip = null;\r
- for (int j = 0; j < 10; j++)\r
- {\r
- this.r現在の空うちドラムChip[j] = null;\r
- }\r
- this.r現在の空うちギターChip = null;\r
- this.r現在の空うちベースChip = null;\r
- cInvisibleChip = new CInvisibleChip(CDTXMania.Instance.ConfigIni.nChipDisplayTimeMs, CDTXMania.Instance.ConfigIni.nChipFadeoutTimeMs);\r
- this.演奏判定ライン座標 = new C演奏判定ライン座標共通();\r
- this.n最大コンボ数_TargetGhost = new STDGBVALUE<int>(); // #35411 2015.08.21 chnmr0 add\r
- for (int k = 0; k < 3; k++)\r
+ if (base.b活性化してない)\r
{\r
- //for ( int n = 0; n < 5; n++ )\r
- //{\r
- this.nヒット数_Auto含まない[k] = new CHitCountOfRank();\r
- this.nヒット数_Auto含む[k] = new CHitCountOfRank();\r
- this.nヒット数_TargetGhost[k] = new CHitCountOfRank(); // #35411 2015.08.21 chnmr0 add\r
- //}\r
- this.queWailing[k] = new Queue<CChip>();\r
- this.r現在の歓声Chip[k] = null;\r
- cInvisibleChip.eInvisibleMode[k] = CDTXMania.Instance.ConfigIni.eInvisible[k];\r
- if (CDTXMania.Instance.DTXVmode.Enabled)\r
- {\r
- CDTXMania.Instance.ConfigIni.n譜面スクロール速度[k] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[k];\r
- }\r
+ this.bフィルイン中 = false;\r
+ this.dtLastQueueOperation = DateTime.MinValue;\r
+ this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
+ this.n現在のトップChip = (CDTXMania.Instance.DTX.listChip.Count > 0) ? 0 : -1;\r
+ this.L最後に再生したHHの実WAV番号 = new List<int>(16);\r
+ this.e最後に再生したHHのチャンネル番号 = 0;\r
+ this.n最後に再生した実WAV番号.Guitar = -1;\r
+ this.n最後に再生した実WAV番号.Bass = -1;\r
+ for (int i = 0; i < 50; i++)\r
+ {\r
+ this.n最後に再生したBGMの実WAV番号[i] = -1;\r
+ }\r
+ this.r次にくるギターChip = null;\r
+ this.r次にくるベースChip = null;\r
+ for (int j = 0; j < 10; j++)\r
+ {\r
+ this.r現在の空うちドラムChip[j] = null;\r
+ }\r
+ this.r現在の空うちギターChip = null;\r
+ this.r現在の空うちベースChip = null;\r
+ cInvisibleChip = new CInvisibleChip(CDTXMania.Instance.ConfigIni.nChipDisplayTimeMs, CDTXMania.Instance.ConfigIni.nChipFadeoutTimeMs);\r
+ this.演奏判定ライン座標 = new C演奏判定ライン座標共通();\r
+ this.n最大コンボ数_TargetGhost = new STDGBVALUE<int>(); // #35411 2015.08.21 chnmr0 add\r
+ for (int k = 0; k < 3; k++)\r
+ {\r
+ this.nヒット数_Auto含まない[k] = new CHitCountOfRank();\r
+ this.nヒット数_Auto含む[k] = new CHitCountOfRank();\r
+ this.nヒット数_TargetGhost[k] = new CHitCountOfRank(); // #35411 2015.08.21 chnmr0 add\r
+ this.queWailing[k] = new Queue<CChip>();\r
+ this.r現在の歓声Chip[k] = null;\r
+ cInvisibleChip.eInvisibleMode[k] = CDTXMania.Instance.ConfigIni.eInvisible[k];\r
+ if (CDTXMania.Instance.DTXVmode.Enabled)\r
+ {\r
+ CDTXMania.Instance.ConfigIni.n譜面スクロール速度[k] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[k];\r
+ }\r
\r
- this.nInputAdjustTimeMs[k] = CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[k]; // #23580 2011.1.3 yyagi\r
- // 2011.1.7 ikanick 修正\r
- this.演奏判定ライン座標.n判定位置[k] = CDTXMania.Instance.ConfigIni.e判定位置[k];//#31602 2013.6.23 yyagi\r
- this.演奏判定ライン座標.nJudgeLinePosY_delta[k] = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[k];\r
- this.bReverse[k] = CDTXMania.Instance.ConfigIni.bReverse[k];\r
+ this.nInputAdjustTimeMs[k] = CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[k]; // #23580 2011.1.3 yyagi\r
+ // 2011.1.7 ikanick 修正\r
+ this.演奏判定ライン座標.n判定位置[k] = CDTXMania.Instance.ConfigIni.e判定位置[k];//#31602 2013.6.23 yyagi\r
+ this.演奏判定ライン座標.nJudgeLinePosY_delta[k] = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[k];\r
+ this.bReverse[k] = CDTXMania.Instance.ConfigIni.bReverse[k];\r
\r
- }\r
- actCombo.演奏判定ライン座標 = 演奏判定ライン座標;\r
- for (int i = 0; i < 3; i++)\r
- {\r
- this.b演奏にキーボードを使った[i] = false;\r
- this.b演奏にジョイパッドを使った[i] = false;\r
- this.b演奏にMIDI入力を使った[i] = false;\r
- this.b演奏にマウスを使った[i] = false;\r
- }\r
- cInvisibleChip.Reset();\r
- base.On活性化();\r
- this.tステータスパネルの選択();\r
- this.tパネル文字列の設定();\r
+ }\r
+ actCombo.演奏判定ライン座標 = 演奏判定ライン座標;\r
+ for (int i = 0; i < 3; i++)\r
+ {\r
+ this.b演奏にキーボードを使った[i] = false;\r
+ this.b演奏にジョイパッドを使った[i] = false;\r
+ this.b演奏にMIDI入力を使った[i] = false;\r
+ this.b演奏にマウスを使った[i] = false;\r
+ }\r
+ cInvisibleChip.Reset();\r
+ base.On活性化();\r
+ this.tステータスパネルの選択();\r
+ this.tパネル文字列の設定();\r
\r
- this.bIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay; // #24239 2011.1.23 yyagi\r
- actGauge.Init(CDTXMania.Instance.ConfigIni.nRisky); // #23559 2011.7.28 yyagi\r
- e判定表示優先度 = CDTXMania.Instance.ConfigIni.e判定表示優先度;\r
+ this.bIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay; // #24239 2011.1.23 yyagi\r
+ actGauge.Init(CDTXMania.Instance.ConfigIni.nRisky); // #23559 2011.7.28 yyagi\r
+ e判定表示優先度 = CDTXMania.Instance.ConfigIni.e判定表示優先度;\r
\r
- CDTXMania.Instance.Skin.tRemoveMixerAll(); // 効果音のストリームをミキサーから解除しておく\r
+ CDTXMania.Instance.Skin.tRemoveMixerAll(); // 効果音のストリームをミキサーから解除しておく\r
\r
- queueMixerSound = new Queue<STMixer>(64);\r
- bIsDirectSound = (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() == "DirectSound");\r
- bUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
- this.bPAUSE = false;\r
- if (CDTXMania.Instance.DTXVmode.Enabled)\r
- {\r
- db再生速度 = CDTXMania.Instance.DTX.dbDTXVPlaySpeed;\r
- CDTXMania.Instance.ConfigIni.n演奏速度 = (int)(CDTXMania.Instance.DTX.dbDTXVPlaySpeed * 20 + 0.5);\r
- }\r
- else\r
- {\r
- db再生速度 = ((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0;\r
- }\r
- bValidScore = (CDTXMania.Instance.DTXVmode.Enabled) ? false : true;\r
+ queueMixerSound = new Queue<STMixer>(64);\r
+ bIsDirectSound = (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() == "DirectSound");\r
+ bUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
+ this.bPAUSE = false;\r
+ if (CDTXMania.Instance.DTXVmode.Enabled)\r
+ {\r
+ db再生速度 = CDTXMania.Instance.DTX.dbDTXVPlaySpeed;\r
+ CDTXMania.Instance.ConfigIni.n演奏速度 = (int)(CDTXMania.Instance.DTX.dbDTXVPlaySpeed * 20 + 0.5);\r
+ }\r
+ else\r
+ {\r
+ db再生速度 = ((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0;\r
+ }\r
+ bValidScore = (CDTXMania.Instance.DTXVmode.Enabled) ? false : true;\r
\r
- cWailingChip = new CWailingChip共通[3]; // 0:未使用, 1:Gutiar, 2:Bass\r
- if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
- {\r
- cWailingChip[1] = new CWailngChip_Guitar_Drum画面(ref 演奏判定ライン座標);\r
- cWailingChip[2] = new CWailngChip_Bass_Drum画面(ref 演奏判定ライン座標);\r
- }\r
- else\r
- {\r
- cWailingChip[1] = new CWailngChip_Guitar_GR画面(ref 演奏判定ライン座標);\r
- cWailingChip[2] = new CWailngChip_Bass_GR画面(ref 演奏判定ライン座標);\r
- }\r
+ cWailingChip = new CWailingChip共通[3]; // 0:未使用, 1:Gutiar, 2:Bass\r
+ if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+ {\r
+ cWailingChip[1] = new CWailngChip_Guitar_Drum画面(ref 演奏判定ライン座標);\r
+ cWailingChip[2] = new CWailngChip_Bass_Drum画面(ref 演奏判定ライン座標);\r
+ }\r
+ else\r
+ {\r
+ cWailingChip[1] = new CWailngChip_Guitar_GR画面(ref 演奏判定ライン座標);\r
+ cWailingChip[2] = new CWailngChip_Bass_GR画面(ref 演奏判定ライン座標);\r
+ }\r
\r
- #region [ 演奏開始前にmixer登録しておくべきサウンド(開幕してすぐに鳴らすことになるチップ音)を登録しておく ]\r
- foreach (CChip pChip in CDTXMania.Instance.DTX.listChip)\r
- {\r
- // Debug.WriteLine( "CH=" + pChip.nチャンネル番号.ToString( "x2" ) + ", 整数値=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms );\r
- if (pChip.n発声時刻ms <= 0)\r
+ #region [ 演奏開始前にmixer登録しておくべきサウンド(開幕してすぐに鳴らすことになるチップ音)を登録しておく ]\r
+ foreach (CChip pChip in CDTXMania.Instance.DTX.listChip)\r
{\r
- if (pChip.eチャンネル番号 == Ech定義.MixerAdd)\r
+ // Debug.WriteLine( "CH=" + pChip.nチャンネル番号.ToString( "x2" ) + ", 整数値=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms );\r
+ if (pChip.n発声時刻ms <= 0)\r
{\r
- pChip.bHit = true;\r
- // Trace.TraceInformation( "first [DA] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms );\r
- if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))\r
+ if (pChip.eチャンネル番号 == Ech定義.MixerAdd)\r
{\r
- CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
- for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPoliphonicSounds; i++)\r
+ pChip.bHit = true;\r
+ // Trace.TraceInformation( "first [DA] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms );\r
+ if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))\r
{\r
- if (wc.rSound[i] != null)\r
+ CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
+ for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPoliphonicSounds; i++)\r
{\r
- CDTXMania.Instance.Sound管理.AddMixer(wc.rSound[i], db再生速度, pChip.b演奏終了後も再生が続くチップである);\r
- //AddMixer( wc.rSound[ i ] ); // 最初はqueueを介さず直接ミキサー登録する\r
+ if (wc.rSound[i] != null)\r
+ {\r
+ CDTXMania.Instance.Sound管理.AddMixer(wc.rSound[i], db再生速度, pChip.b演奏終了後も再生が続くチップである);\r
+ //AddMixer( wc.rSound[ i ] ); // 最初はqueueを介さず直接ミキサー登録する\r
+ }\r
}\r
}\r
}\r
}\r
+ else\r
+ {\r
+ break;\r
+ }\r
}\r
- else\r
+ #endregion\r
+\r
+ if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass) // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
{\r
- break;\r
+ CDTXMania.Instance.DTX.SwapGuitarBassInfos();\r
}\r
- }\r
- #endregion\r
\r
- if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass) // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
- {\r
- CDTXMania.Instance.DTX.SwapGuitarBassInfos();\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ // MODIFY_BEGIN #25398 2011.06.07 FROM\r
+ if (CDTXMania.Instance.bコンパクトモード)\r
+ {\r
+ var score = new Cスコア();\r
+ CDTXMania.Instance.Songs管理.tScoreIniを読み込んで譜面情報を設定する(CDTXMania.Instance.strコンパクトモードファイル + ".score.ini", ref score);\r
+ this.actGraph.dbグラフ値目標_渡 = score.譜面情報.最大スキル[0];\r
+ }\r
+ else\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+ {\r
+ this.actGraph.dbグラフ値目標_渡 = CDTXMania.Instance.stage選曲.r確定されたスコア.譜面情報.最大スキル[0]; // #24074 2011.01.23 add ikanick\r
+\r
+ // #35411 2015.08.21 chnmr0 add\r
+ // ゴースト利用可のなとき、0で初期化\r
+ if (CDTXMania.Instance.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE)\r
+ {\r
+ if (CDTXMania.Instance.DTX.listTargetGhsotLag[(int)E楽器パート.DRUMS] != null)\r
+ {\r
+ this.actGraph.dbグラフ値目標_渡 = 0;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ // MODIFY_END #25398\r
+ }\r
}\r
}\r
public override void On非活性化()\r
{\r
- this.L最後に再生したHHの実WAV番号.Clear(); // #23921 2011.1.4 yyagi\r
- this.L最後に再生したHHの実WAV番号 = null; //\r
- for (int i = 0; i < 3; i++)\r
+ if (base.b活性化してる)\r
{\r
- this.queWailing[i].Clear();\r
- this.queWailing[i] = null;\r
+ this.L最後に再生したHHの実WAV番号.Clear(); // #23921 2011.1.4 yyagi\r
+ this.L最後に再生したHHの実WAV番号 = null; //\r
+ for (int i = 0; i < 3; i++)\r
+ {\r
+ this.queWailing[i].Clear();\r
+ this.queWailing[i] = null;\r
+ }\r
+ this.ctWailingチップ模様アニメ = null;\r
+ this.ctチップ模様アニメ.Drums = null;\r
+ this.ctチップ模様アニメ.Guitar = null;\r
+ this.ctチップ模様アニメ.Bass = null;\r
+ queueMixerSound.Clear();\r
+ queueMixerSound = null;\r
+ cInvisibleChip.Dispose();\r
+ cInvisibleChip = null;\r
+ base.On非活性化();\r
}\r
- this.ctWailingチップ模様アニメ = null;\r
- this.ctチップ模様アニメ.Drums = null;\r
- this.ctチップ模様アニメ.Guitar = null;\r
- this.ctチップ模様アニメ.Bass = null;\r
- queueMixerSound.Clear();\r
- queueMixerSound = null;\r
- cInvisibleChip.Dispose();\r
- cInvisibleChip = null;\r
- // GCSettings.LatencyMode = this.gclatencymode;\r
- base.On非活性化();\r
}\r
public override void OnManagedリソースの作成()\r
{\r
- if (!base.b活性化してない)\r
+ if (base.b活性化してる)\r
{\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.txチップ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chips.png"));\r
+ this.txヒットバー = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar.png"));\r
+ this.txヒットバーGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar guitar.png"));\r
+ this.txレーンフレームGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums lane parts guitar.png"));\r
+ if (this.txレーンフレームGB != null)\r
+ {\r
+ this.txレーンフレームGB.n透明度 = 0xff - CDTXMania.Instance.ConfigIni.n背景の透過度;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ this.txチップ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar chips.png"));\r
+ this.txヒットバー = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar hit-bar.png"));\r
+ }\r
+\r
this.t背景テクスチャの生成();\r
\r
this.txWailing枠 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay wailing cursor.png"));\r
\r
base.OnManagedリソースの作成();\r
}\r
+\r
}\r
public override void OnManagedリソースの解放()\r
{\r
- if (!base.b活性化してない)\r
+ if (base.b活性化してる)\r
{\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ TextureFactory.tテクスチャの解放(ref this.txヒットバー);\r
+ TextureFactory.tテクスチャの解放(ref this.txヒットバーGB);\r
+ TextureFactory.tテクスチャの解放(ref this.txチップ);\r
+ TextureFactory.tテクスチャの解放(ref this.txレーンフレームGB);\r
+ }\r
+ else\r
+ {\r
+ TextureFactory.tテクスチャの解放(ref this.txチップ);\r
+ TextureFactory.tテクスチャの解放(ref this.txヒットバー);\r
+ }\r
TextureFactory.tテクスチャの解放(ref this.tx背景);\r
\r
TextureFactory.tテクスチャの解放(ref this.txWailing枠);\r
}\r
public override int On進行描画()\r
{\r
- if (!base.b活性化してない)\r
+ if (base.b活性化してる)\r
{\r
bool bIsFinishedPlaying = false;\r
bool bIsFinishedFadeout = false;\r
}\r
\r
#region [ stage failed ]\r
- if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ if (CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効 && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
{\r
- if (CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効 && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
- {\r
- bool failedCondition = false;\r
+ bool failedCondition = false;\r
\r
- if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
- {\r
- bool bFailedGuitar = this.actGauge.IsFailed(E楽器パート.GUITAR); // #23630 2011.11.12 yyagi: deleted AutoPlay condition: not to be failed at once\r
- bool bFailedBass = this.actGauge.IsFailed(E楽器パート.BASS); // #23630\r
- bool bFailedNoChips = (!CDTXMania.Instance.DTX.bチップがある.Guitar && !CDTXMania.Instance.DTX.bチップがある.Bass); // #25216 2011.5.21 yyagi add condition\r
- failedCondition = bFailedGuitar || bFailedBass || bFailedNoChips; // #25216 2011.5.21 yyagi: changed codition: && -> ||\r
- }\r
- else\r
- {\r
- failedCondition = this.actGauge.IsFailed(E楽器パート.DRUMS);\r
- }\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ bool bFailedGuitar = this.actGauge.IsFailed(E楽器パート.GUITAR); // #23630 2011.11.12 yyagi: deleted AutoPlay condition: not to be failed at once\r
+ bool bFailedBass = this.actGauge.IsFailed(E楽器パート.BASS); // #23630\r
+ bool bFailedNoChips = (!CDTXMania.Instance.DTX.bチップがある.Guitar && !CDTXMania.Instance.DTX.bチップがある.Bass); // #25216 2011.5.21 yyagi add condition\r
+ failedCondition = bFailedGuitar || bFailedBass || bFailedNoChips; // #25216 2011.5.21 yyagi: changed codition: && -> ||\r
+ }\r
+ else\r
+ {\r
+ failedCondition = this.actGauge.IsFailed(E楽器パート.DRUMS);\r
+ }\r
\r
- if (failedCondition)\r
- {\r
- this.actStageFailed.Start();\r
- CDTXMania.Instance.DTX.t全チップの再生停止();\r
- base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;\r
- }\r
+ if (failedCondition)\r
+ {\r
+ this.actStageFailed.Start();\r
+ CDTXMania.Instance.DTX.t全チップの再生停止();\r
+ base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;\r
}\r
}\r
#endregion\r
this.t進行描画_スコア();\r
this.t進行描画_BGA();\r
this.t進行描画_ステータスパネル();\r
-\r
- this.t進行描画_ギターベース判定ライン();\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.t進行描画_ギターベースフレーム();\r
+ }\r
this.t進行描画_レーンフラッシュGB();\r
+ this.t進行描画_ギターベース判定ライン();\r
this.t進行描画_ゲージ();\r
-\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.t進行描画_グラフ(); // #24074 2011.01.23 add ikanick\r
+ this.t進行描画_レーンフラッシュD();\r
+ }\r
this.t進行描画_DANGER();\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.t進行描画_判定ライン();\r
+ }\r
+ if(this.e判定表示優先度 == E判定表示優先度.Chipより下)\r
+ {\r
+ this.t進行描画_RGBボタン();\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.t進行描画_判定文字列1_通常位置指定の場合();\r
+ }\r
+ else\r
+ {\r
+ this.t進行描画_判定文字列();\r
+ }\r
+ this.t進行描画_コンボ();\r
+ }\r
this.t進行描画_WailingBonus();\r
this.t進行描画_譜面スクロール速度();\r
this.t進行描画_チップアニメ();\r
bIsFinishedPlaying = this.t進行描画_チップ(CDTXMania.Instance.ConfigIni.bギタレボモード ? E楽器パート.GUITAR : E楽器パート.DRUMS);\r
this.t進行描画_演奏情報();\r
- this.t進行描画_RGBボタン();\r
- if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- this.t進行描画_判定文字列();\r
+ this.t進行描画_ドラムパッド();\r
}\r
- else\r
+ if (this.e判定表示優先度 == E判定表示優先度.Chipより上)\r
{\r
- this.t進行描画_判定文字列1_通常位置指定の場合();\r
+ this.t進行描画_RGBボタン();\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.t進行描画_判定文字列1_通常位置指定の場合();\r
+ }\r
+ else\r
+ {\r
+ this.t進行描画_判定文字列();\r
+ }\r
+ this.t進行描画_コンボ();\r
+ }\r
+ if(!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ this.t進行描画_判定文字列2_判定ライン上指定の場合();\r
}\r
- this.t進行描画_コンボ();\r
this.t進行描画_Wailing枠();\r
- this.t進行描画_チップファイアGB();\r
- this.t進行描画_STAGEFAILED();\r
-\r
if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- this.t進行描画_ギターベースフレーム();\r
- this.t進行描画_判定文字列2_判定ライン上指定の場合();\r
this.t進行描画_チップファイアD();\r
- this.t進行描画_ドラムパッド();\r
- this.t進行描画_ギターベース判定ライン();\r
- this.t進行描画_判定ライン();\r
- this.t進行描画_レーンフラッシュD();\r
- this.t進行描画_グラフ(); // #24074 2011.01.23 add ikanick\r
}\r
+ this.t進行描画_チップファイアGB();\r
+ this.t進行描画_STAGEFAILED();\r
\r
bIsFinishedFadeout = this.t進行描画_フェードイン_アウト();\r
if (bIsFinishedPlaying && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
}\r
break;\r
}\r
- }\r
\r
- if ((pChip.e楽器パート == E楽器パート.DRUMS && CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay) ||\r
- pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS)\r
- {\r
- // Dr. : 演奏したレーンだけコンボを増やす\r
+ bool incrementCombo = false;\r
+ \r
+ if ( pChip.e楽器パート == E楽器パート.DRUMS )\r
+ {\r
+ if( CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay)\r
+ {\r
+ // Dr. : 演奏したレーンだけコンボを増やす\r
+ incrementCombo = true;\r
+ }\r
+ }\r
+ else if( pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS )\r
+ {\r
+ incrementCombo = true;\r
+ }\r
+\r
switch (eJudgeResult)\r
{\r
case E判定.Perfect:\r
case E判定.Great:\r
case E判定.Good:\r
- this.actCombo.n現在のコンボ数.Drums++;\r
+ this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート]++;\r
break;\r
\r
default:\r
- this.actCombo.n現在のコンボ数.Drums = 0;\r
+ this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート] = 0;\r
break;\r
}\r
}\r
\r
+ \r
+\r
if ((!bPChipIsAutoPlay && (pChip.e楽器パート != E楽器パート.UNKNOWN)) && (eJudgeResult != E判定.Miss) && (eJudgeResult != E判定.Bad))\r
{\r
int nCombos = this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート];\r
\r
private void t進行描画_DANGER()\r
{\r
+ STDGBVALUE<bool> danger = new STDGBVALUE<bool>();\r
if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- this.actDANGER.t進行描画(false, this.actGauge.IsDanger(E楽器パート.GUITAR), this.actGauge.IsDanger(E楽器パート.BASS));// #23631 2011.4.19 yyagi\r
+ danger.Guitar = actGauge.IsDanger(E楽器パート.GUITAR);\r
+ danger.Bass = actGauge.IsDanger(E楽器パート.BASS);\r
+ this.actDANGER.t進行描画(danger); // #23631 2011.4.19 yyagi\r
}\r
else\r
{\r
- this.actDANGER.t進行描画(this.actGauge.IsDanger(E楽器パート.DRUMS), false, false);\r
+ danger.Drums = actGauge.IsDanger(E楽器パート.DRUMS);\r
+ this.actDANGER.t進行描画(danger);\r
}\r
}\r
protected void t進行描画_MIDIBGM()\r
}\r
else if (pChip.bDrums可視チップ && pChip.b空打ちチップである)\r
{\r
- this.t進行描画_チップ_空打ち音設定_ドラム(ref pChip);\r
+ if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+ {\r
+ pChip.bHit = true;\r
+ if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+ {\r
+ this.r現在の空うちドラムChip[(int)this.eチャンネルtoパッド[pChip.eチャンネル番号 - Ech定義.HiHatClose]] = pChip;\r
+ }\r
+ }\r
}\r
else if (pChip.bDrums可視チップ_LP_LBD含まない)\r
{\r
configIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ?\r
105 : 619,\r
configIni.bReverse.Drums ?\r
- //(int) ( ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) * Scale.Y ) :\r
- //(int) ( ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ) * Scale.Y ),\r
124 + pChip.nバーからの距離dot.Drums : 947 - pChip.nバーからの距離dot.Drums,\r
new Rectangle(\r
0,\r
CDTXMania.Instance.ConfigIni.ドラムコンボ文字の表示位置 = Eドラムコンボ文字の表示位置.OFF;\r
}\r
\r
- protected abstract void t進行描画_チップ_ドラムス(ref CChip pChip);\r
- protected abstract void t進行描画_チップ_ギターベース(ref CChip pChip, E楽器パート inst);\r
/// <summary>\r
/// ギター・ベースのチップ表示\r
/// </summary>\r
pChip.bHit = true;\r
}\r
\r
- protected abstract void t進行描画_チップ_フィルイン(ref CChip pChip);\r
protected void t進行描画_チップ_小節線(ref CChip pChip)\r
{\r
CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
}\r
}\r
\r
- protected abstract void t進行描画_チップ_空打ち音設定_ドラム(ref CChip pChip);\r
protected void t進行描画_チップアニメ()\r
{\r
for (int i = 0; i < 3; i++) // 0=drums, 1=guitar, 2=bass\r
this.act譜面スクロール速度.On進行描画();\r
}\r
\r
- protected abstract void t背景テクスチャの生成();\r
- protected void t背景テクスチャの生成(string DefaultBgFilename, string DefaultLaneFilename, Rectangle bgrect, string bgfilename)\r
+ private void t背景テクスチャの生成()\r
{\r
+ string DefaultBgFilename;\r
+ string DefaultLaneFilename;\r
+ Rectangle bgrect;\r
+ string bgfilename = "";\r
+\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ bgrect = new Rectangle((int)(181 * Scale.X), (int)(50 * Scale.Y), (int)(278 * Scale.X), (int)(355 * Scale.Y));\r
+ DefaultBgFilename = @"Graphics\ScreenPlayGuitar background.png";\r
+ DefaultLaneFilename = "";\r
+ string BACKGROUND = null;\r
+ if ((CDTXMania.Instance.DTX.BACKGROUND_GR != null) && (CDTXMania.Instance.DTX.BACKGROUND_GR.Length > 0))\r
+ {\r
+ BACKGROUND = CDTXMania.Instance.DTX.BACKGROUND_GR;\r
+ }\r
+ else if ((CDTXMania.Instance.DTX.BACKGROUND != null) && (CDTXMania.Instance.DTX.BACKGROUND.Length > 0))\r
+ {\r
+ BACKGROUND = CDTXMania.Instance.DTX.BACKGROUND;\r
+ }\r
+ if ((BACKGROUND != null) && (BACKGROUND.Length > 0))\r
+ {\r
+ bgfilename = CDTXMania.Instance.DTX.strフォルダ名 + BACKGROUND;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left)\r
+ {\r
+ bgrect = new Rectangle((int)(338 * Scale.X), (int)(57 * Scale.Y), (int)(278 * 2), (int)(355 * 2));\r
+ }\r
+ else\r
+ {\r
+ bgrect = new Rectangle(619 + 682, (int)(57 * Scale.Y), (int)(278 * 2), (int)(355 * 2));\r
+ }\r
+ DefaultBgFilename = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ?\r
+ @"Graphics\ScreenPlayDrums background.png" :\r
+ @"Graphics\ScreenPlayDrums-background-center.png";\r
+ DefaultLaneFilename = ""; // @"Graphics\ScreenPlayDrums_Lane_parts_drums.png";\r
+ if (((CDTXMania.Instance.DTX.BACKGROUND != null) && (CDTXMania.Instance.DTX.BACKGROUND.Length > 0)) &&\r
+ !CDTXMania.Instance.ConfigIni.bストイックモード)\r
+ {\r
+ bgfilename = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.BACKGROUND;\r
+ }\r
+ }\r
+\r
// Default...: レーン等があるレイヤー bgfilename: DTXファイルで指定する背景\r
Bitmap image = null;\r
bool bSuccessLoadDTXbgfile = false;\r
\r
int[] offsetX = new int[2] { 96, 506 };\r
int nLanePosition = (int)CDTXMania.Instance.ConfigIni.eドラムレーン表示位置;\r
- //int nLanePosition = (int) Eドラムレーン表示位置.Left;\r
\r
if (bgfilename != null && File.Exists(bgfilename) && !CDTXMania.Instance.DTX.bチップがある.Movie)\r
{\r
ImageAttributes imageAttr = new ImageAttributes();\r
imageAttr.SetColorMatrix(newColorMatrix);\r
graphics3.DrawImage(bitmap3, new Rectangle(0, 0, SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height), 0, 0, SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height, GraphicsUnit.Pixel, imageAttr);\r
- // graphics3.DrawImage( bitmap3, bgrect, bgrect.X, bgrect.Y, bgrect.Width, bgrect.Height, GraphicsUnit.Pixel );\r
bitmap3.Dispose();\r
#endregion\r
\r
image.Dispose();\r
}\r
\r
- protected virtual void t入力処理_ギター()\r
- {\r
- t入力処理_ギターベース(E楽器パート.GUITAR);\r
- }\r
- protected virtual void t入力処理_ベース()\r
- {\r
- t入力処理_ギターベース(E楽器パート.BASS);\r
- }\r
-\r
-\r
protected virtual void t入力処理_ギターベース(E楽器パート inst)\r
{\r
int indexInst = (int)inst;\r
this.actRGB.Push(B);\r
}\r
}\r
+\r
+ int pressingR = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.R) ? 4 : 0;\r
+ this.t入力メソッド記憶(inst);\r
+ int pressingG = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.G) ? 2 : 0;\r
+ this.t入力メソッド記憶(inst);\r
+ int pressingB = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.B) ? 1 : 0;\r
+ this.t入力メソッド記憶(inst);\r
+ int pressingRGB = pressingR | pressingG | pressingB;\r
+ if (pressingR != 0)\r
{\r
- int pressingR = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.R) ? 4 : 0;\r
- this.t入力メソッド記憶(inst);\r
- int pressingG = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.G) ? 2 : 0;\r
- this.t入力メソッド記憶(inst);\r
- int pressingB = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.B) ? 1 : 0;\r
- this.t入力メソッド記憶(inst);\r
- int pressingRGB = pressingR | pressingG | pressingB;\r
- if (pressingR != 0)\r
- {\r
- this.actLaneFlushGB.Start(R);\r
- this.actRGB.Push(R);\r
- }\r
- if (pressingG != 0)\r
- {\r
- this.actLaneFlushGB.Start(G);\r
- this.actRGB.Push(G);\r
- }\r
- if (pressingB != 0)\r
- {\r
- this.actLaneFlushGB.Start(B);\r
- this.actRGB.Push(B);\r
- }\r
- // auto pickだとここから先に行かないので注意\r
- List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Pick);\r
- if ((events != null) && (events.Count > 0))\r
+ this.actLaneFlushGB.Start(R);\r
+ this.actRGB.Push(R);\r
+ }\r
+ if (pressingG != 0)\r
+ {\r
+ this.actLaneFlushGB.Start(G);\r
+ this.actRGB.Push(G);\r
+ }\r
+ if (pressingB != 0)\r
+ {\r
+ this.actLaneFlushGB.Start(B);\r
+ this.actRGB.Push(B);\r
+ }\r
+ // auto pickだとここから先に行かないので注意\r
+ List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Pick);\r
+ if ((events != null) && (events.Count > 0))\r
+ {\r
+ foreach (STInputEvent eventPick in events)\r
{\r
- foreach (STInputEvent eventPick in events)\r
+ if (!eventPick.b押された)\r
+ {\r
+ continue;\r
+ }\r
+ this.t入力メソッド記憶(inst);\r
+ long nTime = eventPick.nTimeStamp - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
+ Ech定義 chWailingSound = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_WailingSound : Ech定義.Bass_WailingSound;\r
+ CChip pChip = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingSound, this.nInputAdjustTimeMs[indexInst], CDTXMania.Instance.nPoor範囲ms + 1); // E楽器パート.GUITARなチップ全てにヒットする\r
+ E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs[indexInst]);\r
+ //Trace.TraceInformation("ch={0:x2}, mask1={1:x1}, mask2={2:x2}", pChip.nチャンネル番号, ( pChip.nチャンネル番号 & ~nAutoMask ) & 0x0F, ( flagRGB & ~nAutoMask) & 0x0F );\r
+ if (\r
+ (pChip != null) &&\r
+ ((((int)pChip.eチャンネル番号 & ~nAutoMask) & 0x0F) == ((pressingRGB & ~nAutoMask) & 0x0F)) &&\r
+ (e判定 != E判定.Miss))\r
{\r
- if (!eventPick.b押された)\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
+ bool bSuccessOPEN = bChipIsO && (autoR || pressingR == 0) && (autoG || pressingG == 0) && (autoB || pressingB == 0);\r
+ if ((bChipHasR && (autoR || pressingR != 0)) || bSuccessOPEN)\r
{\r
- continue;\r
+ this.actChipFireGB.Start(R, 演奏判定ライン座標);\r
}\r
- this.t入力メソッド記憶(inst);\r
- long nTime = eventPick.nTimeStamp - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
- Ech定義 chWailingSound = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_WailingSound : Ech定義.Bass_WailingSound;\r
- CChip pChip = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingSound, this.nInputAdjustTimeMs[indexInst], CDTXMania.Instance.nPoor範囲ms + 1); // E楽器パート.GUITARなチップ全てにヒットする\r
- E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs[indexInst]);\r
- //Trace.TraceInformation("ch={0:x2}, mask1={1:x1}, mask2={2:x2}", pChip.nチャンネル番号, ( pChip.nチャンネル番号 & ~nAutoMask ) & 0x0F, ( flagRGB & ~nAutoMask) & 0x0F );\r
- if (\r
- (pChip != null) &&\r
- ((((int)pChip.eチャンネル番号 & ~nAutoMask) & 0x0F) == ((pressingRGB & ~nAutoMask) & 0x0F)) &&\r
- (e判定 != E判定.Miss))\r
+ if ((bChipHasG && (autoG || pressingG != 0)) || bSuccessOPEN)\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
- bool bSuccessOPEN = bChipIsO && (autoR || pressingR == 0) && (autoG || pressingG == 0) && (autoB || pressingB == 0);\r
- if ((bChipHasR && (autoR || pressingR != 0)) || bSuccessOPEN)\r
- {\r
- this.actChipFireGB.Start(R, 演奏判定ライン座標);\r
- }\r
- if ((bChipHasG && (autoG || pressingG != 0)) || bSuccessOPEN)\r
- {\r
- this.actChipFireGB.Start(G, 演奏判定ライン座標);\r
- }\r
- if ((bChipHasB && (autoB || pressingB != 0)) || bSuccessOPEN)\r
- {\r
- this.actChipFireGB.Start(B, 演奏判定ライン座標);\r
- }\r
- this.tチップのヒット処理(nTime, pChip);\r
- this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[indexInst], e判定 == E判定.Poor);\r
- Ech定義 chWailingChip = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Wailing : Ech定義.Bass_Wailing;\r
- CChip item = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingChip, this.nInputAdjustTimeMs[indexInst], 140);\r
- if (item != null)\r
- {\r
- this.queWailing[indexInst].Enqueue(item);\r
- }\r
- continue;\r
+ this.actChipFireGB.Start(G, 演奏判定ライン座標);\r
}\r
-\r
- // 以下、間違いレーンでのピック時\r
- CChip NoChipPicked = (inst == E楽器パート.GUITAR) ? this.r現在の空うちギターChip : this.r現在の空うちベースChip;\r
- if ((NoChipPicked != null) || ((NoChipPicked = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, chWailingSound, this.nInputAdjustTimeMs[indexInst])) != null))\r
+ if ((bChipHasB && (autoB || pressingB != 0)) || bSuccessOPEN)\r
{\r
- this.tサウンド再生(NoChipPicked, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[indexInst], true);\r
+ this.actChipFireGB.Start(B, 演奏判定ライン座標);\r
}\r
- if (!CDTXMania.Instance.ConfigIni.bLight[indexInst])\r
+ this.tチップのヒット処理(nTime, pChip);\r
+ this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[indexInst], e判定 == E判定.Poor);\r
+ Ech定義 chWailingChip = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Wailing : Ech定義.Bass_Wailing;\r
+ CChip item = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingChip, this.nInputAdjustTimeMs[indexInst], 140);\r
+ if (item != null)\r
{\r
- this.tチップのヒット処理_BadならびにTight時のMiss(inst);\r
+ this.queWailing[indexInst].Enqueue(item);\r
}\r
+ continue;\r
+ }\r
+\r
+ // 以下、間違いレーンでのピック時\r
+ CChip NoChipPicked = (inst == E楽器パート.GUITAR) ? this.r現在の空うちギターChip : this.r現在の空うちベースChip;\r
+ if ((NoChipPicked != null) || ((NoChipPicked = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, chWailingSound, this.nInputAdjustTimeMs[indexInst])) != null))\r
+ {\r
+ this.tサウンド再生(NoChipPicked, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[indexInst], true);\r
+ }\r
+ if (!CDTXMania.Instance.ConfigIni.bLight[indexInst])\r
+ {\r
+ this.tチップのヒット処理_BadならびにTight時のMiss(inst);\r
}\r
}\r
- List<STInputEvent> list = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Wail);\r
- if ((list != null) && (list.Count > 0))\r
+ }\r
+ List<STInputEvent> list = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Wail);\r
+ if ((list != null) && (list.Count > 0))\r
+ {\r
+ foreach (STInputEvent eventWailed in list)\r
{\r
- foreach (STInputEvent eventWailed in list)\r
+ if (!eventWailed.b押された)\r
{\r
- if (!eventWailed.b押された)\r
- {\r
- continue;\r
- }\r
- DoWailingFromQueue(inst, eventWailed.nTimeStamp, autoW);\r
+ continue;\r
}\r
+ DoWailingFromQueue(inst, eventWailed.nTimeStamp, autoW);\r
}\r
}\r
}\r
}\r
}\r
}\r
- protected abstract void t進行描画_ギターベース判定ライン();\r
private void t進行描画_ギターベースフレーム()\r
{\r
- if (((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.HALF) && (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+ if (((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.HALF) && (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)) &&\r
+ CDTXMania.Instance.ConfigIni.bGuitar有効)\r
{\r
- int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1521 : 1450;\r
- for (int i = 0; i < 355; i += 0x80)\r
+ if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
{\r
- Rectangle rc = new Rectangle(0, 0, 327, 288);\r
- if ((i + 0x80) > 355)\r
- {\r
- rc.Height -= (int)((i + 0x80 - 355) * Scale.Y);\r
- }\r
- if (this.txレーンフレームGB != null)\r
+ int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1521 : 1450;\r
+ for (int i = 0; i < 355; i += 0x80)\r
{\r
- this.txレーンフレームGB.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x,\r
- (57 + i) * Scale.Y,\r
- rc\r
- );\r
+ Rectangle rc = new Rectangle(0, 0, 327, 288);\r
+ if ((i + 0x80) > 355)\r
+ {\r
+ rc.Height -= (int)((i + 0x80 - 355) * Scale.Y);\r
+ }\r
+ if (this.txレーンフレームGB != null)\r
+ {\r
+ this.txレーンフレームGB.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x,\r
+ (57 + i) * Scale.Y,\r
+ rc\r
+ );\r
+ }\r
}\r
}\r
- }\r
- if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
- {\r
- int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1194 : 200;\r
- for (int i = 0; i < 355; i += 0x80)\r
+ if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
{\r
- Rectangle rc = new Rectangle(0, 0, 327, 288);\r
- if ((i + 0x80) > 355)\r
- {\r
- rc.Height -= (int)((i + 0x80 - 355) * Scale.Y);\r
- }\r
- if (this.txレーンフレームGB != null)\r
+ int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1194 : 200;\r
+ for (int i = 0; i < 355; i += 0x80)\r
{\r
- this.txレーンフレームGB.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- (57 + i) * Scale.Y,\r
- rc\r
- );\r
+ Rectangle rc = new Rectangle(0, 0, 327, 288);\r
+ if ((i + 0x80) > 355)\r
+ {\r
+ rc.Height -= (int)((i + 0x80 - 355) * Scale.Y);\r
+ }\r
+ if (this.txレーンフレームGB != null)\r
+ {\r
+ this.txレーンフレームGB.t2D描画(CDTXMania.Instance.Device,\r
+ x,\r
+ (57 + i) * Scale.Y,\r
+ rc\r
+ );\r
+ }\r
}\r
}\r
}\r
}\r
return true;\r
}\r
+\r
protected bool bフィルイン区間の最後のChipである(CChip pChip)\r
{\r
if (pChip == null)\r
}\r
return true;\r
}\r
+\r
+ private void t進行描画_チップ_フィルイン(ref CChip pChip)\r
+ {\r
+ if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+ {\r
+ pChip.bHit = true;\r
+\r
+ if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+ {\r
+ switch (pChip.n整数値)\r
+ {\r
+ case 0x01: // フィルイン開始\r
+ if (CDTXMania.Instance.ConfigIni.bフィルイン有効)\r
+ {\r
+ this.bフィルイン中 = true;\r
+ }\r
+ break;\r
+\r
+ case 0x02: // フィルイン終了\r
+ if (CDTXMania.Instance.ConfigIni.bフィルイン有効)\r
+ {\r
+ this.bフィルイン中 = false;\r
+ }\r
+ if (((this.actCombo.n現在のコンボ数.Drums > 0) || CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである) && CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
+ {\r
+ if (this.r現在の歓声Chip.Drums != null)\r
+ {\r
+ CDTXMania.Instance.DTX.tチップの再生(this.r現在の歓声Chip.Drums, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+ }\r
+ else\r
+ {\r
+ CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = 0;\r
+ CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
+ }\r
+ }\r
+ break;\r
+#if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST\r
+ case 0x04: // HH消音あり(従来同等)\r
+ CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = true;\r
+ break;\r
+ case 0x05: // HH消音無し\r
+ CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = false;\r
+ break;\r
+ case 0x06: // ギター消音あり(従来同等)\r
+ CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Gutiar = true;\r
+ break;\r
+ case 0x07: // ギター消音無し\r
+ CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Gutiar = false;\r
+ break;\r
+ case 0x08: // ベース消音あり(従来同等)\r
+ CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = true;\r
+ break;\r
+ case 0x09: // ベース消音無し\r
+ CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = false;\r
+ break;\r
+#endif\r
+ }\r
+ }\r
+ }\r
+ }\r
+ private void t進行描画_チップ_ドラムス(ref CChip pChip)\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+ {\r
+ #region [ Invisible処理 ]\r
+ if (CDTXMania.Instance.ConfigIni.eInvisible.Drums != EInvisible.OFF)\r
+ {\r
+ cInvisibleChip.SetInvisibleStatus(ref pChip);\r
+ }\r
+ #endregion\r
+ else\r
+ {\r
+ #region [ Sudden処理 ]\r
+ if (CDTXMania.Instance.ConfigIni.bSudden.Drums)\r
+ {\r
+ if (pChip.nバーからの距離dot.Drums < 200 * Scale.Y)\r
+ {\r
+ pChip.b可視 = true;\r
+ pChip.n透明度 = 0xff;\r
+ }\r
+ else if (pChip.nバーからの距離dot.Drums < 250 * Scale.Y)\r
+ {\r
+ pChip.b可視 = true;\r
+ pChip.n透明度 = 0xff - ((int)((((double)(pChip.nバーからの距離dot.Drums - 200 * Scale.Y)) * 255.0) / 50.0));\r
+ }\r
+ else\r
+ {\r
+ pChip.b可視 = false;\r
+ pChip.n透明度 = 0;\r
+ }\r
+ }\r
+ #endregion\r
+ #region [ Hidden処理 ]\r
+ if (CDTXMania.Instance.ConfigIni.bHidden.Drums)\r
+ {\r
+ if (pChip.nバーからの距離dot.Drums < 100 * Scale.Y)\r
+ {\r
+ pChip.b可視 = false;\r
+ }\r
+ else if (pChip.nバーからの距離dot.Drums < 150 * Scale.Y)\r
+ {\r
+ pChip.b可視 = true;\r
+ pChip.n透明度 = (int)((((double)(pChip.nバーからの距離dot.Drums - 100 * Scale.Y)) * 255.0) / 50.0);\r
+ }\r
+ }\r
+ #endregion\r
+ }\r
+ if (!pChip.bHit && pChip.b可視)\r
+ {\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.n透明度 = pChip.n透明度;\r
+ }\r
+ int x = this.nチャンネルtoX座標[(int)CDTXMania.Instance.ConfigIni.eドラムレーン表示位置, pChip.eチャンネル番号 - Ech定義.HiHatClose];\r
+ int y = CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
+ (int)(0x38 * Scale.Y + pChip.nバーからの距離dot.Drums) :\r
+ (int)(0x1a6 * Scale.Y - pChip.nバーからの距離dot.Drums);\r
+\r
+ if (this.txチップ != null)\r
+ {\r
+ double d = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1.0 : 0.75;\r
+ this.txチップ.vc拡大縮小倍率 = new Vector3(\r
+ (float)(pChip.dbチップサイズ倍率 * d),\r
+ (float)pChip.dbチップサイズ倍率,\r
+ 1f\r
+ );\r
+ }\r
+ int num9 = this.ctチップ模様アニメ.Drums.n現在の値;\r
+ switch (pChip.eチャンネル番号)\r
+ {\r
+ // HH\r
+ case Ech定義.HiHatClose:\r
+ x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(44 * Scale.X), (int)(num9 * (18 - 2)), (int)(32 * Scale.X), (int)(18)));\r
+ }\r
+ break;\r
+\r
+ // SD\r
+ case Ech定義.Snare:\r
+ x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(0x4c * Scale.X), (int)(num9 * (18 - 2)), (int)(0x20 * Scale.X), (int)(18)));\r
+ }\r
+ break;\r
+\r
+ // BD\r
+ case Ech定義.BassDrum:\r
+ x += (int)(0x16 * Scale.X) - ((int)((44.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 11, new Rectangle((int)(0 * Scale.X), (int)(num9 * (22 - 2)), (int)(44 * Scale.X), (int)(22)));\r
+ }\r
+ break;\r
+\r
+ // HT\r
+ case Ech定義.HighTom:\r
+ x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(0x6c * Scale.X), (int)(num9 * (18 - 2)), (int)(0x20 * Scale.X), (int)(18)));\r
+ }\r
+ break;\r
+\r
+ // LT\r
+ case Ech定義.LowTom:\r
+ x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(140 * Scale.X), (int)(num9 * (18 - 2)), (int)(0x20 * Scale.X), (int)(18)));\r
+ }\r
+ break;\r
+\r
+ // CY\r
+ case Ech定義.Cymbal:\r
+ x += (int)(0x13 * Scale.X) - ((int)((38.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 46, new Rectangle((int)(0xcc * Scale.X), (int)(786), (int)(0x26 * Scale.X), (int)(78)));\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(0xcc * Scale.X), (int)(num9 * (18 - 2)), (int)(0x26 * Scale.X), (int)(18)));\r
+ }\r
+ break;\r
+\r
+ // FT\r
+ case Ech定義.FloorTom:\r
+ x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(0xac * Scale.X), (int)(num9 * (18 - 2)), (int)(0x20 * Scale.X), (int)(18)));\r
+ }\r
+ break;\r
+\r
+ // HHO\r
+ case Ech定義.HiHatOpen:\r
+ x += (int)(13 * Scale.X) - ((int)((26.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(0xf2 * Scale.X), (int)(num9 * (18 - 2)), (int)(0x1a * Scale.X), (int)(18)));\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 16, new Rectangle((int)(0xf2 * Scale.X), (int)(790), (int)(0x1a * Scale.X), (int)(30)));\r
+ }\r
+ break;\r
+\r
+ // RCY\r
+ case Ech定義.RideCymbal:\r
+ x += (int)(13 * Scale.X) - ((int)((26.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(0xf2 * Scale.X), (int)(num9 * (18 - 2)), (int)(0x1a * Scale.X), (int)(18)));\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 16, new Rectangle((int)(0xf2 * Scale.X), (int)(790), (int)(0x1a * Scale.X), (int)(30)));\r
+ }\r
+ break;\r
+\r
+ // LCY\r
+ case Ech定義.LeftCymbal:\r
+ x += (int)(0x13 * Scale.X) - ((int)((38.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
+ if (this.txチップ != null)\r
+ {\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 46, new Rectangle((int)(0xcc * Scale.X), (int)(786), (int)(0x26 * Scale.X), (int)(78)));\r
+ this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - 9, new Rectangle((int)(0xcc * Scale.X), (int)(num9 * (18 - 2)), (int)(0x26 * Scale.X), (int)(18)));\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
+ int indexSevenLanes = CStage演奏画面共通.nチャンネル0Atoレーン07[pChip.eチャンネル番号 - Ech定義.HiHatClose];\r
+ // #35411 chnmr0 modified\r
+ bool autoPlayCondition = (CDTXMania.Instance.ConfigIni.bAutoPlay[indexSevenLanes] && !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 -= this.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((Eレーン)indexSevenLanes, ((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((Eレーン)indexSevenLanes, flag, flag2, flag2, 演奏判定ライン座標.nJudgeLinePosY_delta.Drums);\r
+ this.actPad.Hit(this.nチャンネル0Atoパッド08[pChip.eチャンネル番号 - Ech定義.HiHatClose]);\r
+ this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, E楽器パート.DRUMS, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.DRUMS));\r
+ this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip);\r
+ cInvisibleChip.StartSemiInvisible(E楽器パート.DRUMS);\r
+ }\r
+ // #35411 modify end\r
+\r
+ // #35411 2015.08.21 chnmr0 add\r
+ // 目標値グラフにゴーストの達成率を渡す\r
+ if (CDTXMania.Instance.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE &&\r
+ CDTXMania.Instance.DTX.listTargetGhsotLag.Drums != null)\r
+ {\r
+ double val = 0;\r
+ if (CDTXMania.Instance.ConfigIni.eTargetGhost.Drums == ETargetGhostData.ONLINE)\r
+ {\r
+ if (CDTXMania.Instance.DTX.n可視チップ数.Drums > 0)\r
+ {\r
+ // Online Stats の計算式\r
+ val = 100 *\r
+ (this.nヒット数_TargetGhost.Drums.Perfect * 17 +\r
+ this.nヒット数_TargetGhost.Drums.Great * 7 +\r
+ this.n最大コンボ数_TargetGhost.Drums * 3) / (20.0 * CDTXMania.Instance.DTX.n可視チップ数.Drums);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ val = CScoreIni.t演奏型スキルを計算して返す(\r
+ CDTXMania.Instance.DTX.n可視チップ数.Drums,\r
+ this.nヒット数_TargetGhost.Drums.Perfect,\r
+ this.nヒット数_TargetGhost.Drums.Great,\r
+ this.nヒット数_TargetGhost.Drums.Good,\r
+ this.nヒット数_TargetGhost.Drums.Poor,\r
+ this.nヒット数_TargetGhost.Drums.Miss,\r
+ E楽器パート.DRUMS, new STAUTOPLAY());\r
+ }\r
+ if (val < 0) val = 0;\r
+ if (val > 100) val = 100;\r
+ this.actGraph.dbグラフ値目標_渡 = val;\r
+ }\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, E楽器パート.DRUMS, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.DRUMS));\r
+ pChip.bHit = true;\r
+ }\r
+ }\r
+ }\r
+ private void t進行描画_チップ_ギターベース(ref CChip pChip, E楽器パート inst)\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+\r
+ t進行描画_チップ_ギターベース(ref pChip, inst,\r
+ 演奏判定ライン座標.n判定ラインY座標(inst, false), // 40\r
+ 演奏判定ライン座標.n判定ラインY座標(inst, true), // 369\r
+ (int)(0 * Scale.Y), (int)(409 * Scale.Y), // Y軸表示範囲\r
+ 26, 480, // openチップのX座標(Gt, Bs)\r
+ 0, 192, 103, 8, 32, // オープンチップregionの x, y, w, h, 通常チップのw\r
+ 26, 98, 480, 552, // GtのX, Gt左利きのX, BsのX, Bs左利きのX,\r
+ 36, 32 // 描画のX座標間隔, テクスチャのX座標間隔\r
+ );\r
+ }\r
+ else\r
+ {\r
+ int xGtO = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 509 : 485;\r
+ int xBsO = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 400 : 69;\r
+ int xGtL = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 561 : 537;\r
+ int xBsL = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 452 : 121;\r
+\r
+ t進行描画_チップ_ギターベース(ref pChip, inst,\r
+ 演奏判定ライン座標.n判定ラインY座標(inst, false), // 95 Normal\r
+ 演奏判定ライン座標.n判定ラインY座標(inst, true), // 374 Reverse\r
+ (int)(57 * Scale.Y), (int)(412 * Scale.Y), // チップのY軸表示範囲\r
+ xGtO, xBsO, // openチップのX座標(Gt, Bs)\r
+ 268, 144, 76, 6, 24, // オープンチップregionの x, y, w, h, 通常チップのw\r
+ xGtO, xGtL, xBsO, xBsL, // GtのX, Gt左利きのX, BsのX, Bs左利きのX,\r
+ 26, 24 // 描画のX座標間隔, テクスチャのX座標間隔\r
+ );\r
+ }\r
+ }\r
+ private void t進行描画_ギターベース判定ライン() // yyagi: ギタレボモードとは座標が違うだけですが、まとめづらかったのでそのまま放置してます。\r
+ {\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ if ((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+ {\r
+ if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+ {\r
+ int x = 23 * 3;\r
+ int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, bReverse[(int)E楽器パート.GUITAR], false, true) - (int)(3 * Scale.Y);\r
+ // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
+ if (this.txヒットバー != null)\r
+ {\r
+ for (int i = 0; i < 4; i++)\r
+ {\r
+ this.txヒットバー.t2D描画(CDTXMania.Instance.Device,\r
+ x + (28 * i) * Scale.X,\r
+ y,\r
+ new Rectangle(\r
+ 0,\r
+ (int)(i * 8 * Scale.Y),\r
+ (int)(28 * Scale.X),\r
+ (int)(8 * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ }\r
+ }\r
+ if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
+ {\r
+ int x = 477 * 3;\r
+ int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, bReverse[(int)E楽器パート.BASS], false, true) - (int)(3 * Scale.Y);\r
+ // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
+ if (this.txヒットバー != null)\r
+ {\r
+ for (int j = 0; j < 4; j++)\r
+ {\r
+ this.txヒットバー.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x + (28 * j) * Scale.X,\r
+ y,\r
+ new Rectangle(\r
+ 0,\r
+ (int)(j * 8 * Scale.Y),\r
+ (int)(28 * Scale.X),\r
+ (int)(8 * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if ((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+ {\r
+ if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+ {\r
+ int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1527 : 1456;\r
+ int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, bReverse[(int)E楽器パート.GUITAR], false, true) - (int)(3 * Scale.Y);\r
+ // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
+ Rectangle rc = new Rectangle(0, 0, 30, 36);\r
+ if (this.txヒットバーGB != null)\r
+ {\r
+ for (int i = 0; i < 3; i++)\r
+ {\r
+ this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
+ x + (3 * 26 * i),\r
+ y\r
+ );\r
+ this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
+ x + (3 * 26 * i) + 48,\r
+ y,\r
+ rc\r
+ );\r
+ }\r
+ }\r
+ }\r
+ if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
+ {\r
+ int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1200 : 206;\r
+ int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, bReverse[(int)E楽器パート.BASS], false, true) - (int)(3 * Scale.Y);\r
+ // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
+ Rectangle rc = new Rectangle(0, 0, 30, 36);\r
+ if (this.txヒットバーGB != null)\r
+ {\r
+ for (int j = 0; j < 3; j++)\r
+ {\r
+ this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
+ x + (3 * 26 * j),\r
+ y\r
+ );\r
+ this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
+ x + (3 * 26 * j) + 48,\r
+ y,\r
+ rc\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
}\r
}\r
\r
namespace DTXMania\r
{\r
- internal abstract partial class CStage演奏画面共通\r
+ internal partial class CStage演奏画面共通\r
{\r
protected enum HitState\r
{\r
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using System.Diagnostics;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏GuitarDanger : CAct演奏Danger共通\r
- {\r
-\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.txDANGER = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar danger.png"));\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txDANGER);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- public override int On進行描画()\r
- {\r
- throw new InvalidOperationException("t進行描画(bool)のほうを使用してください。");\r
- }\r
- /// <summary>\r
- /// DANGER表示(Guitar/Bass)\r
- /// </summary>\r
- /// <param name="bIsDangerDrums">DrumsがDangerか否か(未使用)</param>\r
- /// <param name="bIsDangerGuitar">GuitarがDangerか否か</param>\r
- /// <param name="bIsDangerBass">BassがDangerか否か</param>\r
- /// <returns></returns>\r
- public override int t進行描画(bool bIsDangerDrums, bool bIsDangerGuitar, bool bIsDangerBass)\r
- {\r
- bool[] bIsDanger = { bIsDangerDrums, bIsDangerGuitar, bIsDangerBass };\r
-\r
- if (!base.b活性化してない)\r
- {\r
- if (this.ct透明度用 == null)\r
- {\r
- //this.ct移動用 = new CCounter( 0, 0x7f, 7, CDTXMania.Instance.Timer );\r
- this.ct透明度用 = new CCounter(0, n波長, 8, CDTXMania.Instance.Timer);\r
- }\r
- if (this.ct透明度用 != null)\r
- {\r
- //this.ct移動用.t進行Loop();\r
- this.ct透明度用.t進行Loop();\r
- }\r
- for (int nPart = (int)E楽器パート.GUITAR; nPart <= (int)E楽器パート.BASS; nPart++)\r
- {\r
- // this.bDanger中[nPart] = bIsDanger[nPart];\r
- if (bIsDanger[nPart])\r
- {\r
- if (this.txDANGER != null)\r
- {\r
- int d = this.ct透明度用.n現在の値;\r
- this.txDANGER.n透明度 = n透明度MIN + ((d < n波長 / 2) ? (n透明度MAX - n透明度MIN) * d / (n波長 / 2) : (n透明度MAX - n透明度MIN) * (n波長 - d) / (n波長 / 2)); // 60-200\r
- // }\r
- //num = this.ct移動用.n現在の値;\r
- //int num2 = CDTXMania.Instance.ConfigIni.bReverse.Drums ? ( 0x7f - num ) : num;\r
- // for ( int i = -1; i < 4; i++ )\r
- // {\r
- // if ( this.txDANGER != null )\r
- // {\r
- this.txDANGER.t2D描画(\r
- CDTXMania.Instance.Device,\r
- nGaugeX[nPart] * Scale.X,\r
- 0\r
- );\r
- //this.txDANGER.t2D描画( CDTXMania.Instance.app.Device, 0x26, ( ( i * 0x80 ) + num2 ) + 0x40, this.rc領域[ 1 ] );\r
- //this.txDANGER.t2D描画( CDTXMania.Instance.app.Device, 0x12a, ( i * 0x80 ) + num2, this.rc領域[ 0 ] );\r
- //this.txDANGER.t2D描画( CDTXMania.Instance.app.Device, 0x12a, ( ( i * 0x80 ) + num2 ) + 0x40, this.rc領域[ 1 ] );\r
- }\r
- // }\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- private const int n波長 = 40;\r
- private const int n透明度MAX = 180;\r
- private const int n透明度MIN = 20;\r
- private readonly int[] nGaugeX = { 0, 168, 328 };\r
- // private readonly Rectangle[] rc領域 = new Rectangle[] { new Rectangle( 0, 0, 0x20, 0x40 ), new Rectangle( 0x20, 0, 0x20, 0x40 ) };\r
- private CTexture txDANGER;\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏GuitarRGB : CAct演奏RGB共通\r
- {\r
- // コンストラクタ\r
-\r
- public CAct演奏GuitarRGB()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // CActivity 実装(共通クラスからの差分のみ)\r
-\r
- public override int On進行描画()\r
- {\r
- throw new InvalidOperationException("t進行描画(C演奏判定ライン座標共通 演奏判定ライン共通 ) のほうを使用してください。");\r
- }\r
- public override int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標)\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- if (!CDTXMania.Instance.ConfigIni.bGuitar有効)\r
- {\r
- return 0;\r
- }\r
- if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
- {\r
- for (int j = 0; j < 3; j++)\r
- {\r
- int index = CDTXMania.Instance.ConfigIni.bLeft.Guitar ? (2 - j) : j;\r
- Rectangle rectangle = new Rectangle(\r
- (int)(index * 0x18 * Scale.X),\r
- 0,\r
- (int)(0x18 * Scale.X),\r
- (int)(0x20 * Scale.Y)\r
- );\r
- if (base.b押下状態[index])\r
- {\r
- rectangle.Y += (int)(0x20 * Scale.Y);\r
- }\r
- if (base.txRGB != null)\r
- {\r
- int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.GUITAR, true, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- // int y = 演奏判定ライン座標.n判定ラインY座標( E楽器パート.GUITAR, true, CDTXMania.Instance.ConfigIni.bReverse.Guitar, false, false );\r
- base.txRGB.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (0x1f + (j * 0x24)) * Scale.X,\r
- y,\r
- rectangle\r
- );\r
- }\r
- }\r
- }\r
- if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
- {\r
- for (int k = 0; k < 3; k++)\r
- {\r
- int index = CDTXMania.Instance.ConfigIni.bLeft.Bass ? (2 - k) : k;\r
- Rectangle rectangle2 = new Rectangle(\r
- (int)(index * 0x18 * Scale.X),\r
- 0,\r
- (int)(0x18 * Scale.X),\r
- (int)(0x20 * Scale.Y)\r
- );\r
- if (base.b押下状態[index + 3])\r
- {\r
- rectangle2.Y += (int)(0x20 * Scale.Y);\r
- }\r
- if (base.txRGB != null)\r
- {\r
- int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.BASS, true, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- //int y = 演奏判定ライン座標.n判定ラインY座標( E楽器パート.BASS, true, CDTXMania.Instance.ConfigIni.bReverse.Bass, false, false );\r
- base.txRGB.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (0x1e5 + (k * 0x24)) * Scale.X,\r
- y,\r
- rectangle2\r
- );\r
- }\r
- }\r
- }\r
- for (int i = 0; i < 6; i++)\r
- {\r
- base.b押下状態[i] = false;\r
- }\r
- }\r
- return 0;\r
- }\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏GuitarWailingBonus : CAct演奏WailingBonus共通\r
- {\r
- // メソッド\r
-\r
- public CAct演奏GuitarWailingBonus()\r
- {\r
- base.b活性化してない = true;\r
- }\r
- //public override void Start( E楽器パート part )\r
- //{\r
- // this.Start( part, null );\r
- //}\r
- public override void Start(E楽器パート part, CChip r歓声Chip)\r
- {\r
- if (part != E楽器パート.DRUMS)\r
- {\r
- for (int i = 0; i < 4; i++)\r
- {\r
- if ((this.ct進行用[(int)part, i] == null) || this.ct進行用[(int)part, i].b停止中)\r
- {\r
- this.ct進行用[(int)part, i] = new CCounter(0, 300, 2, CDTXMania.Instance.Timer);\r
- if (CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
- {\r
- if (r歓声Chip != null)\r
- {\r
- CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
- return;\r
- }\r
- CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = (part == E楽器パート.GUITAR) ? -50 : 50;\r
- CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
- return;\r
- }\r
- break;\r
- }\r
- }\r
- }\r
- }\r
-\r
-\r
- // CActivity 実装\r
-\r
- public override void On活性化()\r
- {\r
- for (int i = 0; i < 3; i++)\r
- {\r
- for (int j = 0; j < 4; j++)\r
- {\r
- this.ct進行用[i, j] = null;\r
- }\r
- }\r
- base.On活性化();\r
- }\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- for (int i = 0; i < 2; i++)\r
- {\r
- E楽器パート e楽器パート = (i == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
- for (int k = 0; k < 4; k++)\r
- {\r
- if ((this.ct進行用[(int)e楽器パート, k] != null) && !this.ct進行用[(int)e楽器パート, k].b停止中)\r
- {\r
- if (this.ct進行用[(int)e楽器パート, k].b終了値に達した)\r
- {\r
- this.ct進行用[(int)e楽器パート, k].t停止();\r
- }\r
- else\r
- {\r
- this.ct進行用[(int)e楽器パート, k].t進行();\r
- }\r
- }\r
- }\r
- }\r
- for (int j = 0; j < 2; j++)\r
- {\r
- E楽器パート e楽器パート2 = (j == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
- for (int m = 0; m < 4; m++)\r
- {\r
- if ((this.ct進行用[(int)e楽器パート2, m] != null) && !this.ct進行用[(int)e楽器パート2, m].b停止中)\r
- {\r
- int x = ((e楽器パート2 == E楽器パート.GUITAR) ? 0x1a : 480) + 0x71;\r
- int num6 = 0;\r
- int num7 = 0;\r
- int num8 = this.ct進行用[(int)e楽器パート2, m].n現在の値;\r
- if (num8 < 100)\r
- {\r
- num6 = (int)(64.0 + (290.0 * Math.Cos(Math.PI / 2 * (((double)num8) / 100.0))));\r
- }\r
- else if (num8 < 150)\r
- {\r
- num6 = (int)(64.0 + ((150 - num8) * Math.Sin((Math.PI * ((num8 - 100) % 0x19)) / 25.0)));\r
- }\r
- else if (num8 < 200)\r
- {\r
- num6 = 0x40;\r
- }\r
- else\r
- {\r
- num6 = (int)(64.0 - (((double)(290 * (num8 - 200))) / 100.0));\r
- }\r
- if (CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート2])\r
- {\r
- num6 = (0x199 - num6) - 0xf4;\r
- }\r
- Rectangle rectangle = new Rectangle(0, 0, 0x1a, 0x7a * 2);\r
- if ((0x199 - num6) < rectangle.Bottom)\r
- {\r
- rectangle.Height = (0x199 - num6) - rectangle.Top;\r
- }\r
- if (num6 < 0)\r
- {\r
- rectangle.Y = -num6;\r
- rectangle.Height -= -num6;\r
- num7 = -num6;\r
- }\r
- if ((rectangle.Top < rectangle.Bottom) && (this.txWailingBonus != null))\r
- {\r
- rectangle.X = (int)(rectangle.X * Scale.X);\r
- rectangle.Y = (int)(rectangle.Y * Scale.Y);\r
- rectangle.Width = (int)(rectangle.Width * Scale.X);\r
- rectangle.Height = (int)(rectangle.Height * Scale.Y);\r
-\r
- this.txWailingBonus.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x * Scale.X,\r
- (num6 + num7) * Scale.Y,\r
- rectangle\r
- );\r
- }\r
- }\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Guitarゲージ : CAct演奏ゲージ共通\r
- {\r
- // コンストラクタ\r
-\r
- public CAct演奏Guitarゲージ()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // CActivity 実装\r
-\r
- public override void On活性化()\r
- {\r
- base.On活性化();\r
- }\r
- public override void On非活性化()\r
- {\r
- this.ct本体移動 = null;\r
- this.ct本体振動 = null;\r
- base.On非活性化();\r
- }\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.txゲージ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar gauge.png"));\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txゲージ);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- int num;\r
- int num9;\r
- if (base.b初めての進行描画)\r
- {\r
- this.ct本体移動 = new CCounter(0, 0x1a, 20, CDTXMania.Instance.Timer);\r
- this.ct本体振動 = new CCounter(0, 360, 4, CDTXMania.Instance.Timer);\r
- base.b初めての進行描画 = false;\r
- }\r
- this.ct本体移動.t進行Loop();\r
- this.ct本体振動.t進行Loop();\r
-\r
- #region [ ギターのゲージ ]\r
- if (this.db現在のゲージ値.Guitar == 1.0) // ギターのゲージ\r
- {\r
- num = (int)(128.0 * this.db現在のゲージ値.Guitar);\r
- }\r
- else\r
- {\r
- num = (int)((128.0 * this.db現在のゲージ値.Guitar) + (2.0 * Math.Sin(Math.PI * 2 * (((double)this.ct本体振動.n現在の値) / 360.0))));\r
- }\r
- if (num > 0)\r
- {\r
- Rectangle rectangle;\r
- int num2 = 0x1a - this.ct本体移動.n現在の値;\r
- int x = 0xb2 - num2;\r
- int num4 = num + num2;\r
- while (num4 > 0)\r
- {\r
- if (this.db現在のゲージ値.Guitar == 1.0)\r
- {\r
- rectangle = new Rectangle(0x1b, 0, 0x1b, 0x10);\r
- }\r
- else\r
- {\r
- rectangle = new Rectangle(0, 0, 0x1b, 0x10);\r
- }\r
- if (x < 0xb2)\r
- {\r
- int num5 = 0xb2 - x;\r
- rectangle.X += num5;\r
- rectangle.Width -= num5;\r
- x += num5;\r
- }\r
- if ((x + rectangle.Width) > (0xb2 + num))\r
- {\r
- int num6 = (x + rectangle.Width) - (0xb2 + num);\r
- rectangle.Width -= num6;\r
- }\r
- if (rectangle.Left >= rectangle.Right)\r
- {\r
- break;\r
- }\r
- if (this.txゲージ != null)\r
- {\r
- Rectangle rectangle1 = rectangle;\r
- rectangle1.X = (int)(rectangle1.X * Scale.X);\r
- rectangle1.Y = (int)(rectangle1.Y * Scale.Y);\r
- rectangle1.Width = (int)(rectangle1.Width * Scale.X);\r
- rectangle1.Height = (int)(rectangle1.Height * Scale.Y);\r
-\r
- this.txゲージ.b加算合成 = false;\r
- this.txゲージ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x * Scale.X,\r
- 8 * Scale.Y,\r
- rectangle1\r
- );\r
- }\r
- num4 -= rectangle.Width;\r
- x += rectangle.Width;\r
- }\r
- rectangle = new Rectangle(0, 0x10, 0x40, 0x10);\r
- x = (0xb2 + num) - 0x40;\r
- if (x < 0xb2)\r
- {\r
- int num7 = 0xb2 - x;\r
- rectangle.X += num7;\r
- rectangle.Width -= num7;\r
- x += num7;\r
- }\r
- if ((x + rectangle.Width) > (0xb2 + num))\r
- {\r
- int num8 = (x + rectangle.Width) - (0xb2 + num);\r
- rectangle.Width -= num8;\r
- }\r
- if ((rectangle.Left < rectangle.Right) && (this.txゲージ != null))\r
- {\r
- this.txゲージ.b加算合成 = true;\r
- rectangle.X = (int)(rectangle.X * Scale.X);\r
- rectangle.Y = (int)(rectangle.Y * Scale.Y);\r
- rectangle.Width = (int)(rectangle.Width * Scale.X);\r
- rectangle.Height = (int)(rectangle.Height * Scale.Y);\r
- this.txゲージ.t2D描画(CDTXMania.Instance.Device,\r
- x * Scale.X,\r
- 8 * Scale.Y,\r
- rectangle\r
- );\r
- }\r
- if (this.bRisky && this.actLVLNFont != null) // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
- {\r
- CActLVLNFont.EFontColor efc = this.IsDanger(E楽器パート.GUITAR) ?\r
- CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
- actLVLNFont.t文字列描画(\r
- (int)(196 * Scale.X),\r
- (int)(6 * Scale.Y),\r
- nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Left);\r
- }\r
- }\r
- #endregion\r
-\r
- #region [ ベースのゲージ ]\r
- if (this.db現在のゲージ値.Bass == 1.0)\r
- {\r
- num9 = (int)(128.0 * this.db現在のゲージ値.Bass);\r
- }\r
- else\r
- {\r
- num9 = (int)((128.0 * this.db現在のゲージ値.Bass) + (2.0 * Math.Sin(Math.PI * 2 * (((double)this.ct本体振動.n現在の値) / 360.0))));\r
- }\r
- if (num9 > 0)\r
- {\r
- Rectangle rectangle2;\r
- int num10 = this.ct本体移動.n現在の値;\r
- int num11 = (0x1cf - num9) - num10;\r
- int num12 = num9 + num10;\r
- while (num12 > 0)\r
- {\r
- if (this.db現在のゲージ値.Bass == 1.0)\r
- {\r
- rectangle2 = new Rectangle(10, 0x30, 0x1b, 0x10);\r
- }\r
- else\r
- {\r
- rectangle2 = new Rectangle(0x25, 0x30, 0x1b, 0x10);\r
- }\r
- if (num11 < (0x1cf - num9))\r
- {\r
- int num13 = (0x1cf - num9) - num11;\r
- rectangle2.X += num13;\r
- rectangle2.Width -= num13;\r
- num11 += num13;\r
- }\r
- if ((num11 + rectangle2.Width) > 0x1cf)\r
- {\r
- int num14 = (num11 + rectangle2.Width) - 0x1cf;\r
- rectangle2.Width -= num14;\r
- }\r
- if (rectangle2.Left >= rectangle2.Right)\r
- {\r
- break;\r
- }\r
- if (this.txゲージ != null)\r
- {\r
- Rectangle rectangle3 = rectangle2;\r
- rectangle3.X = (int)(rectangle3.X * Scale.X);\r
- rectangle3.Y = (int)(rectangle3.Y * Scale.Y);\r
- rectangle3.Width = (int)(rectangle3.Width * Scale.X);\r
- rectangle3.Height = (int)(rectangle3.Height * Scale.Y);\r
- this.txゲージ.b加算合成 = false;\r
- this.txゲージ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- num11 * Scale.X,\r
- 8 * Scale.Y,\r
- rectangle3\r
- );\r
- }\r
- num12 -= rectangle2.Width;\r
- num11 += rectangle2.Width;\r
- }\r
- rectangle2 = new Rectangle(0, 0x20, 0x40, 0x10);\r
- num11 = 0x1cf - num9;\r
- if ((num11 + rectangle2.Width) > 0x1cf)\r
- {\r
- int num15 = (num11 + rectangle2.Width) - 0x1cf;\r
- rectangle2.Width -= num15;\r
- }\r
- if ((rectangle2.Left < rectangle2.Right) && (this.txゲージ != null))\r
- {\r
- this.txゲージ.b加算合成 = true;\r
- rectangle2.X = (int)(rectangle2.X * Scale.X);\r
- rectangle2.Y = (int)(rectangle2.Y * Scale.Y);\r
- rectangle2.Width = (int)(rectangle2.Width * Scale.X);\r
- rectangle2.Height = (int)(rectangle2.Height * Scale.Y);\r
- this.txゲージ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- num11 * Scale.X,\r
- 8 * Scale.Y,\r
- rectangle2\r
- );\r
- }\r
- if (this.bRisky && this.actLVLNFont != null) // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
- {\r
- CActLVLNFont.EFontColor efc = this.IsDanger(E楽器パート.GUITAR) ?\r
- CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
- actLVLNFont.t文字列描画(\r
- (int)(445 * Scale.X),\r
- (int)(6 * Scale.Y),\r
- nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Right);\r
- }\r
- }\r
- #endregion\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- //private CCounter ct本体移動;\r
- //private CCounter ct本体振動;\r
- //private CTexture txゲージ;\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Guitarコンボ : CAct演奏Combo共通\r
- {\r
- // CAct演奏Combo共通 実装\r
-\r
- protected override void tコンボ表示_ギター(int nCombo値, int nジャンプインデックス)\r
- {\r
- int x = (int)(230 * Scale.X);\r
- int y = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0x103 : 150;\r
- y = (int)(y * Scale.Y);\r
- //int y = 演奏判定ライン座標.n判定ラインY座標( E楽器パート.GUITAR, false, CDTXMania.Instance.ConfigIni.bReverse.Guitar );\r
- //y += CDTXMania.Instance.ConfigIni.bReverse.Guitar ? -134 : +174;\r
- if (base.txCOMBOギター != null)\r
- {\r
- base.txCOMBOギター.n透明度 = 0xff;\r
- }\r
- base.tコンボ表示_ギター(nCombo値, x, y, nジャンプインデックス);\r
- }\r
- protected override void tコンボ表示_ドラム(int nCombo値, int nジャンプインデックス)\r
- {\r
- }\r
- protected override void tコンボ表示_ベース(int nCombo値, int nジャンプインデックス)\r
- {\r
- int x = (int)(410 * Scale.X);\r
- int y = CDTXMania.Instance.ConfigIni.bReverse.Bass ? 0x103 : 150;\r
- y = (int)(y * Scale.Y);\r
- //int y = 演奏判定ライン座標.n判定ラインY座標( E楽器パート.BASS, false, CDTXMania.Instance.ConfigIni.bReverse.Bass );\r
- //y += CDTXMania.Instance.ConfigIni.bReverse.Bass ? -134 : +174;\r
- if (base.txCOMBOギター != null)\r
- {\r
- base.txCOMBOギター.n透明度 = 0xff;\r
- }\r
- base.tコンボ表示_ベース(nCombo値, x, y, nジャンプインデックス);\r
- }\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Guitarスコア : CAct演奏スコア共通\r
- {\r
- // コンストラクタ\r
-\r
- public CAct演奏Guitarスコア()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // CActivity 実装(共通クラスからの差分のみ)\r
-\r
- public override unsafe int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- if (base.b初めての進行描画)\r
- {\r
- base.n進行用タイマ = CDTXMania.Instance.Timer.n現在時刻;\r
- base.b初めての進行描画 = false;\r
- }\r
- long num = CDTXMania.Instance.Timer.n現在時刻;\r
- if (num < base.n進行用タイマ)\r
- {\r
- base.n進行用タイマ = num;\r
- }\r
- while ((num - base.n進行用タイマ) >= 10)\r
- {\r
- for (int j = 0; j < 3; j++)\r
- {\r
- this.n現在表示中のスコア[j] += this.nスコアの増分[j];\r
-\r
- if (this.n現在表示中のスコア[j] > (long)this.n現在の本当のスコア[j])\r
- this.n現在表示中のスコア[j] = (long)this.n現在の本当のスコア[j];\r
- }\r
- base.n進行用タイマ += 10;\r
- }\r
- for (int i = 1; i < 3; i++)\r
- {\r
- string str = this.n現在表示中のスコア[i].ToString("0000000000");\r
- for (int k = 0; k < 10; k++)\r
- {\r
- Rectangle rectangle;\r
- char ch = str[k];\r
- if (ch.Equals(' '))\r
- {\r
- rectangle = new Rectangle(\r
- 0,\r
- 0,\r
- (int)(12 * Scale.X),\r
- (int)(0x18 * Scale.Y)\r
- );\r
- }\r
- else\r
- {\r
- int num5 = int.Parse(str.Substring(k, 1));\r
- if (num5 < 5)\r
- {\r
- rectangle = new Rectangle(\r
- (int)(num5 * 12 * Scale.X),\r
- 0,\r
- (int)(12 * Scale.X),\r
- (int)(0x18 * Scale.Y)\r
- );\r
- }\r
- else\r
- {\r
- rectangle = new Rectangle(\r
- (int)((num5 - 5) * 12 * Scale.X),\r
- (int)(0x18 * Scale.Y),\r
- (int)(12 * Scale.X),\r
- (int)(0x18 * Scale.Y)\r
- );\r
- }\r
- }\r
- if (base.txScore != null)\r
- {\r
- base.txScore.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (this.ptSCORE[i - 1].X + (k * 12)) * Scale.X,\r
- this.ptSCORE[i - 1].Y * Scale.Y,\r
- rectangle\r
- );\r
- }\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- private readonly Point[] ptSCORE = new Point[] { new Point(0x1f, 0x1a9), new Point(0x1e9, 0x1a9) };\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Guitarステータスパネル : CAct演奏ステータスパネル共通\r
- {\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.tx左パネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels left.png"));\r
- this.tx右パネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels right.png"));\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.tx左パネル);\r
- TextureFactory.tテクスチャの解放(ref this.tx右パネル);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- if (this.tx左パネル != null)\r
- {\r
- this.tx左パネル.t2D描画(\r
- CDTXMania.Instance.Device,\r
- 3 * Scale.X,\r
- 0x143 * Scale.Y,\r
- new Rectangle(\r
- (int)(this.nStatus * 15 * Scale.X),\r
- (int)(0xb7 * Scale.Y),\r
- (int)(15 * Scale.X),\r
- (int)(0x49 * Scale.Y)\r
- )\r
- );\r
- int guitar = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Guitar;\r
- if (guitar < 0)\r
- {\r
- guitar = 0;\r
- }\r
- if (guitar > 15)\r
- {\r
- guitar = 15;\r
- }\r
- this.tx左パネル.t2D描画(\r
- CDTXMania.Instance.Device,\r
- 3 * Scale.X,\r
- 0x35 * Scale.Y,\r
- new Rectangle(\r
- (int)(guitar * 15 * Scale.X),\r
- 0,\r
- (int)(15 * Scale.X),\r
- (int)(0xac * Scale.Y)\r
- )\r
- );\r
- }\r
- if (this.tx右パネル != null)\r
- {\r
- this.tx右パネル.t2D描画(\r
- CDTXMania.Instance.Device,\r
- 0x26e * Scale.X,\r
- 0x143 * Scale.Y,\r
- new Rectangle(\r
- (int)(this.nStatus * 15 * Scale.X),\r
- (int)(0xb7 * Scale.Y),\r
- (int)(15 * Scale.X),\r
- (int)(0x49 * Scale.Y)\r
- )\r
- );\r
- int bass = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Bass;\r
- if (bass < 0)\r
- {\r
- bass = 0;\r
- }\r
- if (bass > 15)\r
- {\r
- bass = 15;\r
- }\r
- this.tx右パネル.t2D描画(\r
- CDTXMania.Instance.Device,\r
- 0x26e * Scale.X,\r
- 0x35 * Scale.Y,\r
- new Rectangle(\r
- (int)(bass * 15 * Scale.X),\r
- 0,\r
- (int)(15 * Scale.X),\r
- (int)(0xac * Scale.Y)\r
- )\r
- );\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- //[StructLayout( LayoutKind.Sequential )]\r
- //private struct STATUSPANEL\r
- //{\r
- // public string label;\r
- // public int status;\r
- //}\r
-\r
- //private int nStatus;\r
- //private STATUSPANEL[] stパネルマップ;\r
- private CTexture tx右パネル;\r
- private CTexture tx左パネル;\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
internal class CAct演奏Guitarチップファイア : CAct演奏チップファイアGB\r
{\r
// コンストラクタ\r
-\r
public CAct演奏Guitarチップファイア()\r
{\r
base.b活性化してない = true;\r
}\r
\r
-\r
// メソッド\r
-\r
public override void Start(int nLane, C演奏判定ライン座標共通 演奏判定ライン座標)\r
{\r
- if ((nLane < 0) && (nLane > 5))\r
+ if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- throw new IndexOutOfRangeException();\r
+ if ((nLane < 0) && (nLane > 5))\r
+ {\r
+ throw new IndexOutOfRangeException();\r
+ }\r
+ E楽器パート e楽器パート = (nLane < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+ int index = nLane;\r
+ if (CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート])\r
+ {\r
+ index = ((index / 3) * 3) + (2 - (index % 3));\r
+ }\r
+ int x = (int)(this.pt中央[index].X * Scale.X);\r
+ int y = 演奏判定ライン座標.n判定ラインY座標(e楽器パート, CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート]);\r
+ base.Start(nLane, x, y, 演奏判定ライン座標);\r
}\r
- E楽器パート e楽器パート = (nLane < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
- int index = nLane;\r
- if (CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート])\r
- {\r
- index = ((index / 3) * 3) + (2 - (index % 3));\r
- }\r
- int x = (int)(this.pt中央[index].X * Scale.X);\r
- //int y = this.pt中央[ index ].Y;\r
- int y = 演奏判定ライン座標.n判定ラインY座標(e楽器パート, CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート]);\r
- //if ( CDTXMania.Instance.ConfigIni.bReverse[ (int)e楽器パート ] )\r
- //{\r
- // y = 369;\r
- //}\r
- base.Start(nLane, x, y, 演奏判定ライン座標);\r
}\r
\r
-\r
// その他\r
\r
#region [ private ]\r
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏GuitarレーンフラッシュGB : CAct演奏レーンフラッシュGB共通\r
- {\r
- // コンストラクタ\r
-\r
- public CAct演奏GuitarレーンフラッシュGB()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // CActivity 実装(共通クラスからの差分のみ)\r
-\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- for (int i = 0; i < 6; i++)\r
- {\r
- if (!base.ct進行[i].b停止中)\r
- {\r
- E楽器パート e楽器パート = (i < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
- CTextureAf texture = CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート] ? base.txFlush[(i % 3) + 3] : base.txFlush[i % 3];\r
- int num2 = CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート] ? 1 : 0;\r
- {\r
- int x = (((i < 3) ? 0x1a : 480) + this.nRGBのX座標[num2, i]) + ((0x10 * base.ct進行[i].n現在の値) / 100);\r
- int y = CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート] ? 0x37 : 0;\r
- if (texture != null)\r
- {\r
- texture.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x * Scale.X,\r
- y * Scale.Y,\r
- new Rectangle(\r
- 0,\r
- 0,\r
- (int)(((0x20 * (100 - base.ct進行[i].n現在の値)) / 100) * Scale.X),\r
- (int)(0x76 * 3 * Scale.Y)\r
- )\r
- );\r
- }\r
- }\r
- base.ct進行[i].t進行();\r
- if (base.ct進行[i].b終了値に達した)\r
- {\r
- base.ct進行[i].t停止();\r
- }\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- private readonly int[,] nRGBのX座標 = new int[,] { { 0, 0x24, 0x48, 0, 0x24, 0x48 }, { 0x48, 0x24, 0, 0x48, 0x24, 0 } };\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using SlimDX;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Guitar判定文字列 : CAct演奏判定文字列共通\r
- {\r
- // コンストラクタ\r
-\r
- public CAct演奏Guitar判定文字列()\r
- {\r
- this.stレーンサイズ = new STレーンサイズ[12];\r
- STレーンサイズ stレーンサイズ = new STレーンサイズ();\r
- int[,] sizeXW = new int[,] {\r
- { 0x24, 0x24 },\r
- { 0x4d, 30 },\r
- { 0x6f, 30 },\r
- { 0x92, 0x2a },\r
- { 0xc1, 30 },\r
- { 0xe3, 30 },\r
- { 0x105, 30 },\r
- { 0x127, 0x24 },\r
- { 0, 0 },\r
- { 0, 0 },\r
- { 0x1a, 0x6f }, // 最後2つ(Gt, Bs)がドラムスと異なる\r
- { 480, 0x6f } // \r
- };\r
- for (int i = 0; i < 12; i++)\r
- {\r
- this.stレーンサイズ[i] = new STレーンサイズ();\r
- this.stレーンサイズ[i].x = sizeXW[i, 0];\r
- this.stレーンサイズ[i].w = sizeXW[i, 1];\r
- }\r
- base.b活性化してない = true;\r
- }\r
-\r
- // CActivity 実装(共通クラスからの差分のみ)\r
-\r
- public override int On進行描画()\r
- {\r
- throw new InvalidOperationException("t進行描画(C演奏判定ライン座標共通 演奏判定ライン共通 ) のほうを使用してください。");\r
- }\r
- public override int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標)\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- for (int i = 0; i < 12; i++)\r
- {\r
- if (!base.st状態[i].ct進行.b停止中)\r
- {\r
- base.st状態[i].ct進行.t進行();\r
- if (base.st状態[i].ct進行.b終了値に達した)\r
- {\r
- base.st状態[i].ct進行.t停止();\r
- }\r
- int num2 = base.st状態[i].ct進行.n現在の値;\r
- if ((base.st状態[i].judge != E判定.Miss) && (base.st状態[i].judge != E判定.Bad))\r
- {\r
- if (num2 < 50)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f + (1f * (1f - (((float)num2) / 50f)));\r
- base.st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else if (num2 < 130)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = ((num2 % 6) == 0) ? (CDTXMania.Instance.Random.Next(6) - 3) : base.st状態[i].n相対Y座標;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else if (num2 >= 240)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f - ((1f * (num2 - 240)) / 60f);\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- }\r
- else if (num2 < 50)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else if (num2 >= 200)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
- base.st状態[i].fY方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- }\r
- }\r
- for (int j = 0; j < 12; j++)\r
- {\r
- if (!base.st状態[j].ct進行.b停止中)\r
- {\r
- int index = base.st判定文字列[(int)base.st状態[j].judge].n画像番号;\r
- int baseX = 0;\r
- int baseY = 0;\r
- if (j >= 8)\r
- {\r
- if (j == 11) // Bass\r
- {\r
- if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass) == E判定文字表示位置.表示OFF)\r
- {\r
- continue;\r
- }\r
- int yB;\r
- switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass)\r
- {\r
- case E判定文字表示位置.コンボ下:\r
- baseX = 0x163;\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? 0x12b : 190;\r
- break;\r
- case E判定文字表示位置.レーン上:\r
- baseX = this.stレーンサイズ[j].x;\r
- yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? yB - 95 - 52 + 10 : yB + 95 + 52;\r
- //baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? 0x12b : 190;\r
- break;\r
- case E判定文字表示位置.判定ライン上:\r
- baseX = this.stレーンサイズ[j].x;\r
- yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ? yB + 30 : yB - 20;\r
- break;\r
- }\r
- }\r
- else if (j == 10) // Guitar\r
- {\r
- if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar) == E判定文字表示位置.表示OFF)\r
- {\r
- continue;\r
- }\r
- int yG;\r
- switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar)\r
- {\r
- case E判定文字表示位置.コンボ下:\r
- baseX = 0xaf;\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0x12b : 190;\r
- break;\r
- case E判定文字表示位置.レーン上:\r
- baseX = this.stレーンサイズ[j].x;\r
- yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? yG - 95 - 52 + 10 : yG + 95 + 52;\r
- //baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0x12b : 190;\r
- break;\r
- case E判定文字表示位置.判定ライン上:\r
- baseX = this.stレーンサイズ[j].x;\r
- yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? yG + 30 : yG - 20;\r
- break;\r
- }\r
- }\r
- //int xc = ( ( baseX + base.st状態[ j ].n相対X座標 ) + ( this.stレーンサイズ[ j ].w / 2 ) );\r
- //int x = xc - ( (int) ( ( ( 128f * base.st状態[ j ].fX方向拡大率 ) * 0.8 ) / 2.0 ) );\r
- //int y = ( baseY + base.st状態[ j ].n相対Y座標 ) - ( (int) ( ( ( 43f * base.st状態[ j ].fY方向拡大率 ) * 0.8 ) / 2.0 ) );\r
-\r
- int xc = (int)((((baseX + base.st状態[j].n相対X座標) + (this.stレーンサイズ[j].w / 2))) * Scale.X);\r
- int x = xc - (int)(((256f / 2) * base.st状態[j].fX方向拡大率) * 0.8);\r
- int y = (int)((baseY + base.st状態[j].n相対Y座標) * Scale.Y) - ((int)((((256f / 3) * base.st状態[j].fY方向拡大率) * 0.8) / 2.0));\r
-\r
- if (base.tx判定文字列[index] != null)\r
- {\r
- base.tx判定文字列[index].n透明度 = base.st状態[j].n透明度;\r
- base.tx判定文字列[index].vc拡大縮小倍率 = new Vector3((float)(base.st状態[j].fX方向拡大率 * 0.8), (float)(base.st状態[j].fY方向拡大率 * 0.8), 1f);\r
- base.tx判定文字列[index].t2D描画(CDTXMania.Instance.Device, x, y, base.st判定文字列[(int)base.st状態[j].judge].rc);\r
-\r
- #region [ #25370 2011.6.3 yyagi ShowLag support ]\r
- if (base.nShowLagType == (int)EShowLagType.ON ||\r
- ((base.nShowLagType == (int)EShowLagType.GREAT_POOR) && (base.st状態[j].judge != E判定.Perfect)))\r
- {\r
- if (base.st状態[j].judge != E判定.Auto && base.txlag数値 != null) // #25370 2011.2.1 yyagi\r
- {\r
- bool minus = false;\r
- int offsetX = 0;\r
- string strDispLag = base.st状態[j].nLag.ToString();\r
- if (st状態[j].nLag < 0)\r
- {\r
- minus = true;\r
- }\r
- x = xc - (int)(strDispLag.Length * 15 / 2 * Scale.X);\r
- for (int i = 0; i < strDispLag.Length; i++)\r
- {\r
- int p = (strDispLag[i] == '-') ? 11 : (int)(strDispLag[i] - '0'); //int.Parse(strDispLag[i]);\r
- p += minus ? 0 : 12; // change color if it is minus value\r
- base.txlag数値.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x + offsetX * Scale.X,\r
- y + 35 * Scale.Y,\r
- base.stLag数値[p].rc\r
- );\r
- offsetX += 12;\r
- }\r
- }\r
- }\r
- #endregion\r
- }\r
- // Label_06B7: ;\r
- }\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct STレーンサイズ\r
- {\r
- public int x;\r
- public int w;\r
- }\r
-\r
- private STレーンサイズ[] stレーンサイズ;\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Drawing;\r
-using System.Drawing.Imaging;\r
-using System.IO;\r
-using System.Diagnostics;\r
-using System.Threading;\r
-using SlimDX.Direct3D9;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CStage演奏ギター画面 : CStage演奏画面共通\r
- {\r
- // コンストラクタ\r
-\r
- public CStage演奏ギター画面()\r
- {\r
- base.eステージID = CStage.Eステージ.演奏;\r
- base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
- base.b活性化してない = true;\r
- base.list子Activities.Add(this.actStageFailed = new CAct演奏ステージ失敗());\r
- base.list子Activities.Add(this.actDANGER = new CAct演奏GuitarDanger());\r
- base.list子Activities.Add(this.actAVI = new CAct演奏AVI());\r
- base.list子Activities.Add(this.actBGA = new CAct演奏BGA());\r
- base.list子Activities.Add(this.actPanel = new CAct演奏パネル文字列());\r
- base.list子Activities.Add(this.act譜面スクロール速度 = new CAct演奏スクロール速度());\r
- base.list子Activities.Add(this.actStatusPanels = new CAct演奏Guitarステータスパネル());\r
- base.list子Activities.Add(this.actWailingBonus = new CAct演奏GuitarWailingBonus());\r
- base.list子Activities.Add(this.actScore = new CAct演奏Guitarスコア());\r
- base.list子Activities.Add(this.actRGB = new CAct演奏GuitarRGB());\r
- base.list子Activities.Add(this.actLaneFlushGB = new CAct演奏GuitarレーンフラッシュGB());\r
- base.list子Activities.Add(this.actJudgeString = new CAct演奏Guitar判定文字列());\r
- base.list子Activities.Add(this.actGauge = new CAct演奏Guitarゲージ());\r
- base.list子Activities.Add(this.actCombo = new CAct演奏Guitarコンボ());\r
- base.list子Activities.Add(this.actChipFireGB = new CAct演奏Guitarチップファイア());\r
- base.list子Activities.Add(this.actPlayInfo = new CAct演奏演奏情報());\r
- base.list子Activities.Add(this.actFI = new CActFIFOBlack());\r
- base.list子Activities.Add(this.actFO = new CActFIFOBlack());\r
- base.list子Activities.Add(this.actFOClear = new CActFIFOWhite());\r
- }\r
-\r
- // CStage 実装\r
-\r
- public override void On活性化()\r
- {\r
- dtLastQueueOperation = DateTime.MinValue;\r
- base.On活性化();\r
- }\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.txチップ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar chips.png"));\r
- this.txヒットバー = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar hit-bar.png"));\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txチップ);\r
- TextureFactory.tテクスチャの解放(ref this.txヒットバー);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- // その他\r
- #region [ private ]\r
- //-----------------\r
- protected override void t進行描画_ギターベース判定ライン() // yyagi: ドラム画面とは座標が違うだけですが、まとめづらかったのでそのまま放置してます。\r
- {\r
- if ((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
- {\r
- if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
- {\r
- int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, bReverse[(int)E楽器パート.GUITAR], false, true)\r
- - (int)(3 * Scale.Y);\r
- // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
- if (this.txヒットバー != null)\r
- {\r
- for (int i = 0; i < 4; i++)\r
- {\r
- this.txヒットバー.t2D描画(CDTXMania.Instance.Device,\r
- (23 + (28 * i)) * Scale.X,\r
- y,\r
- new Rectangle(\r
- 0,\r
- (int)(i * 8 * Scale.Y),\r
- (int)(28 * Scale.X),\r
- (int)(8 * Scale.Y)\r
- )\r
- );\r
- }\r
- }\r
- }\r
- if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
- {\r
- int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, bReverse[(int)E楽器パート.BASS], false, true)\r
- - (int)(3 * Scale.Y);\r
- // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
- if (this.txヒットバー != null)\r
- {\r
- for (int j = 0; j < 4; j++)\r
- {\r
- this.txヒットバー.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (477 + (28 * j)) * Scale.X,\r
- y,\r
- new Rectangle(\r
- 0,\r
- (int)(j * 8 * Scale.Y),\r
- (int)(28 * Scale.X),\r
- (int)(8 * Scale.Y)\r
- )\r
- );\r
- }\r
- }\r
- }\r
- }\r
- }\r
-\r
- protected override void t背景テクスチャの生成()\r
- {\r
- Rectangle bgrect = new Rectangle((int)(181 * Scale.X), (int)(50 * Scale.Y), (int)(278 * Scale.X), (int)(355 * Scale.Y));\r
- string DefaultBgFilename = @"Graphics\ScreenPlayGuitar background.png";\r
- string DefaultLaneFilename = "";\r
- string BgFilename = "";\r
- string BACKGROUND = null;\r
- if ((CDTXMania.Instance.DTX.BACKGROUND_GR != null) && (CDTXMania.Instance.DTX.BACKGROUND_GR.Length > 0))\r
- {\r
- BACKGROUND = CDTXMania.Instance.DTX.BACKGROUND_GR;\r
- }\r
- else if ((CDTXMania.Instance.DTX.BACKGROUND != null) && (CDTXMania.Instance.DTX.BACKGROUND.Length > 0))\r
- {\r
- BACKGROUND = CDTXMania.Instance.DTX.BACKGROUND;\r
- }\r
- if ((BACKGROUND != null) && (BACKGROUND.Length > 0))\r
- {\r
- BgFilename = CDTXMania.Instance.DTX.strフォルダ名 + BACKGROUND;\r
- }\r
- base.t背景テクスチャの生成(DefaultBgFilename, DefaultLaneFilename, bgrect, BgFilename);\r
- }\r
-\r
- protected override void t進行描画_チップ_ドラムス(ref CChip pChip)\r
- {\r
- // int indexSevenLanes = this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ];\r
- if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
- {\r
- pChip.bHit = true;\r
- this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.DRUMS));\r
- }\r
- }\r
- protected override void t進行描画_チップ_ギターベース(ref CChip pChip, E楽器パート inst)\r
- {\r
- base.t進行描画_チップ_ギターベース(ref pChip, inst,\r
- 演奏判定ライン座標.n判定ラインY座標(inst, false), // 40\r
- 演奏判定ライン座標.n判定ラインY座標(inst, true), // 369\r
- (int)(0 * Scale.Y), (int)(409 * Scale.Y), // Y軸表示範囲\r
- 26, 480, // openチップのX座標(Gt, Bs)\r
- 0, 192, 103, 8, 32, // オープンチップregionの x, y, w, h, 通常チップのw\r
- 26, 98, 480, 552, // GtのX, Gt左利きのX, BsのX, Bs左利きのX,\r
- 36, 32 // 描画のX座標間隔, テクスチャのX座標間隔\r
- );\r
- }\r
- protected override void t進行描画_チップ_フィルイン(ref CChip pChip)\r
- {\r
- if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
- {\r
- pChip.bHit = true;\r
- }\r
-#if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST\r
- switch ( pChip.n整数値 )\r
- {\r
- case 0x04: // HH消音あり(従来同等)\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = true;\r
- break;\r
- case 0x05: // HH消音無し\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = false;\r
- break;\r
- case 0x06: // ギター消音あり(従来同等)\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Guitar = true;\r
- break;\r
- case 0x07: // ギター消音無し\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Guitar = false;\r
- break;\r
- case 0x08: // ベース消音あり(従来同等)\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = true;\r
- break;\r
- case 0x09: // ベース消音無し\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = false;\r
- break;\r
- }\r
-#endif\r
-\r
- }\r
- protected override void t進行描画_チップ_空打ち音設定_ドラム(ref CChip pChip)\r
- {\r
- if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
- {\r
- pChip.bHit = true;\r
- }\r
- }\r
-\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using SlimDX;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏DrumsDanger : CAct演奏Danger共通\r
- {\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.txDANGER = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlayDrums danger.png"), false);\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txDANGER);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- public override int On進行描画()\r
- {\r
- throw new InvalidOperationException("t進行描画(bool)のほうを使用してください。");\r
- }\r
- /// <summary>\r
- /// ドラム画面のDANGER描画\r
- /// </summary>\r
- /// <param name="bIsDangerDrums">DrumsのゲージがDangerかどうか(Guitar/Bassと共用のゲージ)</param>\r
- /// <param name="bIsDangerGuitar">Guitarのゲージ(未使用)</param>\r
- /// <param name="bIsDangerBass">Bassのゲージ(未使用)</param>\r
- /// <returns></returns>\r
- public override int t進行描画(bool bIsDangerDrums, bool bIsDangerGuitar, bool bIsDangerBass)\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- if (!bIsDangerDrums)\r
- {\r
- this.bDanger中[(int)E楽器パート.DRUMS] = false;\r
- return 0;\r
- }\r
- if (!this.bDanger中[(int)E楽器パート.DRUMS])\r
- {\r
- this.ct移動用 = new CCounter(0, 0x7f, 7, CDTXMania.Instance.Timer);\r
- this.ct透明度用 = new CCounter(0, 0x167, 4, CDTXMania.Instance.Timer);\r
- }\r
- this.bDanger中[(int)E楽器パート.DRUMS] = bIsDangerDrums;\r
- this.ct移動用.t進行Loop();\r
- this.ct透明度用.t進行Loop();\r
- if (!this.bDanger中[(int)E楽器パート.DRUMS])\r
- {\r
- return 0;\r
- }\r
- int num = this.ct透明度用.n現在の値;\r
- if (this.txDANGER != null)\r
- {\r
- this.txDANGER.n透明度 = 60 + ((num < 180) ? num : (360 - num));\r
- }\r
- num = this.ct移動用.n現在の値;\r
- int num2 = CDTXMania.Instance.ConfigIni.bReverse.Drums ? (0x7f - num) : num;\r
- float[,] n基準X座標 = new float[,] { { 38, 298 }, { 211f, 405.5f } };\r
- for (int i = -1; i < 4; i++)\r
- {\r
- if (this.txDANGER != null)\r
- {\r
- float d = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1.0f : 0.75f;\r
- this.txDANGER.vc拡大縮小倍率 = new Vector3(d, d, d);\r
- this.txDANGER.t2D描画(CDTXMania.Instance.Device, n基準X座標[(CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 0 : 1), 0] * Scale.X, ((i * 0x80) + num2) * Scale.Y);\r
- //this.txDANGER.t2D描画( CDTXMania.Instance.app.Device, 0x26 * Scale.X, ( ( ( i * 0x80 ) + num2 ) + 0x40 ) * Scale.Y, this.rc領域[ 1 ] );\r
- this.txDANGER.t2D描画(CDTXMania.Instance.Device, n基準X座標[(CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 0 : 1), 1] * Scale.X, ((i * 0x80) + num2) * Scale.Y);\r
- //this.txDANGER.t2D描画( CDTXMania.Instance.app.Device, 0x12a * Scale.X, ( ( ( i * 0x80 ) + num2 ) + 0x40 ) * Scale.Y, this.rc領域[ 1 ] );\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- //private bool bDanger中;\r
- //private CCounter ct移動用;\r
- //private CCounter ct透明度用;\r
- // private const int n右位置 = 0x12a;\r
- // private const int n左位置 = 0x26;\r
- //private readonly Rectangle[] rc領域 = new Rectangle[] {\r
- // new Rectangle( 0, 0, (int)(0x20 * Scale.X), (int)(0x40 * Scale.Y) ),\r
- // new Rectangle( (int)(0x20 * Scale.X), (int)(0 * Scale.Y), (int)(0x20 * Scale.X), (int)(0x40 * Scale.Y) )\r
- //};\r
- private CTextureAf txDANGER;\r
-\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏DrumsRGB : CAct演奏RGB共通\r
- {\r
- // CActivity 実装(共通クラスからの差分のみ)\r
-\r
- public override int On進行描画()\r
- {\r
- throw new InvalidOperationException("t進行描画(C演奏判定ライン座標共通 演奏判定ライン共通 ) のほうを使用してください。");\r
- }\r
- public override int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標)\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- if (!CDTXMania.Instance.ConfigIni.bGuitar有効)\r
- {\r
- return 0;\r
- }\r
- if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
- {\r
- int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1527 : 1456;\r
- for (int i = 0; i < 3; i++)\r
- {\r
- int index = CDTXMania.Instance.ConfigIni.bLeft.Guitar ? (2 - i) : i;\r
- Rectangle rc = new Rectangle(\r
- index * 72,\r
- 0,\r
- 72,\r
- 72\r
- );\r
- if (base.b押下状態[index])\r
- {\r
- rc.Y += 72;\r
- }\r
- if (base.txRGB != null)\r
- {\r
- // int y = 演奏判定ライン座標.n判定ラインY座標( E楽器パート.GUITAR, true, CDTXMania.Instance.ConfigIni.bReverse.Guitar, false, false );\r
- //base.txRGB.t2D描画( CDTXMania.Instance.app.Device, 0x1fd + ( j * 0x1a ), 0x39, rectangle );\r
- int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.GUITAR, false, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- base.txRGB.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x + (i * 26 * 3),\r
- y,\r
- rc\r
- );\r
- }\r
- }\r
- }\r
- if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
- {\r
- for (int i = 0; i < 3; i++)\r
- {\r
- int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1200 : 206;\r
- int index = CDTXMania.Instance.ConfigIni.bLeft.Bass ? (2 - i) : i;\r
- Rectangle rc = new Rectangle(\r
- index * 72,\r
- 0,\r
- 72,\r
- 72\r
- );\r
- if (base.b押下状態[index + 3])\r
- {\r
- rc.Y += 72;\r
- }\r
- if (base.txRGB != null)\r
- {\r
- int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.BASS, false, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- base.txRGB.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x + (i * 26 * 3),\r
- y,\r
- rc\r
- );\r
- }\r
- }\r
- }\r
- for (int i = 0; i < 6; i++)\r
- {\r
- base.b押下状態[i] = false;\r
- }\r
- }\r
- return 0;\r
- }\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏DrumsWailingBonus : CAct演奏WailingBonus共通\r
- {\r
- // コンストラクタ\r
-\r
- public CAct演奏DrumsWailingBonus()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
- // メソッド\r
- public override void Start(E楽器パート part, CChip r歓声Chip)\r
- {\r
- if ((part == E楽器パート.GUITAR) || (part == E楽器パート.BASS))\r
- {\r
- int num = (int)part;\r
- for (int i = 0; i < 4; i++)\r
- {\r
- if (this.ct進行用[num, i].b停止中)\r
- {\r
- this.ct進行用[num, i] = new CCounter(0, 300, 2, CDTXMania.Instance.Timer);\r
- if (CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
- {\r
- if (r歓声Chip != null)\r
- {\r
- CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
- return;\r
- }\r
- CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
- return;\r
- }\r
- break;\r
- }\r
- }\r
- }\r
- }\r
-\r
-\r
- // CActivity 実装\r
-\r
- public override void On活性化()\r
- {\r
- for (int i = 0; i < 3; i++)\r
- {\r
- for (int j = 0; j < 4; j++)\r
- {\r
- this.ct進行用[i, j] = new CCounter();\r
- }\r
- }\r
- base.On活性化();\r
- }\r
- public override void On非活性化()\r
- {\r
- for (int i = 0; i < 3; i++)\r
- {\r
- for (int j = 0; j < 4; j++)\r
- {\r
- this.ct進行用[i, j] = null;\r
- }\r
- }\r
- base.On非活性化();\r
- }\r
-\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- for (int i = 0; i < 2; i++)\r
- {\r
- E楽器パート e楽器パート = (i == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
- for (int j = 0; j < 4; j++)\r
- {\r
- if (!this.ct進行用[(int)e楽器パート, j].b停止中)\r
- {\r
- if (this.ct進行用[(int)e楽器パート, j].b終了値に達した)\r
- {\r
- this.ct進行用[(int)e楽器パート, j].t停止();\r
- }\r
- else\r
- {\r
- this.ct進行用[(int)e楽器パート, j].t進行();\r
- int x = ((e楽器パート == E楽器パート.GUITAR) ? 1521 + 234 : 1194 + 234);\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- x -= (e楽器パート == E楽器パート.GUITAR) ? 71 : 994;\r
- }\r
- int num4 = 0;\r
- int num5 = 0;\r
- int num6 = this.ct進行用[(int)e楽器パート, j].n現在の値;\r
- if (num6 < 100)\r
- {\r
- num4 = (int)(64.0 + (290.0 * Math.Cos(Math.PI / 2 * (((float)num6) / 100f))));\r
- }\r
- else if (num6 < 150)\r
- {\r
- num4 = (int)(64.0 + ((150 - num6) * Math.Sin((Math.PI * ((num6 - 100) % 0x19)) / 25.0)));\r
- }\r
- else if (num6 < 200)\r
- {\r
- num4 = 0x40;\r
- }\r
- else\r
- {\r
- num4 = (int)(64f - (((float)(290 * (num6 - 200))) / 100f));\r
- }\r
- if (CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート])\r
- {\r
- num4 = (0x163 - num4) - 0xf4;\r
- }\r
- Rectangle rectangle = new Rectangle(0, 0, 0x1a, 0x7a * 2);\r
- if ((0x163 - num4) < rectangle.Bottom)\r
- {\r
- rectangle.Height = (0x163 - num4) - rectangle.Top;\r
- }\r
- if (num4 < 0)\r
- {\r
- rectangle.Y = -num4;\r
- num5 = -num4;\r
- }\r
- if ((rectangle.Top < rectangle.Bottom) && (this.txWailingBonus != null))\r
- {\r
- rectangle.X = (int)(rectangle.X * Scale.X);\r
- rectangle.Y = (int)(rectangle.Y * Scale.Y);\r
- rectangle.Width = (int)(rectangle.Width * Scale.X);\r
- rectangle.Height = (int)(rectangle.Height * Scale.Y);\r
- this.txWailingBonus.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x,\r
- ((((e楽器パート == E楽器パート.GUITAR) ? 0x39 : 0x39) + num4) + num5) * Scale.Y,\r
- rectangle\r
- );\r
- }\r
- //num5 = 0;\r
- //rectangle = new Rectangle( 0x1a, 0, 0x1a, 0x7a );\r
- //if( ( 0x163 - ( num4 + 0x7a ) ) < rectangle.Bottom )\r
- //{\r
- // rectangle.Height = ( 0x163 - ( num4 + 0x7a ) ) - rectangle.Top;\r
- //}\r
- //if( ( num4 + 0x7a ) < 0 )\r
- //{\r
- // rectangle.Y = -( num4 + 0x7a );\r
- // num5 = -( num4 + 0x7a );\r
- //}\r
- //if( ( rectangle.Top < rectangle.Bottom ) && ( this.txWailingBonus != null ) )\r
- //{\r
- // this.txWailingBonus.t2D描画( CDTXMania.Instance.app.Device, x, ( ( ( ( e楽器パート == E楽器パート.GUITAR ) ? 0x39 : 0x39 ) + num4 ) + num5 ) + 0x7a, rectangle );\r
- //}\r
- }\r
- }\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
- }\r
-}\r
+
\ No newline at end of file
// 修正等\r
// ・画像がないと落ちる→修正済\r
\r
+ private double dbグラフ値目標;\r
+ private double dbグラフ値目標_表示;\r
+ private double dbグラフ値現在;\r
+ private double dbグラフ値現在_表示;\r
+\r
+ private CTexture txグラフ;\r
private int XPos = 3 * 345;\r
private int YPos = 200;\r
private int DispHeight = 400;\r
{\r
if (!base.b活性化してない)\r
{\r
- if (base.b初めての進行描画)\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- /* #35804 エフェクトを変更しました。\r
- for( int k = 0; k < 64; k++ )\r
+ if (base.b初めての進行描画)\r
{\r
- this.stキラキラ[ k ].x = CDTXMania.Instance.Random.Next( 30 );\r
- this.stキラキラ[ k ].fScale = 1f + ( CDTXMania.Instance.Random.Next( 9 ) * 0.2f );\r
- this.stキラキラ[ k ].Trans = 0 + CDTXMania.Instance.Random.Next( 32 ) ;\r
- if (k < 32)\r
- {\r
- this.stキラキラ[ k ].ct進行 = new CCounter(0, DispHeight, 10 + CDTXMania.Instance.Random.Next(20), CDTXMania.Instance.Timer);\r
- }\r
- else if (k < 64)\r
- {\r
- this.stキラキラ[ k ].ct進行 = new CCounter(0, DispHeight, 20 + CDTXMania.Instance.Random.Next(50), CDTXMania.Instance.Timer);\r
- }\r
- this.stキラキラ[ k ].ct進行.n現在の値 = CDTXMania.Instance.Random.Next(DispHeight);\r
+ base.b初めての進行描画 = false;\r
+ counterYposInImg = new CCounter(0, 35, 16, CDTXMania.Instance.Timer);\r
}\r
- for( int k = 0; k < 16; k++ )\r
- {\r
- this.stフラッシュ[ k ].y = -1;\r
- this.stフラッシュ[ k ].Trans = 0;\r
- }\r
- */\r
- base.b初めての進行描画 = false;\r
- counterYposInImg = new CCounter(0, 35, 16, CDTXMania.Instance.Timer);\r
- }\r
-\r
- counterYposInImg.t進行Loop();\r
- int stYposInImg = counterYposInImg.n現在の値;\r
\r
- // レーン表示位置によって変更\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- XPos = 1350;\r
- }\r
+ counterYposInImg.t進行Loop();\r
+ int stYposInImg = counterYposInImg.n現在の値;\r
\r
- // 背景暗幕\r
- if (this.txグラフ != null)\r
- {\r
- this.txグラフ.vc拡大縮小倍率 = new Vector3(DispWidth, DispHeight, 1f);\r
- this.txグラフ.n透明度 = 128;\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- XPos,\r
- YPos,\r
- new Rectangle(62, 0, 1, 1)\r
-);\r
- }\r
-\r
- // 基準線\r
+ // レーン表示位置によって変更\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ XPos = 1350;\r
+ }\r
\r
- if (this.txグラフ != null)\r
- {\r
- this.txグラフ.n透明度 = 128;\r
- this.txグラフ.vc拡大縮小倍率 = new Vector3(DispWidth, 1f, 1f);\r
- for (int i = 0; i < slices; i++)\r
+ // 背景暗幕\r
+ if (this.txグラフ != null)\r
{\r
+ this.txグラフ.vc拡大縮小倍率 = new Vector3(DispWidth, DispHeight, 1f);\r
+ this.txグラフ.n透明度 = 128;\r
this.txグラフ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- XPos,\r
- YPos + DispHeight * i / slices,\r
- new Rectangle(60, 0, 1, 1)\r
-);\r
- }\r
- /* #35804 chnmr0 縦線は非表示にしました。\r
- this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, DispHeight, 1f);\r
- for (int i = 0; i < 2; i++)\r
- {\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.app.Device,\r
- (XPos + 12 + i * 54),\r
- YPos,\r
- rectangle\r
- );\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.app.Device,\r
- (45 + XPos + i * 54),\r
+ CDTXMania.Instance.Device,\r
+ XPos,\r
YPos,\r
- rectangle\r
- );\r
- }\r
- */\r
- }\r
+ new Rectangle(62, 0, 1, 1)\r
+ );\r
+ }\r
\r
- if (this.txグラフ != null)\r
- {\r
- this.txグラフ.vc拡大縮小倍率 = new Vector3(DispWidth, 1f, 1f);\r
- }\r
- for (int i = 0; i < 5; i++)\r
- {\r
- Rectangle rectangle;\r
- // 基準線を越えたら線が黄色くなる\r
- if (this.dbグラフ値現在 >= (100 - i * slices))\r
+ // 基準線\r
+\r
+ if (this.txグラフ != null)\r
{\r
- rectangle = new Rectangle(61, 0, 1, 1); //黄色\r
- if (this.txグラフ != null)\r
+ this.txグラフ.n透明度 = 128;\r
+ this.txグラフ.vc拡大縮小倍率 = new Vector3(DispWidth, 1f, 1f);\r
+ for (int i = 0; i < slices; i++)\r
{\r
- this.txグラフ.n透明度 = 224;\r
+ this.txグラフ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ XPos,\r
+ YPos + DispHeight * i / slices,\r
+ new Rectangle(60, 0, 1, 1)\r
+ );\r
}\r
}\r
- else\r
+\r
+ if (this.txグラフ != null)\r
+ {\r
+ this.txグラフ.vc拡大縮小倍率 = new Vector3(DispWidth, 1f, 1f);\r
+ }\r
+ for (int i = 0; i < 5; i++)\r
{\r
- rectangle = new Rectangle(60, 0, 1, 1);\r
+ Rectangle rectangle;\r
+ // 基準線を越えたら線が黄色くなる\r
+ if (this.dbグラフ値現在 >= (100 - i * slices))\r
+ {\r
+ rectangle = new Rectangle(61, 0, 1, 1); //黄色\r
+ if (this.txグラフ != null)\r
+ {\r
+ this.txグラフ.n透明度 = 224;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ rectangle = new Rectangle(60, 0, 1, 1);\r
+ if (this.txグラフ != null)\r
+ {\r
+ this.txグラフ.n透明度 = 160;\r
+ }\r
+ }\r
+\r
if (this.txグラフ != null)\r
{\r
- this.txグラフ.n透明度 = 160;\r
+ this.txグラフ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ XPos,\r
+ YPos + i * DispHeight / slices,\r
+ rectangle\r
+ );\r
}\r
}\r
+ // グラフ\r
+ // --現在値\r
+ if (this.dbグラフ値現在_表示 < this.dbグラフ値現在)\r
+ {\r
+ this.dbグラフ値現在_表示 += (this.dbグラフ値現在 - this.dbグラフ値現在_表示) / 5 + 0.01;\r
+ }\r
+ if (this.dbグラフ値現在_表示 >= this.dbグラフ値現在)\r
+ {\r
+ this.dbグラフ値現在_表示 = this.dbグラフ値現在;\r
+ }\r
+ int ar = (int)(DispHeight * this.dbグラフ値現在_表示 / 100.0);\r
\r
if (this.txグラフ != null)\r
{\r
+ this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
+ this.txグラフ.n透明度 = 255;\r
this.txグラフ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- XPos,\r
- YPos + i * DispHeight / slices,\r
- rectangle\r
-);\r
- }\r
- }\r
- // グラフ\r
- // --現在値\r
- if (this.dbグラフ値現在_表示 < this.dbグラフ値現在)\r
- {\r
- this.dbグラフ値現在_表示 += (this.dbグラフ値現在 - this.dbグラフ値現在_表示) / 5 + 0.01;\r
- }\r
- if (this.dbグラフ値現在_表示 >= this.dbグラフ値現在)\r
- {\r
- this.dbグラフ値現在_表示 = this.dbグラフ値現在;\r
- }\r
- int ar = (int)(DispHeight * this.dbグラフ値現在_表示 / 100.0);\r
-\r
- if (this.txグラフ != null)\r
- {\r
- this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
- this.txグラフ.n透明度 = 255;\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- XPos,\r
- YPos + DispHeight - ar,\r
- new Rectangle(0, 5 + stYposInImg, 30, ar)\r
-);\r
- this.txグラフ.t2D描画( // 上部白いバー\r
- CDTXMania.Instance.Device,\r
- XPos,\r
- YPos + DispHeight - ar,\r
- new Rectangle(0, 0, 30, 5)\r
- );\r
- }\r
- /*\r
- for( int k = 0; k < 32; k++ )\r
- {\r
- rectangle = new Rectangle(60,0,1,1);\r
- if (this.txグラフ != null)\r
- {\r
- this.stキラキラ[ k ].ct進行.t進行Loop();\r
- int num1 = (int)this.stキラキラ[ k ].x;\r
- int num2 = this.stキラキラ[ k ].ct進行.n現在の値;\r
- this.txグラフ.vc拡大縮小倍率 = new Vector3(this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale);\r
- this.txグラフ.n透明度 = 138 - 2 * this.stキラキラ[ k ].Trans;\r
- if ( num2 < (2.3f * this.dbグラフ値現在_表示) )\r
- {\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.app.Device,\r
- XPos + 15 + num1,\r
- YPos + DispHeight - num2,\r
- rectangle\r
+ CDTXMania.Instance.Device,\r
+ XPos,\r
+ YPos + DispHeight - ar,\r
+ new Rectangle(0, 5 + stYposInImg, 30, ar)\r
);\r
- }\r
- }\r
- }\r
- */\r
-\r
- // --現在値_追加エフェクト\r
- /*\r
- if (this.dbグラフ値直前 != this.dbグラフ値現在)\r
- {\r
- this.stフラッシュ[ nグラフフラッシュct ].y = 0;\r
- this.stフラッシュ[ nグラフフラッシュct ].Trans = 224;\r
- nグラフフラッシュct ++;\r
- if (nグラフフラッシュct >= 16)\r
- {\r
- nグラフフラッシュct = 0;\r
- }\r
- }\r
- this.dbグラフ値直前 = this.dbグラフ値現在;\r
-\r
- for (int m = 0; m < 16; m++)\r
- {\r
- rectangle = new Rectangle(60,0,1,1);\r
-\r
- if ((this.stフラッシュ[ m ].y >= 0) &&\r
- (this.stフラッシュ[ m ].y+3 < ar) &&\r
- (this.txグラフ != null))\r
- {\r
- // this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
- this.txグラフ.n透明度 = this.stフラッシュ[ m ].Trans;\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.app.Device,\r
- XPos + 15,\r
- (this.stフラッシュ[ m ].y + YPos + DispHeight - ar),\r
- rectangle\r
- );\r
- this.txグラフ.n透明度 = this.stフラッシュ[ m ].Trans;\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.app.Device,\r
- XPos + 15,\r
- (this.stフラッシュ[ m ].y + 2 + YPos + DispHeight - ar),\r
- rectangle\r
+ this.txグラフ.t2D描画( // 上部白いバー\r
+ CDTXMania.Instance.Device,\r
+ XPos,\r
+ YPos + DispHeight - ar,\r
+ new Rectangle(0, 0, 30, 5)\r
);\r
- }\r
- this.stフラッシュ[ m ].y += 4;\r
- this.stフラッシュ[ m ].Trans -= 4;\r
- }\r
- */\r
+ }\r
\r
- // --現在値_目標越\r
- if ((dbグラフ値現在 >= dbグラフ値目標) && (this.txグラフ != null))\r
- {\r
- // this.txグラフ.vc拡大縮小倍率 = new Vector3(1.4f, 1f, 1f);\r
- this.txグラフ.n透明度 = 128;\r
- this.txグラフ.b加算合成 = true;\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- XPos,\r
- YPos + DispHeight - ar,\r
- new Rectangle(0, 5 + stYposInImg, 30, ar)\r
-);\r
- this.txグラフ.b加算合成 = false;\r
- }\r
- // --目標値\r
- if (this.dbグラフ値目標_表示 < this.dbグラフ値目標)\r
- {\r
- this.dbグラフ値目標_表示 += (this.dbグラフ値目標 - this.dbグラフ値目標_表示) / 5 + 0.01;\r
- }\r
- if (this.dbグラフ値目標_表示 >= this.dbグラフ値目標)\r
- {\r
- this.dbグラフ値目標_表示 = this.dbグラフ値目標;\r
- }\r
- ar = (int)(DispHeight * this.dbグラフ値目標_表示 / 100.0);\r
+ // --現在値_目標越\r
+ if ((dbグラフ値現在 >= dbグラフ値目標) && (this.txグラフ != null))\r
+ {\r
+ // this.txグラフ.vc拡大縮小倍率 = new Vector3(1.4f, 1f, 1f);\r
+ this.txグラフ.n透明度 = 128;\r
+ this.txグラフ.b加算合成 = true;\r
+ this.txグラフ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ XPos,\r
+ YPos + DispHeight - ar,\r
+ new Rectangle(0, 5 + stYposInImg, 30, ar)\r
+ );\r
+ this.txグラフ.b加算合成 = false;\r
+ }\r
+ // --目標値\r
+ if (this.dbグラフ値目標_表示 < this.dbグラフ値目標)\r
+ {\r
+ this.dbグラフ値目標_表示 += (this.dbグラフ値目標 - this.dbグラフ値目標_表示) / 5 + 0.01;\r
+ }\r
+ if (this.dbグラフ値目標_表示 >= this.dbグラフ値目標)\r
+ {\r
+ this.dbグラフ値目標_表示 = this.dbグラフ値目標;\r
+ }\r
+ ar = (int)(DispHeight * this.dbグラフ値目標_表示 / 100.0);\r
\r
- if (this.txグラフ != null)\r
- {\r
- // this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
- // this.txグラフ.n透明度 = 192;\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- XPos + 30,\r
- YPos + DispHeight - ar,\r
- new Rectangle(30, 5 + stYposInImg, 30, ar)\r
-);\r
- this.txグラフ.n透明度 = 255;\r
- this.txグラフ.t2D描画( // 上部白いバー\r
- CDTXMania.Instance.Device,\r
- XPos + 30,\r
- YPos + DispHeight - ar,\r
- new Rectangle(30, 0, 30, 5)\r
- );\r
- /*\r
- // this.txグラフ.vc拡大縮小倍率 = new Vector3(1.4f, 1f, 1f);\r
- this.txグラフ.n透明度 = 48;\r
- this.txグラフ.b加算合成 = true;\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.app.Device,\r
- XPos + 63,\r
- YPos + DispHeight - ar,\r
- rectangle\r
- );\r
- this.txグラフ.b加算合成 = false;\r
- */\r
- }\r
- /*\r
- for( int k = 32; k < 64; k++ )\r
- {\r
- rectangle = new Rectangle(60,0,1,1);\r
- if (this.txグラフ != null)\r
- {\r
- this.stキラキラ[ k ].ct進行.t進行Loop();\r
- int num1 = (int)this.stキラキラ[ k ].x;\r
- int num2 = this.stキラキラ[ k ].ct進行.n現在の値;\r
- this.txグラフ.vc拡大縮小倍率 = new Vector3(this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale);\r
- this.txグラフ.n透明度 = 138 - 2 * this.stキラキラ[ k ].Trans;\r
- if ( num2 < (2.3f * this.dbグラフ値目標_表示) )\r
- {\r
- this.txグラフ.t2D描画(\r
- CDTXMania.Instance.app.Device,\r
- (XPos + 69 + 3 * num1),\r
- YPos + DispHeight - num2,\r
- rectangle\r
+ if (this.txグラフ != null)\r
+ {\r
+ this.txグラフ.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ XPos + 30,\r
+ YPos + DispHeight - ar,\r
+ new Rectangle(30, 5 + stYposInImg, 30, ar)\r
);\r
- }\r
- }\r
+ this.txグラフ.n透明度 = 255;\r
+ this.txグラフ.t2D描画( // 上部白いバー\r
+ CDTXMania.Instance.Device,\r
+ XPos + 30,\r
+ YPos + DispHeight - ar,\r
+ new Rectangle(30, 0, 30, 5)\r
+ );\r
+ }\r
}\r
- */\r
-\r
}\r
return 0;\r
}\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //----------------\r
- /*\r
- [StructLayout( LayoutKind.Sequential )]\r
- private struct STキラキラ\r
- {\r
- public int x;\r
- public int y;\r
- public float fScale;\r
- public int Trans;\r
- public CCounter ct進行;\r
- }\r
- */\r
- // private STキラキラ[] stキラキラ = new STキラキラ[ 64 ];\r
- // private STキラキラ[] stフラッシュ = new STキラキラ[ 16 ];\r
-\r
- private double dbグラフ値目標;\r
- private double dbグラフ値目標_表示;\r
- private double dbグラフ値現在;\r
- private double dbグラフ値現在_表示;\r
- // private double dbグラフ値直前;\r
- // private int nグラフフラッシュct;\r
-\r
- private CTexture txグラフ;\r
- //-----------------\r
- #endregion\r
}\r
}\r
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Drawing;\r
-using System.Diagnostics;\r
-using SlimDX;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Drumsゲージ : CAct演奏ゲージ共通\r
- {\r
- // プロパティ\r
-\r
- // コンストラクタ\r
-\r
- public CAct演奏Drumsゲージ()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // CActivity 実装\r
-\r
- public override void On活性化()\r
- {\r
- // CAct演奏ゲージ共通.Init()に移動\r
- // this.dbゲージ値 = ( CDTXMania.Instance.ConfigIni.nRisky > 0 ) ? 1.0 : 0.66666666666666663;\r
- base.On活性化();\r
- }\r
- public override void On非活性化()\r
- {\r
- this.ct本体振動 = null;\r
- this.ct本体移動 = null;\r
- for (int i = 0; i < 24; i++)\r
- {\r
- this.st白い星[i].ct進行 = null;\r
- }\r
- base.On非活性化();\r
- }\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.txゲージ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums gauge.png"));\r
- this.txゲージ白 = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlayDrums_gauge_white.png "));\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txゲージ白);\r
- TextureFactory.tテクスチャの解放(ref this.txゲージ);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- #region [ 初めての進行描画 ]\r
- if (base.b初めての進行描画)\r
- {\r
- for (int k = 0; k < 0x18; k++)\r
- {\r
- this.st白い星[k].x = 2 + CDTXMania.Instance.Random.Next(4);\r
- this.st白い星[k].fScale = 0.2f + (CDTXMania.Instance.Random.Next(2) * 0.05f);\r
- this.st白い星[k].ct進行 = new CCounter(0, 0x160, 8 + CDTXMania.Instance.Random.Next(4), CDTXMania.Instance.Timer);\r
- this.st白い星[k].ct進行.n現在の値 = CDTXMania.Instance.Random.Next(0x160);\r
- }\r
- this.ct本体移動 = new CCounter(0, 0x1a, 20, CDTXMania.Instance.Timer);\r
- this.ct本体振動 = new CCounter(0, 360, 4, CDTXMania.Instance.Timer);\r
- base.b初めての進行描画 = false;\r
- }\r
- #endregion\r
- this.ct本体移動.t進行Loop();\r
- this.ct本体振動.t進行Loop();\r
-\r
- #region [ Risky残りMiss回数表示 ]\r
- if (this.bRisky && this.actLVLNFont != null) // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
- {\r
- CActLVLNFont.EFontColor efc = this.IsDanger(E楽器パート.DRUMS) ?\r
- CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
- actLVLNFont.t文字列描画((int)(12 * Scale.X), (int)(408 * Scale.Y), nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Right);\r
- }\r
- #endregion\r
-\r
- #region [ 緑orオレンジのゲージ表示 ]\r
- const double dbゲージ最大値 = 352.0 * Scale.Y;\r
- int n表示するゲージの高さ = (this.dbゲージ値 == 1.0) ?\r
- ((int)(dbゲージ最大値 * this.dbゲージ値)) :\r
- ((int)((dbゲージ最大値 * this.dbゲージ値) + (2.0 * Math.Sin(Math.PI * 2 * (((double)this.ct本体振動.n現在の値) / 360.0)))));\r
-\r
- if (n表示するゲージの高さ <= 0)\r
- {\r
- return 0;\r
- }\r
- if (this.txゲージ != null)\r
- {\r
- this.txゲージ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
- this.txゲージ.n透明度 = 0xff;\r
- this.txゲージ.b加算合成 = false;\r
- }\r
- int nCtゲージ内部上昇スクロール現在値 = (int)(this.ct本体移動.n現在の値 * Scale.Y);\r
- int n表示ゲージ最大値 = (int)(0x195 * Scale.Y);\r
- int ybar = (n表示ゲージ最大値 - n表示するゲージの高さ) - nCtゲージ内部上昇スクロール現在値;\r
- int height = n表示するゲージの高さ + nCtゲージ内部上昇スクロール現在値;\r
- while (height > 0)\r
- {\r
- Rectangle rect = (this.dbゲージ値 == 1.0) ?\r
- new Rectangle(48, 0, 48, 61) :\r
- new Rectangle(0, 0, 48, 61);\r
- #region [ clipping ]\r
- if (ybar < (n表示ゲージ最大値 - n表示するゲージの高さ))\r
- {\r
- int d = (n表示ゲージ最大値 - n表示するゲージの高さ) - ybar;\r
- rect.Y += d;\r
- rect.Height -= d;\r
- ybar += d;\r
- }\r
- if ((ybar + rect.Height) > n表示ゲージ最大値)\r
- {\r
- int num7 = (ybar + rect.Height) - n表示ゲージ最大値;\r
- rect.Height -= num7;\r
- }\r
- if (rect.Top >= rect.Bottom)\r
- {\r
- break;\r
- }\r
- #endregion\r
- if (this.txゲージ != null)\r
- {\r
- this.txゲージ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- 6 * Scale.X,\r
- ybar,\r
- rect\r
- );\r
- }\r
- height -= rect.Height;\r
- ybar += rect.Height;\r
- }\r
- #endregion\r
- #region [ 光彩 ]\r
- if (this.txゲージ白 != null)\r
- {\r
- this.txゲージ白.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
- this.txゲージ白.n透明度 = 180;\r
- this.txゲージ白.b加算合成 = true;\r
- }\r
- {\r
- Rectangle rect = new Rectangle(\r
- 0,\r
- 0,\r
- (int)(0x10 * Scale.X),\r
- (int)(0x40 * 4 * Scale.Y)\r
- );\r
- #region [ clipping1 ]\r
- int ylight = (n表示ゲージ最大値 - n表示するゲージの高さ) + (int)(0 * 0x40 * Scale.Y);\r
- if (ylight >= n表示ゲージ最大値)\r
- {\r
- //break;\r
- }\r
- #endregion\r
- else\r
- {\r
- #region [ Clipping2 ]\r
- if ((ylight + rect.Height) > n表示ゲージ最大値)\r
- {\r
- int d = (ylight + rect.Height) - n表示ゲージ最大値;\r
- rect.Height -= d;\r
- }\r
- #endregion\r
- if ((rect.Top < rect.Bottom) && (this.txゲージ白 != null))\r
- {\r
- this.txゲージ白.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (int)(6 * Scale.X),\r
- (int)(ylight + 0.5f),\r
- rect\r
- );\r
- }\r
- }\r
- }\r
- #endregion\r
- #region [ ゲージ頂上の光源 ]\r
- if (this.txゲージ != null)\r
- {\r
- //this.txゲージ.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f );\r
- this.txゲージ.n透明度 = 0xff;\r
- this.txゲージ.b加算合成 = false;\r
- }\r
- {\r
- Rectangle rect = new Rectangle(\r
- (int)(0x30 * Scale.X),\r
- 0,\r
- (int)(0x10 * Scale.X),\r
- (int)(0x10 * Scale.Y)\r
- );\r
- int yゲージ頂上 = n表示ゲージ最大値 - n表示するゲージの高さ;\r
- if (yゲージ頂上 < n表示ゲージ最大値)\r
- {\r
- #region [ clipping ]\r
- if ((yゲージ頂上 + rect.Height) > n表示ゲージ最大値)\r
- {\r
- int d = (yゲージ頂上 + rect.Height) - n表示ゲージ最大値;\r
- rect.Height -= d;\r
- }\r
- #endregion\r
- if ((rect.Top < rect.Bottom) && (this.txゲージ != null))\r
- {\r
- this.txゲージ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (int)(6 * Scale.X),\r
- (int)(yゲージ頂上 + 0.5f),\r
- rect\r
- );\r
- }\r
- }\r
- }\r
- #endregion\r
- #region [ 泡 ]\r
- if (this.txゲージ != null)\r
- {\r
- this.txゲージ.b加算合成 = true;\r
- }\r
- for (int j = 0; j < 24; j++)\r
- {\r
- this.st白い星[j].ct進行.t進行Loop();\r
- int x = 6 + this.st白い星[j].x;\r
- int y泡 = (n表示ゲージ最大値 - n表示するゲージの高さ) + (int)((0x160 - this.st白い星[j].ct進行.n現在の値) * Scale.Y);\r
- int n透明度 = (this.st白い星[j].ct進行.n現在の値 < 0xb0) ? 0 : ((int)(255.0 * (((double)(this.st白い星[j].ct進行.n現在の値 - 0xb0)) / 176.0)));\r
- if ((n透明度 != 0) && (y泡 < (int)(0x191 * Scale.Y)))\r
- {\r
- Rectangle rect = new Rectangle(\r
- (int)(0 * Scale.X),\r
- (int)(0x20 * Scale.Y),\r
- (int)(0x20 * Scale.X),\r
- (int)(0x20 * Scale.Y)\r
- );\r
- if (this.txゲージ != null)\r
- {\r
- this.txゲージ.vc拡大縮小倍率 = new Vector3(this.st白い星[j].fScale, this.st白い星[j].fScale, 1f);\r
- this.txゲージ.n透明度 = n透明度;\r
- this.txゲージ.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (int)(x * Scale.X),\r
- (int)(y泡 + 0.5f),\r
- rect\r
- );\r
- }\r
- }\r
- }\r
- #endregion\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct ST白い星\r
- {\r
- public int x;\r
- public float fScale;\r
- public CCounter ct進行;\r
- }\r
-\r
- private CTextureAf txゲージ白;\r
- private const int STAR_MAX = 0x18;\r
- private ST白い星[] st白い星 = new ST白い星[0x18];\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏DrumsコンボDGB : CAct演奏Combo共通\r
- {\r
- // CAct演奏Combo共通 実装\r
-\r
- protected override void tコンボ表示_ギター(int nCombo値, int nジャンプインデックス)\r
- {\r
- int x, y;\r
- if (CDTXMania.Instance.DTX.bチップがある.Bass || CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1638 : 1567 + 5;\r
- //y = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0xaf : 270;\r
- y = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- y += CDTXMania.Instance.ConfigIni.bReverse.Guitar ? (int)(-134 * Scale.Y) : (int)(+174 * Scale.Y);\r
- if (base.txCOMBOギター != null)\r
- {\r
- base.txCOMBOギター.n透明度 = 120;\r
- }\r
- }\r
- else\r
- {\r
- x = 1344;\r
- //y = CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 0xee : 0xcf;\r
- y = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- y += CDTXMania.Instance.ConfigIni.bReverse.Guitar ? (int)(-134 * Scale.Y) : (int)(+174 * Scale.Y);\r
- if (base.txCOMBOギター != null)\r
- {\r
- base.txCOMBOギター.n透明度 = 0xff;\r
- }\r
- }\r
- base.tコンボ表示_ギター(nCombo値, x, y, nジャンプインデックス);\r
- }\r
- protected override void tコンボ表示_ドラム(int nCombo値, int nジャンプインデックス)\r
- {\r
- base.tコンボ表示_ドラム(nCombo値, nジャンプインデックス);\r
- }\r
- protected override void tコンボ表示_ベース(int nCombo値, int nジャンプインデックス)\r
- {\r
- int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1311 : 1311 - 994 + 5;\r
- //int y = CDTXMania.Instance.ConfigIni.bReverse.Bass ? 0xaf : 270;\r
- int y = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- y += CDTXMania.Instance.ConfigIni.bReverse.Bass ? (int)(-134 * Scale.Y) : (int)(+174 * Scale.Y);\r
- if (base.txCOMBOギター != null)\r
- {\r
- base.txCOMBOギター.n透明度 = 120;\r
- }\r
- base.tコンボ表示_ベース(nCombo値, x, y, nジャンプインデックス);\r
- }\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Drumsスコア : CAct演奏スコア共通\r
- {\r
- // CActivity 実装(共通クラスからの差分のみ)\r
-\r
- public override unsafe int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- if (base.b初めての進行描画)\r
- {\r
- base.n進行用タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
- base.b初めての進行描画 = false;\r
- }\r
- long num = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
- if (num < base.n進行用タイマ)\r
- {\r
- base.n進行用タイマ = num;\r
- }\r
- while ((num - base.n進行用タイマ) >= 10)\r
- {\r
- for (int j = 0; j < 3; j++)\r
- {\r
- this.n現在表示中のスコア[j] += this.nスコアの増分[j];\r
-\r
- if (this.n現在表示中のスコア[j] > (long)this.n現在の本当のスコア[j])\r
- this.n現在表示中のスコア[j] = (long)this.n現在の本当のスコア[j];\r
- }\r
- base.n進行用タイマ += 10;\r
- }\r
- string str = this.n現在表示中のスコア.Drums.ToString("0000000000");\r
- for (int i = 0; i < 10; i++)\r
- {\r
- Rectangle rectangle;\r
- char ch = str[i];\r
- if (ch.Equals(' '))\r
- {\r
- rectangle = new Rectangle(\r
- 0,\r
- 0,\r
- (int)(12 * Scale.X),\r
- (int)(0x18 * Scale.Y)\r
- );\r
- }\r
- else\r
- {\r
- int num4 = int.Parse(str.Substring(i, 1));\r
- if (num4 < 5)\r
- {\r
- rectangle = new Rectangle(\r
- (int)(num4 * 12 * Scale.X),\r
- 0,\r
- (int)(12 * Scale.X),\r
- (int)(0x18 * Scale.Y)\r
- );\r
- }\r
- else\r
- {\r
- rectangle = new Rectangle(\r
- (int)((num4 - 5) * 12 * Scale.X),\r
- (int)(0x18 * Scale.Y),\r
- (int)(12 * Scale.X),\r
- (int)(0x18 * Scale.Y)\r
- );\r
- }\r
- }\r
- if (base.txScore != null)\r
- {\r
- base.txScore.t2D描画(\r
- CDTXMania.Instance.Device,\r
- (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1068 + (i * 36) : 1490 + i * 36,\r
- 30,\r
- rectangle\r
- );\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Drumsステータスパネル : CAct演奏ステータスパネル共通\r
- {\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.txStatusPanels = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels right.png"));\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txStatusPanels);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない && (this.txStatusPanels != null))\r
- {\r
- this.txStatusPanels.t2D描画(\r
- CDTXMania.Instance.Device,\r
- 0x26f * Scale.X,\r
- 0x14f * Scale.Y,\r
- new Rectangle(\r
- (int)(this.nStatus * 15 * Scale.X),\r
- (int)(0xb7 * Scale.Y),\r
- (int)(15 * Scale.X),\r
- (int)(0x49 * Scale.Y)\r
- )\r
- );\r
- int drums = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums;\r
- if (drums < 0)\r
- {\r
- drums = 0;\r
- }\r
- if (drums > 15)\r
- {\r
- drums = 15;\r
- }\r
- this.txStatusPanels.t2D描画(CDTXMania.Instance.Device,\r
- 0x26f * Scale.X,\r
- 0x3b * Scale.Y,\r
- new Rectangle(\r
- (int)(drums * 15 * Scale.X),\r
- 0,\r
- (int)(15 * Scale.X),\r
- (int)(0xac * Scale.Y)\r
- )\r
- );\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- //[StructLayout( LayoutKind.Sequential )]\r
- //private struct STATUSPANEL\r
- //{\r
- // public string label;\r
- // public int status;\r
- //}\r
-\r
- //private int nStatus;\r
- //private STATUSPANEL[] stパネルマップ;\r
- private CTexture txStatusPanels;\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
{\r
internal class CAct演奏DrumsチップファイアD : CActivity\r
{\r
- // コンストラクタ\r
-\r
- public CAct演奏DrumsチップファイアD()\r
- {\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // メソッド\r
-\r
- public void Start(Eレーン lane)\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct ST火花\r
{\r
- this.Start(lane, false, false, false, 0);\r
+ public int nLane;\r
+ public bool b使用中;\r
+ public CCounter ct進行;\r
+ public float f回転単位;\r
+ public float f回転方向;\r
+ public float fサイズ;\r
}\r
- public void Start(Eレーン lane, bool bフィルイン)\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct ST細波\r
{\r
- this.Start(lane, bフィルイン, false, false, 0);\r
+ public int nLane;\r
+ public bool b使用中;\r
+ public CCounter ct進行;\r
+ public float f角度X;\r
+ public float f角度Y;\r
+ public float f半径;\r
+ public int n進行速度ms;\r
}\r
- public void Start(Eレーン lane, bool bフィルイン, bool b大波)\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct ST青い星\r
{\r
- this.Start(lane, bフィルイン, b大波, false, 0);\r
+ public int nLane;\r
+ public bool b使用中;\r
+ public CCounter ct進行;\r
+ public int n前回のValue;\r
+ public float fX;\r
+ public float fY;\r
+ public float f加速度X;\r
+ public float f加速度Y;\r
+ public float f加速度の加速度X;\r
+ public float f加速度の加速度Y;\r
+ public float f重力加速度;\r
+ public float f半径;\r
}\r
- public void Start(Eレーン lane, bool bフィルイン, bool b大波, bool b細波)\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct ST大波\r
{\r
- this.Start(lane, bフィルイン, b大波, b細波, 0);\r
+ public int nLane;\r
+ public bool b使用中;\r
+ public CCounter ct進行;\r
+ public float f角度X;\r
+ public float f角度Y;\r
+ public float f半径;\r
+ public int n進行速度ms;\r
+ public float f回転単位;\r
+ public float f回転方向;\r
}\r
- public void Start(Eレーン lane, bool bフィルイン, bool b大波, bool b細波, int _nJudgeLinePosY_delta_Drums)\r
+\r
+ private const int BIGWAVE_MAX = 20;\r
+ private bool b細波Balance;\r
+ private bool b大波Balance;\r
+ private const int FIRE_MAX = 8 * 8;\r
+ private readonly float[] fY波の最小仰角 = new float[] { -130f, -126f, -120f, -118f, -110f, -108f, -103f, -97f };\r
+ private readonly float[] fY波の最大仰角 = new float[] { 70f, 72f, 77f, 84f, 89f, 91f, 99f, 107f };\r
+ private readonly int[] nレーンの中央X座標 = new int[] { 54 * 3 - 54 * 3, 92 * 3 - 54 * 3, 126 * 3 - 54 * 3, 167 * 3 - 54 * 3,\r
+ 208 * 3 - 54 * 3, 242 * 3 - 54 * 3, 276 * 3 - 54 * 3, 313 * 3 - 54 * 3 };\r
+ private const int STAR_MAX = 0x100;\r
+ private ST火花[] st火花 = new ST火花[FIRE_MAX];\r
+ private ST大波[] st大波 = new ST大波[BIGWAVE_MAX];\r
+ private ST細波[] st細波 = new ST細波[BIGWAVE_MAX];\r
+ private ST青い星[] st青い星 = new ST青い星[STAR_MAX];\r
+ private CTexture tx火花;\r
+ private CTexture tx細波;\r
+ private CTexture tx青い星;\r
+ private CTexture tx大波;\r
+ private int nJudgeLinePosY_delta_Drums;\r
+\r
+ // メソッド\r
+ public void Start(Eレーン lane, bool bフィルイン = false, bool b大波 = false, bool b細波 = false, int _nJudgeLinePosY_delta_Drums = 0)\r
{\r
- nJudgeLinePosY_delta_Drums = _nJudgeLinePosY_delta_Drums;\r
- if (this.tx火花 != null)\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- for (int j = 0; j < FIRE_MAX; j++)\r
+ nJudgeLinePosY_delta_Drums = _nJudgeLinePosY_delta_Drums;\r
+ if (this.tx火花 != null)\r
{\r
- if (this.st火花[j].b使用中 && this.st火花[j].nLane == (int)lane) // yyagi 負荷軽減のつもり・・・だが、あまり効果なさげ\r
+ for (int j = 0; j < FIRE_MAX; j++)\r
{\r
- this.st火花[j].ct進行.t停止();\r
- this.st火花[j].b使用中 = false;\r
+ if (this.st火花[j].b使用中 && this.st火花[j].nLane == (int)lane) // yyagi 負荷軽減のつもり・・・だが、あまり効果なさげ\r
+ {\r
+ this.st火花[j].ct進行.t停止();\r
+ this.st火花[j].b使用中 = false;\r
+ }\r
}\r
- }\r
- float n回転初期値 = CDTXMania.Instance.Random.Next(360);\r
- for (int i = 0; i < 8; i++)\r
- {\r
- for (int j = 0; j < FIRE_MAX; j++)\r
+ float n回転初期値 = CDTXMania.Instance.Random.Next(360);\r
+ for (int i = 0; i < 8; i++)\r
{\r
- if (!this.st火花[j].b使用中)\r
+ for (int j = 0; j < FIRE_MAX; j++)\r
{\r
- this.st火花[j].b使用中 = true;\r
- this.st火花[j].nLane = (int)lane;\r
- // this.st火花[ j ].ct進行 = new CCounter( 0, 35, 6, CDTXMania.Instance.Timer );\r
- this.st火花[j].ct進行 = new CCounter(0, 70, 3, CDTXMania.Instance.Timer);\r
- this.st火花[j].f回転単位 = C変換.DegreeToRadian((float)(n回転初期値 + (i * 90f)));\r
- this.st火花[j].f回転方向 = (i < 4) ? 1f : -2f;\r
- this.st火花[j].fサイズ = (i < 4) ? 1f : 0.5f;\r
- break;\r
+ if (!this.st火花[j].b使用中)\r
+ {\r
+ this.st火花[j].b使用中 = true;\r
+ this.st火花[j].nLane = (int)lane;\r
+ this.st火花[j].ct進行 = new CCounter(0, 70, 3, CDTXMania.Instance.Timer);\r
+ this.st火花[j].f回転単位 = C変換.DegreeToRadian((float)(n回転初期値 + (i * 90f)));\r
+ this.st火花[j].f回転方向 = (i < 4) ? 1f : -2f;\r
+ this.st火花[j].fサイズ = (i < 4) ? 1f : 0.5f;\r
+ break;\r
+ }\r
}\r
}\r
}\r
- }\r
- if (bフィルイン && (this.tx青い星 != null))\r
- {\r
- for (int i = 0; i < 0x10; i++)\r
+ if (bフィルイン && (this.tx青い星 != null))\r
{\r
- for (int j = 0; j < STAR_MAX; j++)\r
+ for (int i = 0; i < 0x10; i++)\r
{\r
- if (!this.st青い星[j].b使用中)\r
+ for (int j = 0; j < STAR_MAX; j++)\r
{\r
- this.st青い星[j].b使用中 = true;\r
- int n回転初期値 = CDTXMania.Instance.Random.Next(360);\r
- double num7 = 0.9 + (((double)CDTXMania.Instance.Random.Next(40)) / 100.0);\r
- this.st青い星[j].nLane = (int)lane;\r
- this.st青い星[j].ct進行 = new CCounter(0, 100, 7, CDTXMania.Instance.Timer);\r
- this.st青い星[j].fX =\r
- (int)(this.nレーンの中央X座標[(int)lane] * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75)) +\r
- ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40));\r
- this.st青い星[j].fY = CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
- (float)(119 + 4) - nJudgeLinePosY_delta_Drums : (float)(942 + 14) + nJudgeLinePosY_delta_Drums;\r
- this.st青い星[j].f加速度X = (float)(num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0));\r
- this.st青い星[j].f加速度Y = (float)(num7 * (Math.Sin((Math.PI * 2 * n回転初期値) / 360.0) - 0.2));\r
- this.st青い星[j].f加速度の加速度X = 0.995f;\r
- this.st青い星[j].f加速度の加速度Y = 0.995f;\r
- this.st青い星[j].f重力加速度 = 0.00355f;\r
- this.st青い星[j].f半径 = (float)(0.5 + (((double)CDTXMania.Instance.Random.Next(30)) / 100.0));\r
- break;\r
+ if (!this.st青い星[j].b使用中)\r
+ {\r
+ this.st青い星[j].b使用中 = true;\r
+ int n回転初期値 = CDTXMania.Instance.Random.Next(360);\r
+ double num7 = 0.9 + (((double)CDTXMania.Instance.Random.Next(40)) / 100.0);\r
+ this.st青い星[j].nLane = (int)lane;\r
+ this.st青い星[j].ct進行 = new CCounter(0, 100, 7, CDTXMania.Instance.Timer);\r
+ this.st青い星[j].fX =\r
+ (int)(this.nレーンの中央X座標[(int)lane] * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75)) +\r
+ ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40));\r
+ this.st青い星[j].fY = CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
+ (float)(119 + 4) - nJudgeLinePosY_delta_Drums : (float)(942 + 14) + nJudgeLinePosY_delta_Drums;\r
+ this.st青い星[j].f加速度X = (float)(num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0));\r
+ this.st青い星[j].f加速度Y = (float)(num7 * (Math.Sin((Math.PI * 2 * n回転初期値) / 360.0) - 0.2));\r
+ this.st青い星[j].f加速度の加速度X = 0.995f;\r
+ this.st青い星[j].f加速度の加速度Y = 0.995f;\r
+ this.st青い星[j].f重力加速度 = 0.00355f;\r
+ this.st青い星[j].f半径 = (float)(0.5 + (((double)CDTXMania.Instance.Random.Next(30)) / 100.0));\r
+ break;\r
+ }\r
}\r
}\r
}\r
- }\r
- if (b大波 && (this.tx大波 != null))\r
- {\r
- for (int i = 0; i < 4; i++)\r
+ if (b大波 && (this.tx大波 != null))\r
{\r
- for (int j = 0; j < BIGWAVE_MAX; j++)\r
+ for (int i = 0; i < 4; i++)\r
{\r
- if (!this.st大波[j].b使用中)\r
+ for (int j = 0; j < BIGWAVE_MAX; j++)\r
{\r
- this.st大波[j].b使用中 = true;\r
- this.st大波[j].nLane = (int)lane;\r
- this.st大波[j].f半径 = ((float)((20 - CDTXMania.Instance.Random.Next(40)) + 100)) / 100f;\r
- this.st大波[j].n進行速度ms = 10;\r
- this.st大波[j].ct進行 = new CCounter(0, 100, this.st大波[j].n進行速度ms, CDTXMania.Instance.Timer);\r
- this.st大波[j].ct進行.n現在の値 = i * 10;\r
- this.st大波[j].f角度X = C変換.DegreeToRadian((float)((((double)(CDTXMania.Instance.Random.Next(100) * 50)) / 100.0) + 30.0));\r
- this.st大波[j].f角度Y = C変換.DegreeToRadian(this.b大波Balance ? (this.fY波の最小仰角[(int)lane] + CDTXMania.Instance.Random.Next(30)) : (this.fY波の最大仰角[(int)lane] - CDTXMania.Instance.Random.Next(30)));\r
- this.st大波[j].f回転単位 = C変換.DegreeToRadian((float)0f);\r
- this.st大波[j].f回転方向 = 1f;\r
- this.b大波Balance = !this.b大波Balance;\r
- break;\r
+ if (!this.st大波[j].b使用中)\r
+ {\r
+ this.st大波[j].b使用中 = true;\r
+ this.st大波[j].nLane = (int)lane;\r
+ this.st大波[j].f半径 = ((float)((20 - CDTXMania.Instance.Random.Next(40)) + 100)) / 100f;\r
+ this.st大波[j].n進行速度ms = 10;\r
+ this.st大波[j].ct進行 = new CCounter(0, 100, this.st大波[j].n進行速度ms, CDTXMania.Instance.Timer);\r
+ this.st大波[j].ct進行.n現在の値 = i * 10;\r
+ this.st大波[j].f角度X = C変換.DegreeToRadian((float)((((double)(CDTXMania.Instance.Random.Next(100) * 50)) / 100.0) + 30.0));\r
+ this.st大波[j].f角度Y = C変換.DegreeToRadian(this.b大波Balance ? (this.fY波の最小仰角[(int)lane] + CDTXMania.Instance.Random.Next(30)) : (this.fY波の最大仰角[(int)lane] - CDTXMania.Instance.Random.Next(30)));\r
+ this.st大波[j].f回転単位 = C変換.DegreeToRadian((float)0f);\r
+ this.st大波[j].f回転方向 = 1f;\r
+ this.b大波Balance = !this.b大波Balance;\r
+ break;\r
+ }\r
}\r
}\r
}\r
- }\r
- if (b細波 && (this.tx細波 != null))\r
- {\r
- for (int i = 0; i < 1; i++)\r
+ if (b細波 && (this.tx細波 != null))\r
{\r
- for (int j = 0; j < BIGWAVE_MAX; j++)\r
+ for (int i = 0; i < 1; i++)\r
{\r
- if (!this.st細波[j].b使用中)\r
+ for (int j = 0; j < BIGWAVE_MAX; j++)\r
{\r
- this.st細波[j].b使用中 = true;\r
- this.st細波[j].nLane = (int)lane;\r
- this.st細波[j].f半径 = ((float)((20 - CDTXMania.Instance.Random.Next(40)) + 100)) / 100f;\r
- this.st細波[j].n進行速度ms = 8;\r
- this.st細波[j].ct進行 = new CCounter(0, 100, this.st細波[j].n進行速度ms, CDTXMania.Instance.Timer);\r
- this.st細波[j].ct進行.n現在の値 = 0;\r
- this.st細波[j].f角度X = C変換.DegreeToRadian((float)((((double)(CDTXMania.Instance.Random.Next(100) * 50)) / 100.0) + 30.0));\r
- this.st細波[j].f角度Y = C変換.DegreeToRadian(this.b細波Balance ? (this.fY波の最小仰角[(int)lane] + CDTXMania.Instance.Random.Next(30)) : (this.fY波の最大仰角[(int)lane] - CDTXMania.Instance.Random.Next(30)));\r
- this.b細波Balance = !this.b細波Balance;\r
- break;\r
+ if (!this.st細波[j].b使用中)\r
+ {\r
+ this.st細波[j].b使用中 = true;\r
+ this.st細波[j].nLane = (int)lane;\r
+ this.st細波[j].f半径 = ((float)((20 - CDTXMania.Instance.Random.Next(40)) + 100)) / 100f;\r
+ this.st細波[j].n進行速度ms = 8;\r
+ this.st細波[j].ct進行 = new CCounter(0, 100, this.st細波[j].n進行速度ms, CDTXMania.Instance.Timer);\r
+ this.st細波[j].ct進行.n現在の値 = 0;\r
+ this.st細波[j].f角度X = C変換.DegreeToRadian((float)((((double)(CDTXMania.Instance.Random.Next(100) * 50)) / 100.0) + 30.0));\r
+ this.st細波[j].f角度Y = C変換.DegreeToRadian(this.b細波Balance ? (this.fY波の最小仰角[(int)lane] + CDTXMania.Instance.Random.Next(30)) : (this.fY波の最大仰角[(int)lane] - CDTXMania.Instance.Random.Next(30)));\r
+ this.b細波Balance = !this.b細波Balance;\r
+ break;\r
+ }\r
}\r
}\r
}\r
}\r
public override void On非活性化()\r
{\r
- for (int i = 0; i < FIRE_MAX; i++)\r
- {\r
- this.st火花[i].ct進行 = null;\r
- }\r
- for (int i = 0; i < STAR_MAX; i++)\r
- {\r
- this.st青い星[i].ct進行 = null;\r
- }\r
- for (int i = 0; i < BIGWAVE_MAX; i++)\r
+ if (base.b活性化してる)\r
{\r
- this.st大波[i].ct進行 = null;\r
- this.st細波[i].ct進行 = null;\r
+ for (int i = 0; i < FIRE_MAX; i++)\r
+ {\r
+ this.st火花[i].ct進行 = null;\r
+ }\r
+ for (int i = 0; i < STAR_MAX; i++)\r
+ {\r
+ this.st青い星[i].ct進行 = null;\r
+ }\r
+ for (int i = 0; i < BIGWAVE_MAX; i++)\r
+ {\r
+ this.st大波[i].ct進行 = null;\r
+ this.st細波[i].ct進行 = null;\r
+ }\r
+ base.On非活性化();\r
}\r
- base.On非活性化();\r
}\r
public override void OnManagedリソースの作成()\r
{\r
{\r
if (!base.b活性化してない)\r
{\r
- for (int i = 0; i < FIRE_MAX; i++)\r
- {\r
- if (this.st火花[i].b使用中)\r
- {\r
- this.st火花[i].ct進行.t進行();\r
- if (this.st火花[i].ct進行.b終了値に達した)\r
- {\r
- this.st火花[i].ct進行.t停止();\r
- this.st火花[i].b使用中 = false;\r
- }\r
- Matrix identity = Matrix.Identity;\r
- // float num2 = ( (float) this.st火花[ i ].ct進行.n現在の値 * 2 ) / 70f;\r
- float num2 = ((float)this.st火花[i].ct進行.n現在の値) / 70f;\r
- float num3 = this.st火花[i].f回転単位 + (this.st火花[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num2)));\r
- // float num4 = ( (float) ( 0.2 + ( 0.8 * Math.Cos( ( ( (double) this.st火花[ i ].ct進行.n現在の値 ) * 2 / 50.0 ) * Math.PI / 2 ) ) ) ) * this.st火花[ i ].fサイズ;\r
- float num4 = ((float)(0.2 + (0.8 * Math.Cos((((double)this.st火花[i].ct進行.n現在の値) / 50.0) * Math.PI / 2)))) * this.st火花[i].fサイズ;\r
- identity *= Matrix.Scaling(0.2f + num4, 0.2f + this.st火花[i].fサイズ, 1f);\r
- identity *= Matrix.RotationZ(num3 + ((float)Math.PI / 2));\r
- float num5 = ((float)(0.8 * Math.Sin(num2 * Math.PI / 2))) * this.st火花[i].fサイズ;\r
- identity *= Matrix.Translation(\r
- ((int)(this.nレーンの中央X座標[this.st火花[i].nLane] * ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1.0 : 0.75))\r
- +\r
- ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40)) +\r
- (((float)Math.Cos((double)num3)) * num5)) - SampleFramework.GameWindowSize.Width / 2,\r
- -(((CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
- (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums)\r
- + (((float)Math.Sin((double)num3)) * num5)) - SampleFramework.GameWindowSize.Height / 2),\r
- 0f\r
- );\r
- if (this.tx火花 != null)\r
- {\r
- this.tx火花.t3D描画(CDTXMania.Instance.Device, identity);\r
- }\r
- }\r
- }\r
- for (int i = 0; i < STAR_MAX; i++)\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- if (this.st青い星[i].b使用中)\r
+ for (int i = 0; i < FIRE_MAX; i++)\r
{\r
- this.st青い星[i].n前回のValue = this.st青い星[i].ct進行.n現在の値;\r
- this.st青い星[i].ct進行.t進行();\r
- if (this.st青い星[i].ct進行.b終了値に達した)\r
- {\r
- this.st青い星[i].ct進行.t停止();\r
- this.st青い星[i].b使用中 = false;\r
- }\r
- for (int n = this.st青い星[i].n前回のValue; n < this.st青い星[i].ct進行.n現在の値; n++)\r
+ if (this.st火花[i].b使用中)\r
{\r
- this.st青い星[i].fX += this.st青い星[i].f加速度X;\r
- this.st青い星[i].fY -= this.st青い星[i].f加速度Y;\r
- this.st青い星[i].f加速度X *= this.st青い星[i].f加速度の加速度X;\r
- this.st青い星[i].f加速度Y *= this.st青い星[i].f加速度の加速度Y;\r
- this.st青い星[i].f加速度Y -= this.st青い星[i].f重力加速度;\r
- }\r
- Matrix mat = Matrix.Identity;\r
- float x = (float)(this.st青い星[i].f半径 * Math.Cos((Math.PI / 2 * this.st青い星[i].ct進行.n現在の値) / 100.0));\r
- mat *= Matrix.Scaling(x, x, 1f);\r
- mat *= Matrix.Translation(\r
- this.st青い星[i].fX - SampleFramework.GameWindowSize.Width / 2,\r
- -(this.st青い星[i].fY * Scale.Y - SampleFramework.GameWindowSize.Height / 2),\r
- 0f\r
- );\r
- if (this.tx青い星 != null)\r
- {\r
- this.tx青い星.t3D描画(CDTXMania.Instance.Device, mat);\r
+ this.st火花[i].ct進行.t進行();\r
+ if (this.st火花[i].ct進行.b終了値に達した)\r
+ {\r
+ this.st火花[i].ct進行.t停止();\r
+ this.st火花[i].b使用中 = false;\r
+ }\r
+ Matrix identity = Matrix.Identity;\r
+ float num2 = ((float)this.st火花[i].ct進行.n現在の値) / 70f;\r
+ float num3 = this.st火花[i].f回転単位 + (this.st火花[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num2)));\r
+ float num4 = ((float)(0.2 + (0.8 * Math.Cos((((double)this.st火花[i].ct進行.n現在の値) / 50.0) * Math.PI / 2)))) * this.st火花[i].fサイズ;\r
+ identity *= Matrix.Scaling(0.2f + num4, 0.2f + this.st火花[i].fサイズ, 1f);\r
+ identity *= Matrix.RotationZ(num3 + ((float)Math.PI / 2));\r
+ float num5 = ((float)(0.8 * Math.Sin(num2 * Math.PI / 2))) * this.st火花[i].fサイズ;\r
+ identity *= Matrix.Translation(\r
+ ((int)(this.nレーンの中央X座標[this.st火花[i].nLane] * ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1.0 : 0.75))\r
+ +\r
+ ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40)) +\r
+ (((float)Math.Cos((double)num3)) * num5)) - SampleFramework.GameWindowSize.Width / 2,\r
+ -(((CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
+ (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums)\r
+ + (((float)Math.Sin((double)num3)) * num5)) - SampleFramework.GameWindowSize.Height / 2),\r
+ 0f\r
+ );\r
+ if (this.tx火花 != null)\r
+ {\r
+ this.tx火花.t3D描画(CDTXMania.Instance.Device, identity);\r
+ }\r
}\r
}\r
- }\r
- for (int i = 0; i < BIGWAVE_MAX; i++)\r
- {\r
- if (this.st大波[i].b使用中)\r
+ for (int i = 0; i < STAR_MAX; i++)\r
{\r
- this.st大波[i].ct進行.t進行();\r
- if (this.st大波[i].ct進行.b終了値に達した)\r
+ if (this.st青い星[i].b使用中)\r
{\r
- this.st大波[i].ct進行.t停止();\r
- this.st大波[i].b使用中 = false;\r
- }\r
- if (this.st大波[i].ct進行.n現在の値 >= 0)\r
- {\r
- Matrix matrix3 = Matrix.Identity;\r
- float num10 = ((float)this.st大波[i].ct進行.n現在の値) / 100f;\r
- float angle = this.st大波[i].f回転単位 + (this.st大波[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num10)));\r
- float num12 = 1f;\r
- if (num10 < 0.4f)\r
- {\r
- num12 = 2.5f * num10;\r
- }\r
- else if (num10 < 0.8f)\r
+ this.st青い星[i].n前回のValue = this.st青い星[i].ct進行.n現在の値;\r
+ this.st青い星[i].ct進行.t進行();\r
+ if (this.st青い星[i].ct進行.b終了値に達した)\r
{\r
- num12 = (float)(1.0 + (10.1 * (1.0 - Math.Cos((Math.PI / 2 * (num10 - 0.4)) * 2.5))));\r
+ this.st青い星[i].ct進行.t停止();\r
+ this.st青い星[i].b使用中 = false;\r
}\r
- else\r
+ for (int n = this.st青い星[i].n前回のValue; n < this.st青い星[i].ct進行.n現在の値; n++)\r
{\r
- num12 = 11.1f + (12.5f * (num10 - 0.8f));\r
+ this.st青い星[i].fX += this.st青い星[i].f加速度X;\r
+ this.st青い星[i].fY -= this.st青い星[i].f加速度Y;\r
+ this.st青い星[i].f加速度X *= this.st青い星[i].f加速度の加速度X;\r
+ this.st青い星[i].f加速度Y *= this.st青い星[i].f加速度の加速度Y;\r
+ this.st青い星[i].f加速度Y -= this.st青い星[i].f重力加速度;\r
}\r
- int num13 = 0xff;\r
- if (num10 < 0.75f)\r
+ Matrix mat = Matrix.Identity;\r
+ float x = (float)(this.st青い星[i].f半径 * Math.Cos((Math.PI / 2 * this.st青い星[i].ct進行.n現在の値) / 100.0));\r
+ mat *= Matrix.Scaling(x, x, 1f);\r
+ mat *= Matrix.Translation(\r
+ this.st青い星[i].fX - SampleFramework.GameWindowSize.Width / 2,\r
+ -(this.st青い星[i].fY * Scale.Y - SampleFramework.GameWindowSize.Height / 2),\r
+ 0f\r
+ );\r
+ if (this.tx青い星 != null)\r
{\r
- num13 = 0x37;\r
+ this.tx青い星.t3D描画(CDTXMania.Instance.Device, mat);\r
}\r
- else\r
+ }\r
+ }\r
+ for (int i = 0; i < BIGWAVE_MAX; i++)\r
+ {\r
+ if (this.st大波[i].b使用中)\r
+ {\r
+ this.st大波[i].ct進行.t進行();\r
+ if (this.st大波[i].ct進行.b終了値に達した)\r
{\r
- num13 = (int)((55f * (1f - num10)) / 0.25f);\r
+ this.st大波[i].ct進行.t停止();\r
+ this.st大波[i].b使用中 = false;\r
}\r
- matrix3 *= Matrix.Scaling(num12 * this.st大波[i].f半径, num12 * this.st大波[i].f半径, 1f);\r
- matrix3 *= Matrix.RotationZ(angle);\r
- matrix3 *= Matrix.RotationX(this.st大波[i].f角度X);\r
- matrix3 *= Matrix.RotationY(this.st大波[i].f角度Y);\r
- matrix3 *= Matrix.Translation(\r
- (int)(this.nレーンの中央X座標[this.st大波[i].nLane] * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75)) +\r
- ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40))\r
- - SampleFramework.GameWindowSize.Width / 2,\r
- -((CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
- (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums)\r
- - SampleFramework.GameWindowSize.Height / 2),\r
- 0f);\r
- if (this.tx大波 != null)\r
+ if (this.st大波[i].ct進行.n現在の値 >= 0)\r
{\r
- this.tx大波.n透明度 = num13;\r
- this.tx大波.t3D描画(CDTXMania.Instance.Device, matrix3);\r
+ Matrix matrix3 = Matrix.Identity;\r
+ float num10 = ((float)this.st大波[i].ct進行.n現在の値) / 100f;\r
+ float angle = this.st大波[i].f回転単位 + (this.st大波[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num10)));\r
+ float num12 = 1f;\r
+ if (num10 < 0.4f)\r
+ {\r
+ num12 = 2.5f * num10;\r
+ }\r
+ else if (num10 < 0.8f)\r
+ {\r
+ num12 = (float)(1.0 + (10.1 * (1.0 - Math.Cos((Math.PI / 2 * (num10 - 0.4)) * 2.5))));\r
+ }\r
+ else\r
+ {\r
+ num12 = 11.1f + (12.5f * (num10 - 0.8f));\r
+ }\r
+ int num13 = 0xff;\r
+ if (num10 < 0.75f)\r
+ {\r
+ num13 = 0x37;\r
+ }\r
+ else\r
+ {\r
+ num13 = (int)((55f * (1f - num10)) / 0.25f);\r
+ }\r
+ matrix3 *= Matrix.Scaling(num12 * this.st大波[i].f半径, num12 * this.st大波[i].f半径, 1f);\r
+ matrix3 *= Matrix.RotationZ(angle);\r
+ matrix3 *= Matrix.RotationX(this.st大波[i].f角度X);\r
+ matrix3 *= Matrix.RotationY(this.st大波[i].f角度Y);\r
+ matrix3 *= Matrix.Translation(\r
+ (int)(this.nレーンの中央X座標[this.st大波[i].nLane] * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75)) +\r
+ ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40))\r
+ - SampleFramework.GameWindowSize.Width / 2,\r
+ -((CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
+ (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums)\r
+ - SampleFramework.GameWindowSize.Height / 2),\r
+ 0f);\r
+ if (this.tx大波 != null)\r
+ {\r
+ this.tx大波.n透明度 = num13;\r
+ this.tx大波.t3D描画(CDTXMania.Instance.Device, matrix3);\r
+ }\r
}\r
}\r
}\r
- }\r
- for (int i = 0; i < BIGWAVE_MAX; i++)\r
- {\r
- if (this.st細波[i].b使用中)\r
+ for (int i = 0; i < BIGWAVE_MAX; i++)\r
{\r
- this.st細波[i].ct進行.t進行();\r
- if (this.st細波[i].ct進行.b終了値に達した)\r
+ if (this.st細波[i].b使用中)\r
{\r
- this.st細波[i].ct進行.t停止();\r
- this.st細波[i].b使用中 = false;\r
- }\r
- if (this.st細波[i].ct進行.n現在の値 >= 0)\r
- {\r
- Matrix matrix4 = Matrix.Identity;\r
- float num15 = ((float)this.st細波[i].ct進行.n現在の値) / 100f;\r
- float num16 = 14f * num15;\r
- int num17 = (num15 < 0.5f) ? 155 : ((int)((155f * (1f - num15)) / 1f));\r
- matrix4 *= Matrix.Scaling(\r
- num16 * this.st細波[i].f半径,\r
- num16 * this.st細波[i].f半径,\r
- 1f\r
- );\r
- matrix4 *= Matrix.RotationX(this.st細波[i].f角度X);\r
- matrix4 *= Matrix.RotationY(this.st細波[i].f角度Y);\r
- matrix4 *= Matrix.Translation(\r
- (int)(this.nレーンの中央X座標[this.st細波[i].nLane] * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75)) +\r
- ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40))\r
- - SampleFramework.GameWindowSize.Width / 2,\r
- -((CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
- (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums)\r
- - SampleFramework.GameWindowSize.Height / 2),\r
- 0f\r
- );\r
- if (this.tx細波 != null)\r
+ this.st細波[i].ct進行.t進行();\r
+ if (this.st細波[i].ct進行.b終了値に達した)\r
{\r
- this.tx細波.n透明度 = num17;\r
- this.tx細波.t3D描画(CDTXMania.Instance.Device, matrix4);\r
+ this.st細波[i].ct進行.t停止();\r
+ this.st細波[i].b使用中 = false;\r
+ }\r
+ if (this.st細波[i].ct進行.n現在の値 >= 0)\r
+ {\r
+ Matrix matrix4 = Matrix.Identity;\r
+ float num15 = ((float)this.st細波[i].ct進行.n現在の値) / 100f;\r
+ float num16 = 14f * num15;\r
+ int num17 = (num15 < 0.5f) ? 155 : ((int)((155f * (1f - num15)) / 1f));\r
+ matrix4 *= Matrix.Scaling(\r
+ num16 * this.st細波[i].f半径,\r
+ num16 * this.st細波[i].f半径,\r
+ 1f\r
+ );\r
+ matrix4 *= Matrix.RotationX(this.st細波[i].f角度X);\r
+ matrix4 *= Matrix.RotationY(this.st細波[i].f角度Y);\r
+ matrix4 *= Matrix.Translation(\r
+ (int)(this.nレーンの中央X座標[this.st細波[i].nLane] * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75)) +\r
+ ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? (float)(54 * 3) : (float)(619 + 12 + 40))\r
+ - SampleFramework.GameWindowSize.Width / 2,\r
+ -((CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
+ (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums)\r
+ - SampleFramework.GameWindowSize.Height / 2),\r
+ 0f\r
+ );\r
+ if (this.tx細波 != null)\r
+ {\r
+ this.tx細波.n透明度 = num17;\r
+ this.tx細波.t3D描画(CDTXMania.Instance.Device, matrix4);\r
+ }\r
}\r
}\r
}\r
}\r
return 0;\r
}\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct ST火花\r
- {\r
- public int nLane;\r
- public bool b使用中;\r
- public CCounter ct進行;\r
- public float f回転単位;\r
- public float f回転方向;\r
- public float fサイズ;\r
- }\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct ST細波\r
- {\r
- public int nLane;\r
- public bool b使用中;\r
- public CCounter ct進行;\r
- public float f角度X;\r
- public float f角度Y;\r
- public float f半径;\r
- public int n進行速度ms;\r
- }\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct ST青い星\r
- {\r
- public int nLane;\r
- public bool b使用中;\r
- public CCounter ct進行;\r
- public int n前回のValue;\r
- public float fX;\r
- public float fY;\r
- public float f加速度X;\r
- public float f加速度Y;\r
- public float f加速度の加速度X;\r
- public float f加速度の加速度Y;\r
- public float f重力加速度;\r
- public float f半径;\r
- }\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct ST大波\r
- {\r
- public int nLane;\r
- public bool b使用中;\r
- public CCounter ct進行;\r
- public float f角度X;\r
- public float f角度Y;\r
- public float f半径;\r
- public int n進行速度ms;\r
- public float f回転単位;\r
- public float f回転方向;\r
- }\r
-\r
- private const int BIGWAVE_MAX = 20;\r
- private bool b細波Balance;\r
- private bool b大波Balance;\r
- private const int FIRE_MAX = 8 * 8;\r
- private readonly float[] fY波の最小仰角 = new float[] { -130f, -126f, -120f, -118f, -110f, -108f, -103f, -97f };\r
- private readonly float[] fY波の最大仰角 = new float[] { 70f, 72f, 77f, 84f, 89f, 91f, 99f, 107f };\r
- private readonly int[] nレーンの中央X座標 = new int[] { 54 * 3 - 54 * 3, 92 * 3 - 54 * 3, 126 * 3 - 54 * 3, 167 * 3 - 54 * 3,\r
- 208 * 3 - 54 * 3, 242 * 3 - 54 * 3, 276 * 3 - 54 * 3, 313 * 3 - 54 * 3 };\r
- private const int STAR_MAX = 0x100;\r
- private ST火花[] st火花 = new ST火花[FIRE_MAX];\r
- private ST大波[] st大波 = new ST大波[BIGWAVE_MAX];\r
- private ST細波[] st細波 = new ST細波[BIGWAVE_MAX];\r
- private ST青い星[] st青い星 = new ST青い星[STAR_MAX];\r
- private CTexture tx火花;\r
- private CTexture tx細波;\r
- private CTexture tx青い星;\r
- private CTexture tx大波;\r
- private int nJudgeLinePosY_delta_Drums;\r
- //-----------------\r
- #endregion\r
}\r
}\r
{\r
internal class CAct演奏DrumsチップファイアGB : CAct演奏チップファイアGB\r
{\r
- // メソッド\r
-\r
- public override void Start(int nLane, C演奏判定ライン座標共通 演奏判定ライン座標)\r
+ private readonly Point[] pt中央 = new Point[]\r
{\r
- if ((nLane < 0) && (nLane > 5))\r
- {\r
- throw new IndexOutOfRangeException();\r
- }\r
- E楽器パート e楽器パート = (nLane < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
- int index = nLane;\r
- if (CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート])\r
- {\r
- index = ((index / 3) * 3) + (2 - (index % 3));\r
- }\r
- int x = this.pt中央[index].X;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- x -= (e楽器パート == E楽器パート.GUITAR) ? 71 : 994;\r
- }\r
- //int y = this.pt中央[ index ].Y;\r
- int y = 演奏判定ライン座標.n判定ラインY座標(e楽器パート, CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート]);\r
-\r
- base.Start(nLane, x, y, 演奏判定ライン座標);\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- private readonly Point[] pt中央 = new Point[] {\r
new Point( 519 * 3, (int) (95 * 2.25) ), // GtR\r
new Point( 545 * 3, (int) (95 * 2.25) ), // GtG\r
new Point( 571 * 3, (int) (95 * 2.25) ), // GtB\r
new Point( 436 * 3, (int) (95 * 2.25) ), // BsG\r
new Point( 462 * 3, (int) (95 * 2.25) ) // BsB\r
};\r
- //-----------------\r
- #endregion\r
+\r
+ // メソッド\r
+ public override void Start(int nLane, C演奏判定ライン座標共通 演奏判定ライン座標)\r
+ {\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+ {\r
+ if ((nLane < 0) && (nLane > 5))\r
+ {\r
+ throw new IndexOutOfRangeException();\r
+ }\r
+ E楽器パート e楽器パート = (nLane < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+ int index = nLane;\r
+ if (CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート])\r
+ {\r
+ index = ((index / 3) * 3) + (2 - (index % 3));\r
+ }\r
+ int x = this.pt中央[index].X;\r
+ if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
+ {\r
+ x -= (e楽器パート == E楽器パート.GUITAR) ? 71 : 994;\r
+ }\r
+ //int y = this.pt中央[ index ].Y;\r
+ int y = 演奏判定ライン座標.n判定ラインY座標(e楽器パート, CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート]);\r
+\r
+ base.Start(nLane, x, y, 演奏判定ライン座標);\r
+ }\r
+ }\r
}\r
}\r
{\r
internal class CAct演奏Drumsパッド : CActivity\r
{\r
- // コンストラクタ\r
+ private long nY座標制御タイマ;\r
+ private long nフラッシュ制御タイマ;\r
+ private readonly int[] n描画順 = new int[] { 3, 6, 5, 4, 2, 1, 8, 7, 0 };\r
+ private STパッド状態[] stパッド状態 = new STパッド状態[9];\r
+ // private readonly ST基本位置[] st基本位置;\r
+ private CTexture txパッド;\r
+ private CTexture tx光るパッド;\r
\r
- public CAct演奏Drumsパッド()\r
+ private static readonly ST基本位置[] st基本位置 = new ST基本位置[9]\r
{\r
- this.st基本位置 = new ST基本位置[9] {\r
- new ST基本位置( 22 * 3 - 66, 0, new Rectangle( 0, 0, 170, 130 ) ),\r
- new ST基本位置( 61 * 3 - 66, 11, new Rectangle( 170, 0, 170, 130 ) ),\r
- new ST基本位置( 96 * 3 - 66, 8, new Rectangle( 340, 0, 170, 130 ) ),\r
- new ST基本位置( 138 * 3 - 66, 7, new Rectangle( 0, 130, 170, 130 ) ),\r
- new ST基本位置( 179 * 3 - 66, 0, new Rectangle( 170, 130, 170, 130 ) ),\r
- new ST基本位置( 212 * 3 - 66, 5, new Rectangle( 340, 130, 170, 130 ) ),\r
- new ST基本位置( 250 * 3 - 66, 15, new Rectangle( 0, 260, 170, 130) ),\r
- new ST基本位置( 282 * 3 - 66, 0, new Rectangle( 170, 260, 170, 130 ) ),\r
- new ST基本位置( 304 * 3 - 66, 8, new Rectangle( 340, 260, 170, 130 ) )\r
- };\r
- base.b活性化してない = true;\r
+ new ST基本位置( 22 * 3 - 66, 0, new Rectangle( 0, 0, 170, 130 ) ),\r
+ new ST基本位置( 61 * 3 - 66, 11, new Rectangle( 170, 0, 170, 130 ) ),\r
+ new ST基本位置( 96 * 3 - 66, 8, new Rectangle( 340, 0, 170, 130 ) ),\r
+ new ST基本位置( 138 * 3 - 66, 7, new Rectangle( 0, 130, 170, 130 ) ),\r
+ new ST基本位置( 179 * 3 - 66, 0, new Rectangle( 170, 130, 170, 130 ) ),\r
+ new ST基本位置( 212 * 3 - 66, 5, new Rectangle( 340, 130, 170, 130 ) ),\r
+ new ST基本位置( 250 * 3 - 66, 15, new Rectangle( 0, 260, 170, 130) ),\r
+ new ST基本位置( 282 * 3 - 66, 0, new Rectangle( 170, 260, 170, 130 ) ),\r
+ new ST基本位置( 304 * 3 - 66, 8, new Rectangle( 340, 260, 170, 130 ) )\r
+ };\r
+\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct STパッド状態\r
+ {\r
+ public int n明るさ;\r
+ public int nY座標オフセットdot;\r
+ public int nY座標加速度dot;\r
+ public STパッド状態(int n明るさ_, int nY座標オフセットdot_, int nY座標加速度dot_)\r
+ {\r
+ n明るさ = n明るさ_;\r
+ nY座標オフセットdot = nY座標オフセットdot_;\r
+ nY座標加速度dot = nY座標加速度dot_;\r
+ }\r
}\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct ST基本位置\r
+ {\r
+ public int x;\r
+ public int y;\r
+ public Rectangle rc;\r
\r
+ public ST基本位置(int x_, int y_, Rectangle rc_)\r
+ {\r
+ x = x_;\r
+ y = y_;\r
+ rc = rc_;\r
+ }\r
+ }\r
\r
// メソッド\r
-\r
public void Hit(int nLane)\r
{\r
this.stパッド状態[nLane].n明るさ = 6;\r
\r
\r
// CActivity 実装\r
-\r
public override void On活性化()\r
{\r
this.nフラッシュ制御タイマ = -1;\r
{\r
if (!base.b活性化してない)\r
{\r
- if (base.b初めての進行描画)\r
- {\r
- this.nフラッシュ制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
- this.nY座標制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
- base.b初めての進行描画 = false;\r
- }\r
- long n現在時刻 = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
- if (n現在時刻 < this.nフラッシュ制御タイマ)\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- this.nフラッシュ制御タイマ = n現在時刻;\r
- }\r
- while ((n現在時刻 - this.nフラッシュ制御タイマ) >= 15)\r
- {\r
- for (int i = 0; i < 9; i++)\r
+ if (base.b初めての進行描画)\r
+ {\r
+ this.nフラッシュ制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+ this.nY座標制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+ base.b初めての進行描画 = false;\r
+ }\r
+ long n現在時刻 = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+ if (n現在時刻 < this.nフラッシュ制御タイマ)\r
+ {\r
+ this.nフラッシュ制御タイマ = n現在時刻;\r
+ }\r
+ while ((n現在時刻 - this.nフラッシュ制御タイマ) >= 15)\r
{\r
- if (this.stパッド状態[i].n明るさ > 0)\r
+ for (int i = 0; i < 9; i++)\r
{\r
- this.stパッド状態[i].n明るさ--;\r
+ if (this.stパッド状態[i].n明るさ > 0)\r
+ {\r
+ this.stパッド状態[i].n明るさ--;\r
+ }\r
}\r
+ this.nフラッシュ制御タイマ += 15;\r
}\r
- this.nフラッシュ制御タイマ += 15;\r
- }\r
- n現在時刻 = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
- if (n現在時刻 < this.nY座標制御タイマ)\r
- {\r
- this.nY座標制御タイマ = n現在時刻;\r
- }\r
- while ((n現在時刻 - this.nY座標制御タイマ) >= 5)\r
- {\r
+ n現在時刻 = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+ if (n現在時刻 < this.nY座標制御タイマ)\r
+ {\r
+ this.nY座標制御タイマ = n現在時刻;\r
+ }\r
+ while ((n現在時刻 - this.nY座標制御タイマ) >= 5)\r
+ {\r
+ for (int i = 0; i < 9; i++)\r
+ {\r
+ this.stパッド状態[i].nY座標オフセットdot += this.stパッド状態[i].nY座標加速度dot;\r
+ if (this.stパッド状態[i].nY座標オフセットdot > 15)\r
+ {\r
+ this.stパッド状態[i].nY座標オフセットdot = 15;\r
+ this.stパッド状態[i].nY座標加速度dot = -1;\r
+ }\r
+ else if (this.stパッド状態[i].nY座標オフセットdot < 0)\r
+ {\r
+ this.stパッド状態[i].nY座標オフセットdot = 0;\r
+ this.stパッド状態[i].nY座標加速度dot = 0;\r
+ }\r
+ }\r
+ this.nY座標制御タイマ += 5;\r
+ }\r
+ #region [ 表示 ]\r
for (int i = 0; i < 9; i++)\r
{\r
- this.stパッド状態[i].nY座標オフセットdot += this.stパッド状態[i].nY座標加速度dot;\r
- if (this.stパッド状態[i].nY座標オフセットdot > 15)\r
+ int index = this.n描画順[i];\r
+ int x = st基本位置[index].x;\r
+ int xDist = (int)(x * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
+ x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 66 : 619 - 24;\r
+ x += xDist;\r
+ int y = (st基本位置[index].y + (CDTXMania.Instance.ConfigIni.bReverse.Drums ? -10 : 0x19e)) + this.stパッド状態[index].nY座標オフセットdot;\r
+ if (this.txパッド != null)\r
{\r
- this.stパッド状態[i].nY座標オフセットdot = 15;\r
- this.stパッド状態[i].nY座標加速度dot = -1;\r
+ this.txパッド.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x,\r
+ y * Scale.Y,\r
+ st基本位置[index].rc\r
+ );\r
}\r
- else if (this.stパッド状態[i].nY座標オフセットdot < 0)\r
+ if (this.tx光るパッド != null)\r
{\r
- this.stパッド状態[i].nY座標オフセットdot = 0;\r
- this.stパッド状態[i].nY座標加速度dot = 0;\r
+ this.tx光るパッド.n透明度 = (this.stパッド状態[index].n明るさ * 40) + 15;\r
+ this.tx光るパッド.t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ x,\r
+ y * Scale.Y,\r
+ st基本位置[index].rc);\r
}\r
}\r
- this.nY座標制御タイマ += 5;\r
- }\r
- #region [ 表示 ]\r
- for (int i = 0; i < 9; i++)\r
- {\r
- int index = this.n描画順[i];\r
- int x = this.st基本位置[index].x;\r
- int xDist = (int)(x * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
- x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 66 : 619 - 24;\r
- x += xDist;\r
- int y = (this.st基本位置[index].y + (CDTXMania.Instance.ConfigIni.bReverse.Drums ? -10 : 0x19e)) + this.stパッド状態[index].nY座標オフセットdot;\r
- if (this.txパッド != null)\r
- {\r
- // this.txパッド.vc拡大縮小倍率.X = ( CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ) ? 1.0f : 0.75f;\r
- this.txパッド.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x,\r
- y * Scale.Y,\r
- this.st基本位置[index].rc\r
- );\r
- }\r
- if (this.tx光るパッド != null)\r
- {\r
- // this.tx光るパッド.vc拡大縮小倍率.X = ( CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ) ? 1.0f : 0.75f;\r
- this.tx光るパッド.n透明度 = (this.stパッド状態[index].n明るさ * 40) + 15;\r
- this.tx光るパッド.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x,\r
- y * Scale.Y,\r
- this.st基本位置[index].rc);\r
- }\r
+ #endregion\r
}\r
- #endregion\r
}\r
return 0;\r
}\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct STパッド状態\r
- {\r
- public int n明るさ;\r
- public int nY座標オフセットdot;\r
- public int nY座標加速度dot;\r
- public STパッド状態(int n明るさ_, int nY座標オフセットdot_, int nY座標加速度dot_)\r
- {\r
- n明るさ = n明るさ_;\r
- nY座標オフセットdot = nY座標オフセットdot_;\r
- nY座標加速度dot = nY座標加速度dot_;\r
- }\r
- }\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct ST基本位置\r
- {\r
- public int x;\r
- public int y;\r
- public Rectangle rc;\r
-\r
- public ST基本位置(int x_, int y_, Rectangle rc_)\r
- {\r
- x = x_;\r
- y = y_;\r
- rc = rc_;\r
- }\r
- }\r
-\r
- private long nY座標制御タイマ;\r
- private long nフラッシュ制御タイマ;\r
- private readonly int[] n描画順 = new int[] { 3, 6, 5, 4, 2, 1, 8, 7, 0 };\r
- private STパッド状態[] stパッド状態 = new STパッド状態[9];\r
- private readonly ST基本位置[] st基本位置;\r
- private CTexture txパッド;\r
- private CTexture tx光るパッド;\r
- //-----------------\r
- #endregion\r
}\r
}\r
{\r
internal class CAct演奏DrumsレーンフラッシュD : CActivity\r
{\r
- // コンストラクタ\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct STレーンサイズ\r
+ {\r
+ public int x;\r
+ public int w;\r
+ public STレーンサイズ(int x_, int w_)\r
+ {\r
+ x = x_;\r
+ w = w_;\r
+ }\r
+ }\r
+\r
+ private CCounter[] ct進行 = new CCounter[8];\r
+ private readonly string[] strファイル名;\r
+ private readonly STレーンサイズ[] stレーンサイズ;\r
+ private CTextureAf[] txFlush = new CTextureAf[0x10];\r
\r
+ // コンストラクタ\r
public CAct演奏DrumsレーンフラッシュD()\r
{\r
this.stレーンサイズ = new STレーンサイズ[8]\r
{\r
if (!base.b活性化してない)\r
{\r
- for (int i = 0; i < 8; i++)\r
+ if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
{\r
- if (!this.ct進行[i].b停止中)\r
+ for (int i = 0; i < 8; i++)\r
{\r
- this.ct進行[i].t進行();\r
- if (this.ct進行[i].b終了値に達した)\r
+ if (!this.ct進行[i].b停止中)\r
{\r
- this.ct進行[i].t停止();\r
+ this.ct進行[i].t進行();\r
+ if (this.ct進行[i].b終了値に達した)\r
+ {\r
+ this.ct進行[i].t停止();\r
+ }\r
}\r
}\r
- }\r
- for (int j = 0; j < 8; j++)\r
- {\r
- if (!this.ct進行[j].b停止中)\r
+ for (int j = 0; j < 8; j++)\r
{\r
- int x = this.stレーンサイズ[j].x;\r
- int w = this.stレーンサイズ[j].w;\r
+ if (!this.ct進行[j].b停止中)\r
+ {\r
+ int x = this.stレーンサイズ[j].x;\r
+ int w = this.stレーンサイズ[j].w;\r
\r
- x = (int)(x * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
- x += (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 36 * 3 : 619 - 24 + 36;\r
- w = (int)(w * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
+ x = (int)(x * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
+ x += (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 36 * 3 : 619 - 24 + 36;\r
+ w = (int)(w * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
\r
- //for ( int k = 0; k < 3; k++ )\r
- int k = 0;\r
- {\r
- if (CDTXMania.Instance.ConfigIni.bReverse.Drums)\r
+ //for ( int k = 0; k < 3; k++ )\r
+ int k = 0;\r
{\r
- int y = (k * 0x80) - ((this.ct進行[j].n現在の値 * 0x180) / 100);\r
- for (int m = 0; m < w; m += 42)\r
+ if (CDTXMania.Instance.ConfigIni.bReverse.Drums)\r
{\r
- if (this.txFlush[j + 8] != null)\r
+ int y = (k * 0x80) - ((this.ct進行[j].n現在の値 * 0x180) / 100);\r
+ for (int m = 0; m < w; m += 42)\r
{\r
- this.txFlush[j + 8].t2D描画(\r
- CDTXMania.Instance.Device,\r
- (x + m),\r
- y * Scale.Y,\r
- new Rectangle(\r
- (int)((k * 0x2a) * Scale.X),\r
- 0,\r
- ((w - m) < 0x2a) ? (int)((w - m) * Scale.X) : (int)(0x2a * Scale.X),\r
- (int)(0x80 * 3 * Scale.Y)\r
- )\r
- );\r
- }\r
- }\r
- }\r
- else\r
- {\r
- int y = (0x60 + (k * 0x80)) + ((this.ct進行[j].n現在の値 * 0x180) / 100);\r
- if (y < 480)\r
- {\r
- for (int n = 0; n < w; n += 42)\r
- {\r
- if (this.txFlush[j] != null)\r
+ if (this.txFlush[j + 8] != null)\r
{\r
- this.txFlush[j].t2D描画(\r
+ this.txFlush[j + 8].t2D描画(\r
CDTXMania.Instance.Device,\r
- (x + n),\r
- (int)(y * Scale.Y),\r
+ (x + m),\r
+ y * Scale.Y,\r
new Rectangle(\r
- (int)(k * 0x2a * Scale.X),\r
+ (int)((k * 0x2a) * Scale.X),\r
0,\r
- ((w - n) < 0x2a) ? (int)((w - n) * Scale.X) : (int)(0x2a * Scale.X),\r
+ ((w - m) < 0x2a) ? (int)((w - m) * Scale.X) : (int)(0x2a * Scale.X),\r
(int)(0x80 * 3 * Scale.Y)\r
)\r
);\r
}\r
}\r
}\r
+ else\r
+ {\r
+ int y = (0x60 + (k * 0x80)) + ((this.ct進行[j].n現在の値 * 0x180) / 100);\r
+ if (y < 480)\r
+ {\r
+ for (int n = 0; n < w; n += 42)\r
+ {\r
+ if (this.txFlush[j] != null)\r
+ {\r
+ this.txFlush[j].t2D描画(\r
+ CDTXMania.Instance.Device,\r
+ (x + n),\r
+ (int)(y * Scale.Y),\r
+ new Rectangle(\r
+ (int)(k * 0x2a * Scale.X),\r
+ 0,\r
+ ((w - n) < 0x2a) ? (int)((w - n) * Scale.X) : (int)(0x2a * Scale.X),\r
+ (int)(0x80 * 3 * Scale.Y)\r
+ )\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
}\r
}\r
}\r
}\r
return 0;\r
}\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct STレーンサイズ\r
- {\r
- public int x;\r
- public int w;\r
- public STレーンサイズ(int x_, int w_)\r
- {\r
- x = x_;\r
- w = w_;\r
- }\r
- }\r
-\r
- private CCounter[] ct進行 = new CCounter[8];\r
- private readonly string[] strファイル名;\r
- private readonly STレーンサイズ[] stレーンサイズ;\r
- private CTextureAf[] txFlush = new CTextureAf[0x10];\r
- //-----------------\r
- #endregion\r
}\r
}\r
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏DrumsレーンフラッシュGB : CAct演奏レーンフラッシュGB共通\r
- {\r
- // CActivity 実装(共通クラスからの差分のみ)\r
-\r
- public override int On進行描画()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- for (int i = 0; i < 6; i++)\r
- {\r
- if (!base.ct進行[i].b停止中)\r
- {\r
- E楽器パート e楽器パート = (i < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
- CTextureAf texture = CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート] ? base.txFlush[(i % 3) + 3] : base.txFlush[i % 3];\r
- int bLeft = CDTXMania.Instance.ConfigIni.bLeft[(int)e楽器パート] ? 1 : 0;\r
- int x = (((i < 3) ? 1521 : 1194) + this.nRGBのX座標[bLeft, i] * 3) + ((16 * base.ct進行[i].n現在の値) / 100) * 3;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- x -= (e楽器パート == E楽器パート.GUITAR) ? 71 : 994;\r
- }\r
- int y = ((i < 3) ? 0x39 : 0x39);\r
- if (texture != null)\r
- {\r
- texture.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x,\r
- y * Scale.Y,\r
- new Rectangle(\r
- 0, //(int) ( ( j * 0x20 ) * Scale.X ),\r
- 0,\r
- (int)((0x18 * (100 - base.ct進行[i].n現在の値)) / 100 * Scale.X),\r
- (int)(0x76 * 3 * Scale.Y)\r
- )\r
- );\r
- }\r
- base.ct進行[i].t進行();\r
- if (base.ct進行[i].b終了値に達した)\r
- {\r
- base.ct進行[i].t停止();\r
- }\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- private readonly int[,] nRGBのX座標 = new int[,] { { 2, 0x1c, 0x36, 2, 0x1c, 0x36 }, { 0x36, 0x1c, 2, 0x36, 0x1c, 2 } };\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Diagnostics;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using SlimDX;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CAct演奏Drums判定文字列 : CAct演奏判定文字列共通\r
- {\r
- // コンストラクタ\r
-\r
- public CAct演奏Drums判定文字列()\r
- {\r
- this.stレーンサイズ = new STレーンサイズ[12]\r
- {\r
- new STレーンサイズ( 36 - 36, 36 ),\r
- new STレーンサイズ( 77 - 36, 30 ),\r
- new STレーンサイズ( 111 - 36, 30 ),\r
- new STレーンサイズ( 146 - 36, 42 ),\r
- new STレーンサイズ( 192 - 36, 30 ),\r
- new STレーンサイズ( 227 - 36, 30 ),\r
- new STレーンサイズ( 261 - 36, 30 ),\r
- new STレーンサイズ( 295 - 36, 36 ),\r
- new STレーンサイズ( 0 - 36, 0 ),\r
- new STレーンサイズ( 0 - 36, 0 ),\r
- new STレーンサイズ( 507 - 36, 80 ),\r
- new STレーンサイズ( 398 - 36, 80 )\r
- };\r
- //for ( int i = 0; i < 12; i++ )\r
- //{\r
- // this.stレーンサイズ[i] = new STレーンサイズ();\r
- // this.stレーンサイズ[i].x = sizeXW[i, 0];\r
- // this.stレーンサイズ[i].w = sizeXW[i, 1];\r
- //}\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // CActivity 実装(共通クラスからの差分のみ)\r
- public override int On進行描画()\r
- {\r
- throw new InvalidOperationException("t進行描画(C演奏判定ライン座標共通 演奏判定ライン共通 ) のほうを使用してください。");\r
- }\r
- public override int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標)\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- #region [ 表示拡大率の設定 ]\r
- for (int i = 0; i < 12; i++)\r
- {\r
- if (!base.st状態[i].ct進行.b停止中)\r
- {\r
- base.st状態[i].ct進行.t進行();\r
- if (base.st状態[i].ct進行.b終了値に達した)\r
- {\r
- base.st状態[i].ct進行.t停止();\r
- }\r
- int num2 = base.st状態[i].ct進行.n現在の値;\r
- if ((base.st状態[i].judge != E判定.Miss) && (base.st状態[i].judge != E判定.Bad))\r
- {\r
- if (num2 < 50)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f + (1f * (1f - (((float)num2) / 50f)));\r
- base.st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else if (num2 < 130)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = ((num2 % 6) == 0) ? (CDTXMania.Instance.Random.Next(6) - 3) : base.st状態[i].n相対Y座標;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else if (num2 >= 240)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f - ((1f * (num2 - 240)) / 60f);\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- }\r
- else if (num2 < 50)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = ((float)num2) / 50f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else if (num2 >= 200)\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
- base.st状態[i].fY方向拡大率 = 1f - (((float)(num2 - 200)) / 100f);\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- else\r
- {\r
- base.st状態[i].fX方向拡大率 = 1f;\r
- base.st状態[i].fY方向拡大率 = 1f;\r
- base.st状態[i].n相対X座標 = 0;\r
- base.st状態[i].n相対Y座標 = 0;\r
- base.st状態[i].n透明度 = 0xff;\r
- }\r
- }\r
- }\r
- #endregion\r
- for (int j = 0; j < 12; j++)\r
- {\r
- if (!base.st状態[j].ct進行.b停止中)\r
- {\r
- int index = base.st判定文字列[(int)base.st状態[j].judge].n画像番号;\r
- int baseX = 0;\r
- int baseY = 0;\r
- #region [ Drums 判定文字列 baseX/Y生成 ]\r
- if (j < 8) // Drums\r
- {\r
- if (CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums == E判定文字表示位置.表示OFF)\r
- {\r
- continue;\r
- }\r
- baseX = this.stレーンサイズ[j].x;\r
- baseX = (int)(baseX * (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75));\r
- baseX += (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 36 : 205);\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
- ((((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) == E判定文字表示位置.レーン上) ? (240 + (this.n文字の縦表示位置[j] * 0x20)) : 50) :\r
- ((((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) == E判定文字表示位置.レーン上) ? (180 + (this.n文字の縦表示位置[j] * 0x20)) : 450);\r
- baseY = (int)(baseY * Scale.Y);\r
- }\r
- #endregion\r
- #region [ Bass 判定文字列描画 baseX/Y生成 ]\r
- else if (j == 11) // Bass\r
- {\r
- if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass) == E判定文字表示位置.表示OFF)\r
- {\r
- continue;\r
- }\r
- int yB;\r
- switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass)\r
- {\r
- case E判定文字表示位置.コンボ下:\r
- baseX = this.stレーンサイズ[j].x + 36;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- baseX -= 331 + 1;\r
- }\r
- yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- baseY = (\r
- CDTXMania.Instance.ConfigIni.bReverse.Bass ?\r
- yB + (int)((-124 + 0) * Scale.Y) :\r
- yB + (int)((+184 + 0) * Scale.Y)\r
- )\r
- + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
- break;\r
- case E判定文字表示位置.レーン上:\r
- baseX = this.stレーンサイズ[j].x + 36;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- baseX -= 331 + 1;\r
- }\r
- //baseY = ( CDTXMania.Instance.ConfigIni.bReverse.Bass ? 240 : 180 ) + ( this.n文字の縦表示位置[ j ] * 0x20 );\r
- yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- baseY = (\r
- CDTXMania.Instance.ConfigIni.bReverse.Bass ?\r
- yB - (int)(134 * Scale.Y) :\r
- yB + (int)(75 * Scale.Y)\r
- )\r
- + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
- break;\r
- case E判定文字表示位置.判定ライン上:\r
- baseX = this.stレーンサイズ[j].x + 36;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- baseX -= 331 + 1;\r
- }\r
- yB = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Bass ?\r
- yB + (int)(20 * Scale.Y) :\r
- yB - (int)(24 * Scale.Y);\r
- break;\r
- }\r
- }\r
- #endregion\r
- #region [ Guitar 判定文字列描画 baseX/Y生成 ]\r
- else if (j == 10) // Guitar\r
- {\r
- if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar) == E判定文字表示位置.表示OFF)\r
- {\r
- continue;\r
- }\r
- int yG;\r
- switch (CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar)\r
- {\r
- case E判定文字表示位置.コンボ下:\r
- baseX = (CDTXMania.Instance.DTX.bチップがある.Bass) ? this.stレーンサイズ[j].x + 36 : 0x198;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- baseX = this.stレーンサイズ[j].x + 36; // 判定表示がドラムレーンにかぶらないよう、ベース有りの時と同じ表示方法にする\r
- baseX -= 24 + 1;\r
- }\r
- yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- baseY = (\r
- CDTXMania.Instance.ConfigIni.bReverse.Guitar ?\r
- yG + (int)((-124 + 0) * Scale.Y) :\r
- yG + (int)((+184 + 0) * Scale.Y)\r
- )\r
- + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
- break;\r
- case E判定文字表示位置.レーン上:\r
- baseX = (CDTXMania.Instance.DTX.bチップがある.Bass) ? this.stレーンサイズ[j].x + 36 : 0x198;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- baseX = this.stレーンサイズ[j].x + 36; // 判定表示がドラムレーンにかぶらないよう、ベース有りの時と同じ表示方法にする\r
- baseX -= 24 + 1;\r
- }\r
- //baseY = ( CDTXMania.Instance.ConfigIni.bReverse.Guitar ? 240 : 180 ) + ( this.n文字の縦表示位置[ j ] * 0x20 );\r
- yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- baseY = (\r
- CDTXMania.Instance.ConfigIni.bReverse.Guitar ?\r
- yG - (int)(134 * Scale.Y) :\r
- yG + (int)(75 * Scale.Y)\r
- )\r
- + (int)(this.n文字の縦表示位置[j] * 0x20 * Scale.Y);\r
- break;\r
- case E判定文字表示位置.判定ライン上:\r
- baseX = (CDTXMania.Instance.DTX.bチップがある.Bass) ? this.stレーンサイズ[j].x + 36 : 0x198;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
- {\r
- baseX = this.stレーンサイズ[j].x + 36; // 判定表示がドラムレーンにかぶらないよう、ベース有りの時と同じ表示方法にする\r
- baseX -= 24 + 1;\r
- }\r
- yG = 演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- baseY = CDTXMania.Instance.ConfigIni.bReverse.Guitar ?\r
- yG + (int)(20 * Scale.Y) :\r
- yG - (int)(24 * Scale.Y);\r
- break;\r
- }\r
- }\r
- #endregion\r
- int xc = (int)((((baseX + base.st状態[j].n相対X座標) + (this.stレーンサイズ[j].w / 2))) * Scale.X); // Xcenter座標\r
- int x = xc - ((int)(((256f / 2) * base.st状態[j].fX方向拡大率) * ((j < 10) ? 1.0 : 0.7)));\r
- int y = (int)(baseY + (base.st状態[j].n相対Y座標) * Scale.Y) - ((int)((((256f / 3) * base.st状態[j].fY方向拡大率) * ((j < 10) ? 1.0 : 0.7)) / 2.0));\r
-\r
- //int xc = ( ( baseX + base.st状態[ j ].n相対X座標 ) + ( this.stレーンサイズ[ j ].w / 2 ) ); // Xcenter座標\r
- //int x = xc - ( (int) ( ( 64f * base.st状態[ j ].fX方向拡大率 ) * ( ( j < 10 ) ? 1.0 : 0.7 ) ) );\r
- //int y = ( baseY + base.st状態[ j ].n相対Y座標 ) - ( (int) ( ( ( 43f * base.st状態[ j ].fY方向拡大率 ) * ( ( j < 10 ) ? 1.0 : 0.7 ) ) / 2.0 ) );\r
- if (base.tx判定文字列[index] != null)\r
- {\r
- base.tx判定文字列[index].n透明度 = base.st状態[j].n透明度;\r
- base.tx判定文字列[index].vc拡大縮小倍率 = new Vector3((float)(base.st状態[j].fX方向拡大率 * ((j < 10) ? 1.0 : 0.7)), (float)(base.st状態[j].fY方向拡大率 * ((j < 10) ? 1.0 : 0.7)), 1f);\r
- base.tx判定文字列[index].t2D描画(\r
- CDTXMania.Instance.Device,\r
- x,\r
- y,\r
- base.st判定文字列[(int)base.st状態[j].judge].rc\r
- );\r
-\r
- #region [ #25370 2011.6.3 yyagi ShowLag support ]\r
- if (base.nShowLagType == (int)EShowLagType.ON ||\r
- ((base.nShowLagType == (int)EShowLagType.GREAT_POOR) && (base.st状態[j].judge != E判定.Perfect)))\r
- {\r
- if (base.st状態[j].judge != E判定.Auto && base.txlag数値 != null) // #25370 2011.2.1 yyagi\r
- {\r
- bool minus = false;\r
- int offsetX = 0;\r
- string strDispLag = base.st状態[j].nLag.ToString();\r
- if (st状態[j].nLag < 0)\r
- {\r
- minus = true;\r
- }\r
- //x = xc - strDispLag.Length * 15 / 2;\r
- x = xc - (int)((strDispLag.Length * 15 / 2) * Scale.X);\r
- for (int i = 0; i < strDispLag.Length; i++)\r
- {\r
- int p = (strDispLag[i] == '-') ? 11 : (int)(strDispLag[i] - '0'); //int.Parse(strDispLag[i]);\r
- p += minus ? 0 : 12; // change color if it is minus value\r
- //base.txlag数値.t2D描画( CDTXMania.Instance.app.Device, x + offsetX, y + 34, base.stLag数値[ p ].rc );\r
- base.txlag数値.t2D描画(\r
- CDTXMania.Instance.Device,\r
- x + offsetX * Scale.X,\r
- y + 38 * Scale.Y,\r
- base.stLag数値[p].rc\r
- );\r
- offsetX += 12; // 15 -> 12\r
- }\r
- }\r
- }\r
- #endregion\r
- }\r
- // Label_07FC: ;\r
- }\r
- }\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct STレーンサイズ\r
- {\r
- public int x;\r
- public int w;\r
- public STレーンサイズ(int x_, int w_)\r
- {\r
- x = x_;\r
- w = w_;\r
- }\r
-\r
- }\r
-\r
- private readonly int[] n文字の縦表示位置 = new int[] { 1, 2, 0, 1, 3, 2, 1, 0, 0, 0, 1, 1 };\r
- private STレーンサイズ[] stレーンサイズ;\r
- //-----------------\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Drawing;\r
-using System.Drawing.Imaging;\r
-using System.IO;\r
-using System.Diagnostics;\r
-using System.Threading;\r
-using SlimDX;\r
-using SlimDX.Direct3D9;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CStage演奏ドラム画面 : CStage演奏画面共通\r
- {\r
- // コンストラクタ\r
-\r
- public CStage演奏ドラム画面()\r
- {\r
- base.eステージID = CStage.Eステージ.演奏;\r
- base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
- base.b活性化してない = true;\r
- base.list子Activities.Add(this.actPad = new CAct演奏Drumsパッド());\r
- base.list子Activities.Add(this.actCombo = new CAct演奏DrumsコンボDGB());\r
- base.list子Activities.Add(this.actDANGER = new CAct演奏DrumsDanger());\r
- base.list子Activities.Add(this.actChipFireD = new CAct演奏DrumsチップファイアD());\r
- base.list子Activities.Add(this.actChipFireGB = new CAct演奏DrumsチップファイアGB());\r
- base.list子Activities.Add(this.actGauge = new CAct演奏Drumsゲージ());\r
- base.list子Activities.Add(this.actGraph = new CAct演奏Drumsグラフ()); // #24074 2011.01.23 add ikanick\r
- base.list子Activities.Add(this.actJudgeString = new CAct演奏Drums判定文字列());\r
- base.list子Activities.Add(this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD());\r
- base.list子Activities.Add(this.actLaneFlushGB = new CAct演奏DrumsレーンフラッシュGB());\r
- base.list子Activities.Add(this.actRGB = new CAct演奏DrumsRGB());\r
- base.list子Activities.Add(this.actScore = new CAct演奏Drumsスコア());\r
- base.list子Activities.Add(this.actStatusPanels = new CAct演奏Drumsステータスパネル());\r
- base.list子Activities.Add(this.actWailingBonus = new CAct演奏DrumsWailingBonus());\r
- base.list子Activities.Add(this.act譜面スクロール速度 = new CAct演奏スクロール速度());\r
- base.list子Activities.Add(this.actAVI = new CAct演奏AVI());\r
- base.list子Activities.Add(this.actBGA = new CAct演奏BGA());\r
- base.list子Activities.Add(this.actPanel = new CAct演奏パネル文字列());\r
- base.list子Activities.Add(this.actStageFailed = new CAct演奏ステージ失敗());\r
- base.list子Activities.Add(this.actPlayInfo = new CAct演奏演奏情報());\r
- base.list子Activities.Add(this.actFI = new CActFIFOBlack());\r
- base.list子Activities.Add(this.actFO = new CActFIFOBlack());\r
- base.list子Activities.Add(this.actFOClear = new CActFIFOWhite());\r
- }\r
-\r
- // CStage 実装\r
- public override void On活性化()\r
- {\r
- this.bフィルイン中 = false;\r
- base.On活性化();\r
-\r
- // MODIFY_BEGIN #25398 2011.06.07 FROM\r
- if (CDTXMania.Instance.bコンパクトモード)\r
- {\r
- var score = new Cスコア();\r
- CDTXMania.Instance.Songs管理.tScoreIniを読み込んで譜面情報を設定する(CDTXMania.Instance.strコンパクトモードファイル + ".score.ini", ref score);\r
- this.actGraph.dbグラフ値目標_渡 = score.譜面情報.最大スキル[0];\r
- }\r
- else\r
- {\r
- this.actGraph.dbグラフ値目標_渡 = CDTXMania.Instance.stage選曲.r確定されたスコア.譜面情報.最大スキル[0]; // #24074 2011.01.23 add ikanick\r
-\r
- // #35411 2015.08.21 chnmr0 add\r
- // ゴースト利用可のなとき、0で初期化\r
- if (CDTXMania.Instance.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE)\r
- {\r
- if (CDTXMania.Instance.DTX.listTargetGhsotLag[(int)E楽器パート.DRUMS] != null)\r
- {\r
- this.actGraph.dbグラフ値目標_渡 = 0;\r
- }\r
- }\r
- }\r
- // MODIFY_END #25398\r
- dtLastQueueOperation = DateTime.MinValue;\r
- }\r
- public override void On非活性化()\r
- {\r
- base.On非活性化();\r
- }\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- //this.t背景テクスチャの生成();\r
- this.txチップ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chips.png"));\r
- this.txヒットバー = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar.png"));\r
- this.txヒットバーGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar guitar.png"));\r
- //this.txWailing枠 = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );\r
- this.txレーンフレームGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums lane parts guitar.png"));\r
- if (this.txレーンフレームGB != null)\r
- {\r
- this.txレーンフレームGB.n透明度 = 0xff - CDTXMania.Instance.ConfigIni.n背景の透過度;\r
- }\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txヒットバー);\r
- TextureFactory.tテクスチャの解放(ref this.txヒットバーGB);\r
- TextureFactory.tテクスチャの解放(ref this.txチップ);\r
- TextureFactory.tテクスチャの解放(ref this.txレーンフレームGB);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- // その他\r
- #region [ private ]\r
- //-----------------\r
-\r
- private readonly Eパッド[] eチャンネルtoパッド = new Eパッド[]\r
- {\r
- Eパッド.HH, Eパッド.SD, Eパッド.BD, Eパッド.HT,\r
- Eパッド.LT, Eパッド.CY, Eパッド.FT, Eパッド.HHO,\r
- Eパッド.RD, Eパッド.LC\r
- };\r
- private readonly int[,] nチャンネルtoX座標 = new int[,] {\r
- { 76 * 3, 110 * 3, 145 * 3, 192 * 3, 226 * 3, 294 * 3, 260 * 3, 79 * 3, 300 * 3, 35 * 3 },\r
- // 619 - 35 * 3= 584\r
- {\r
- 76 * 3 * 3 / 4 + 548,\r
- 110 * 3 * 3 / 4 + 548,\r
- 145 * 3 * 3 / 4 + 548,\r
- 192 * 3 * 3 / 4 + 548,\r
- 226 * 3 * 3 / 4 + 548,\r
- 294 * 3 * 3 / 4 + 548,\r
- 260 * 3 * 3 / 4 + 548,\r
- 79 * 3 * 3 / 4 + 548,\r
- 300 * 3 * 3 / 4 + 548,\r
- 35 * 3 * 3 / 4 + 548\r
- }\r
- };\r
- private CTexture txヒットバーGB;\r
- //-----------------\r
- protected override void t進行描画_ギターベース判定ライン() // yyagi: ギタレボモードとは座標が違うだけですが、まとめづらかったのでそのまま放置してます。\r
- {\r
- if ((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
- {\r
- if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
- {\r
- int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1527 : 1456;\r
- int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, bReverse[(int)E楽器パート.GUITAR], false, true) - (int)(3 * Scale.Y);\r
- // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
- Rectangle rc = new Rectangle(0, 0, 30, 36);\r
- if (this.txヒットバーGB != null)\r
- {\r
- for (int i = 0; i < 3; i++)\r
- {\r
- this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
- x + (3 * 26 * i),\r
- y\r
- );\r
- this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
- x + (3 * 26 * i) + 48,\r
- y,\r
- rc\r
- );\r
- }\r
- }\r
- }\r
- if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
- {\r
- int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1200 : 206;\r
- int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, bReverse[(int)E楽器パート.BASS], false, true) - (int)(3 * Scale.Y);\r
- // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
- Rectangle rc = new Rectangle(0, 0, 30, 36);\r
- if (this.txヒットバーGB != null)\r
- {\r
- for (int j = 0; j < 3; j++)\r
- {\r
- this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
- x + (3 * 26 * j),\r
- y\r
- );\r
- this.txヒットバーGB.t2D描画(CDTXMania.Instance.Device,\r
- x + (3 * 26 * j) + 48,\r
- y,\r
- rc\r
- );\r
- }\r
- }\r
- }\r
- }\r
- }\r
-\r
- protected override void t背景テクスチャの生成()\r
- {\r
- Rectangle bgrect;\r
- if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left)\r
- {\r
- bgrect = new Rectangle((int)(338 * Scale.X), (int)(57 * Scale.Y), (int)(278 * 2), (int)(355 * 2));\r
- }\r
- else\r
- {\r
- bgrect = new Rectangle(619 + 682, (int)(57 * Scale.Y), (int)(278 * 2), (int)(355 * 2));\r
- }\r
- string DefaultBgFilename = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ?\r
- @"Graphics\ScreenPlayDrums background.png" :\r
- @"Graphics\ScreenPlayDrums-background-center.png";\r
- string DefaultLaneFilename = ""; // @"Graphics\ScreenPlayDrums_Lane_parts_drums.png";\r
- string BgFilename = "";\r
- if (((CDTXMania.Instance.DTX.BACKGROUND != null) && (CDTXMania.Instance.DTX.BACKGROUND.Length > 0)) && !CDTXMania.Instance.ConfigIni.bストイックモード)\r
- {\r
- BgFilename = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.BACKGROUND;\r
- }\r
- base.t背景テクスチャの生成(DefaultBgFilename, DefaultLaneFilename, bgrect, BgFilename);\r
- }\r
-\r
- protected override void t進行描画_チップ_ドラムス(ref CChip pChip)\r
- {\r
- if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
- {\r
- #region [ Invisible処理 ]\r
- if (CDTXMania.Instance.ConfigIni.eInvisible.Drums != EInvisible.OFF)\r
- {\r
- cInvisibleChip.SetInvisibleStatus(ref pChip);\r
- }\r
- #endregion\r
- else\r
- {\r
- #region [ Sudden処理 ]\r
- if (CDTXMania.Instance.ConfigIni.bSudden.Drums)\r
- {\r
- if (pChip.nバーからの距離dot.Drums < 200 * Scale.Y)\r
- {\r
- pChip.b可視 = true;\r
- pChip.n透明度 = 0xff;\r
- }\r
- else if (pChip.nバーからの距離dot.Drums < 250 * Scale.Y)\r
- {\r
- pChip.b可視 = true;\r
- pChip.n透明度 = 0xff - ((int)((((double)(pChip.nバーからの距離dot.Drums - 200 * Scale.Y)) * 255.0) / 50.0));\r
- }\r
- else\r
- {\r
- pChip.b可視 = false;\r
- pChip.n透明度 = 0;\r
- }\r
- }\r
- #endregion\r
- #region [ Hidden処理 ]\r
- if (CDTXMania.Instance.ConfigIni.bHidden.Drums)\r
- {\r
- if (pChip.nバーからの距離dot.Drums < 100 * Scale.Y)\r
- {\r
- pChip.b可視 = false;\r
- }\r
- else if (pChip.nバーからの距離dot.Drums < 150 * Scale.Y)\r
- {\r
- pChip.b可視 = true;\r
- pChip.n透明度 = (int)((((double)(pChip.nバーからの距離dot.Drums - 100 * Scale.Y)) * 255.0) / 50.0);\r
- }\r
- }\r
- #endregion\r
- }\r
- if (!pChip.bHit && pChip.b可視)\r
- {\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.n透明度 = pChip.n透明度;\r
- }\r
- int x = this.nチャンネルtoX座標[(int)CDTXMania.Instance.ConfigIni.eドラムレーン表示位置, pChip.eチャンネル番号 - Ech定義.HiHatClose];\r
- int y = CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
- (int)(0x38 * Scale.Y + pChip.nバーからの距離dot.Drums) :\r
- (int)(0x1a6 * Scale.Y - pChip.nバーからの距離dot.Drums);\r
-\r
- if (this.txチップ != null)\r
- {\r
- double d = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1.0 : 0.75;\r
- this.txチップ.vc拡大縮小倍率 = new Vector3(\r
- (float)(pChip.dbチップサイズ倍率 * d),\r
- (float)pChip.dbチップサイズ倍率,\r
- 1f\r
- );\r
- }\r
- int num9 = this.ctチップ模様アニメ.Drums.n現在の値;\r
- switch (pChip.eチャンネル番号)\r
- {\r
- // HH\r
- case Ech定義.HiHatClose:\r
- x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(44 * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(32 * Scale.X),\r
- (int)(18)\r
- )\r
- );\r
- }\r
- break;\r
-\r
- // SD\r
- case Ech定義.Snare:\r
- x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(0x4c * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x20 * Scale.X),\r
- (int)(18)));\r
- }\r
- break;\r
-\r
- // BD\r
- case Ech定義.BassDrum:\r
- x += (int)(0x16 * Scale.X) - ((int)((44.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 11,\r
- new Rectangle(\r
- (int)(0 * Scale.X),\r
- (int)(num9 * (22 - 2)),\r
- (int)(44 * Scale.X),\r
- (int)(22)\r
- )\r
- );\r
- }\r
- break;\r
-\r
- // HT\r
- case Ech定義.HighTom:\r
- x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(0x6c * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x20 * Scale.X),\r
- (int)(18)));\r
- }\r
- break;\r
-\r
- // LT\r
- case Ech定義.LowTom:\r
- x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(140 * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x20 * Scale.X),\r
- (int)(18)));\r
- }\r
- break;\r
-\r
- // CY\r
- case Ech定義.Cymbal:\r
- x += (int)(0x13 * Scale.X) - ((int)((38.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 46,\r
- new Rectangle(\r
- (int)(0xcc * Scale.X),\r
- (int)(786),\r
- (int)(0x26 * Scale.X),\r
- (int)(78)));\r
-\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(0xcc * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x26 * Scale.X),\r
- (int)(18)));\r
- }\r
- break;\r
-\r
- // FT\r
- case Ech定義.FloorTom:\r
- x += (int)(0x10 * Scale.X) - ((int)((32.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(0xac * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x20 * Scale.X),\r
- (int)(18)));\r
- }\r
- break;\r
-\r
- // HHO\r
- case Ech定義.HiHatOpen:\r
- x += (int)(13 * Scale.X) - ((int)((26.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(0xf2 * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x1a * Scale.X),\r
- (int)(18)\r
- ));\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 16,\r
- new Rectangle(\r
- (int)(0xf2 * Scale.X),\r
- (int)(790),\r
- (int)(0x1a * Scale.X),\r
- (int)(30)\r
- ));\r
- }\r
- break;\r
-\r
- // RCY\r
- case Ech定義.RideCymbal:\r
- x += (int)(13 * Scale.X) - ((int)((26.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(0xf2 * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x1a * Scale.X),\r
- (int)(18)\r
- ));\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 16,\r
- new Rectangle(\r
- (int)(0xf2 * Scale.X),\r
- (int)(790),\r
- (int)(0x1a * Scale.X),\r
- (int)(30)\r
- ));\r
- }\r
- break;\r
-\r
- // LCY\r
- case Ech定義.LeftCymbal:\r
- x += (int)(0x13 * Scale.X) - ((int)((38.0 * pChip.dbチップサイズ倍率 * Scale.X) / 2.0));\r
- if (this.txチップ != null)\r
- {\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 46,\r
- new Rectangle(\r
- (int)(0xcc * Scale.X),\r
- (int)(786),\r
- (int)(0x26 * Scale.X),\r
- (int)(78)\r
- ));\r
- this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
- x,\r
- y - 9,\r
- new Rectangle(\r
- (int)(0xcc * Scale.X),\r
- (int)(num9 * (18 - 2)),\r
- (int)(0x26 * Scale.X),\r
- (int)(18)\r
- ));\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
- int indexSevenLanes = CStage演奏画面共通.nチャンネル0Atoレーン07[pChip.eチャンネル番号 - Ech定義.HiHatClose];\r
- // #35411 chnmr0 modified\r
- bool autoPlayCondition = (CDTXMania.Instance.ConfigIni.bAutoPlay[indexSevenLanes] && !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 -= this.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((Eレーン)indexSevenLanes, ((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((Eレーン)indexSevenLanes, flag, flag2, flag2, 演奏判定ライン座標.nJudgeLinePosY_delta.Drums);\r
- this.actPad.Hit(this.nチャンネル0Atoパッド08[pChip.eチャンネル番号 - Ech定義.HiHatClose]);\r
- this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, E楽器パート.DRUMS, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.DRUMS));\r
- this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip);\r
- cInvisibleChip.StartSemiInvisible(E楽器パート.DRUMS);\r
- }\r
- // #35411 modify end\r
-\r
- // #35411 2015.08.21 chnmr0 add\r
- // 目標値グラフにゴーストの達成率を渡す\r
- if (CDTXMania.Instance.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE &&\r
- CDTXMania.Instance.DTX.listTargetGhsotLag.Drums != null)\r
- {\r
- double val = 0;\r
- if (CDTXMania.Instance.ConfigIni.eTargetGhost.Drums == ETargetGhostData.ONLINE)\r
- {\r
- if (CDTXMania.Instance.DTX.n可視チップ数.Drums > 0)\r
- {\r
- // Online Stats の計算式\r
- val = 100 *\r
- (this.nヒット数_TargetGhost.Drums.Perfect * 17 +\r
- this.nヒット数_TargetGhost.Drums.Great * 7 +\r
- this.n最大コンボ数_TargetGhost.Drums * 3) / (20.0 * CDTXMania.Instance.DTX.n可視チップ数.Drums);\r
- }\r
- }\r
- else\r
- {\r
- val = CScoreIni.t演奏型スキルを計算して返す(\r
- CDTXMania.Instance.DTX.n可視チップ数.Drums,\r
- this.nヒット数_TargetGhost.Drums.Perfect,\r
- this.nヒット数_TargetGhost.Drums.Great,\r
- this.nヒット数_TargetGhost.Drums.Good,\r
- this.nヒット数_TargetGhost.Drums.Poor,\r
- this.nヒット数_TargetGhost.Drums.Miss,\r
- E楽器パート.DRUMS, new STAUTOPLAY());\r
- }\r
- if (val < 0) val = 0;\r
- if (val > 100) val = 100;\r
- this.actGraph.dbグラフ値目標_渡 = val;\r
- }\r
- //break;\r
- return;\r
- } // end of "if configIni.bDrums有効"\r
- if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
- {\r
- this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.DRUMS));\r
- pChip.bHit = true;\r
- }\r
- }\r
- protected override void t進行描画_チップ_ギターベース(ref CChip pChip, E楽器パート inst)\r
- {\r
- int xGtO = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 509 : 485;\r
- int xBsO = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 400 : 69;\r
- int xGtL = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 561 : 537;\r
- int xBsL = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 452 : 121;\r
-\r
- base.t進行描画_チップ_ギターベース(ref pChip, inst,\r
- 演奏判定ライン座標.n判定ラインY座標(inst, false), // 95 Normal\r
- 演奏判定ライン座標.n判定ラインY座標(inst, true), // 374 Reverse\r
- (int)(57 * Scale.Y), (int)(412 * Scale.Y), // チップのY軸表示範囲\r
- xGtO, xBsO, // openチップのX座標(Gt, Bs)\r
- 268, 144, 76, 6, 24, // オープンチップregionの x, y, w, h, 通常チップのw\r
- xGtO, xGtL, xBsO, xBsL, // GtのX, Gt左利きのX, BsのX, Bs左利きのX,\r
- 26, 24 // 描画のX座標間隔, テクスチャのX座標間隔\r
- );\r
- }\r
- protected override void t進行描画_チップ_フィルイン(ref CChip pChip)\r
- {\r
- if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
- {\r
- pChip.bHit = true;\r
- switch (pChip.n整数値)\r
- {\r
- case 0x01: // フィルイン開始\r
- if (CDTXMania.Instance.ConfigIni.bフィルイン有効)\r
- {\r
- this.bフィルイン中 = true;\r
- }\r
- break;\r
-\r
- case 0x02: // フィルイン終了\r
- if (CDTXMania.Instance.ConfigIni.bフィルイン有効)\r
- {\r
- this.bフィルイン中 = false;\r
- }\r
- if (((this.actCombo.n現在のコンボ数.Drums > 0) || CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである) && CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
- {\r
- if (this.r現在の歓声Chip.Drums != null)\r
- {\r
- CDTXMania.Instance.DTX.tチップの再生(this.r現在の歓声Chip.Drums, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
- }\r
- else\r
- {\r
- CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = 0;\r
- CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
- }\r
- }\r
- break;\r
-#if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST\r
- case 0x04: // HH消音あり(従来同等)\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = true;\r
- break;\r
- case 0x05: // HH消音無し\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = false;\r
- break;\r
- case 0x06: // ギター消音あり(従来同等)\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Gutiar = true;\r
- break;\r
- case 0x07: // ギター消音無し\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Gutiar = false;\r
- break;\r
- case 0x08: // ベース消音あり(従来同等)\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = true;\r
- break;\r
- case 0x09: // ベース消音無し\r
- CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = false;\r
- break;\r
-#endif\r
- }\r
- }\r
- }\r
-\r
- protected override void t進行描画_チップ_空打ち音設定_ドラム(ref CChip pChip)\r
- {\r
- if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
- {\r
- pChip.bHit = true;\r
- this.r現在の空うちドラムChip[(int)this.eチャンネルtoパッド[pChip.eチャンネル番号 - Ech定義.HiHatClose]] = pChip;\r
- }\r
- }\r
- #endregion\r
- }\r
-}\r
+
\ No newline at end of file
public CStageコンフィグ stageコンフィグ { get; private set; }\r
public CStage選曲 stage選曲 { get; private set; }\r
public CStage曲読み込み stage曲読み込み { get; private set; }\r
- public CStage演奏ギター画面 stage演奏ギター画面 { get; private set; }\r
- public CStage演奏ドラム画面 stage演奏ドラム画面 { get; private set; }\r
+ public CStage演奏画面共通 stage演奏画面 { get; private set; }\r
public CStage結果 stage結果 { get; private set; }\r
public CStageChangeSkin stageChangeSkin { get; private set; }\r
public CStage終了 stage終了 { get; private set; }\r
stageコンフィグ = new CStageコンフィグ();\r
stage選曲 = new CStage選曲();\r
stage曲読み込み = new CStage曲読み込み();\r
- stage演奏ドラム画面 = new CStage演奏ドラム画面();\r
- stage演奏ギター画面 = new CStage演奏ギター画面();\r
+ stage演奏画面 = new CStage演奏画面共通();\r
stage結果 = new CStage結果();\r
stageChangeSkin = new CStageChangeSkin();\r
stage終了 = new CStage終了();\r
this.listトップレベルActivities.Add(stageコンフィグ);\r
this.listトップレベルActivities.Add(stage選曲);\r
this.listトップレベルActivities.Add(stage曲読み込み);\r
- this.listトップレベルActivities.Add(stage演奏ドラム画面);\r
- this.listトップレベルActivities.Add(stage演奏ギター画面);\r
+ this.listトップレベルActivities.Add(stage演奏画面);\r
this.listトップレベルActivities.Add(stage結果);\r
this.listトップレベルActivities.Add(stageChangeSkin);\r
this.listトップレベルActivities.Add(stage終了);\r
}\r
#endregion\r
\r
- if (!ConfigIni.bギタレボモード)\r
- {\r
- Trace.TraceInformation("----------------------");\r
- Trace.TraceInformation("■ 演奏(ドラム画面)");\r
-#if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
-for (int i = 0; i < 5; i++)\r
-{\r
- for (int j = 0; j < 2; j++)\r
- {\r
- stage演奏ドラム画面.fDamageGaugeDelta[i, j] = ConfigIni.fGaugeFactor[i, j];\r
- }\r
-}\r
-for (int i = 0; i < 3; i++) {\r
- stage演奏ドラム画面.fDamageLevelFactor[i] = ConfigIni.fDamageLevelFactor[i];\r
-} \r
-#endif\r
- r直前のステージ = r現在のステージ;\r
- r現在のステージ = stage演奏ドラム画面;\r
- }\r
- else\r
- {\r
- Trace.TraceInformation("----------------------");\r
- Trace.TraceInformation("■ 演奏(ギター画面)");\r
-#if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
-for (int i = 0; i < 5; i++)\r
-{\r
- for (int j = 0; j < 2; j++)\r
- {\r
- stage演奏ギター画面.fDamageGaugeDelta[i, j] = ConfigIni.fGaugeFactor[i, j];\r
- }\r
-}\r
-for (int i = 0; i < 3; i++) {\r
- stage演奏ギター画面.fDamageLevelFactor[i] = ConfigIni.fDamageLevelFactor[i];\r
-} \r
-#endif\r
- r直前のステージ = r現在のステージ;\r
- r現在のステージ = stage演奏ギター画面;\r
- }\r
+ Trace.TraceInformation("----------------------");\r
+ Trace.TraceInformation("■ 演奏(ドラム画面)");\r
+ r直前のステージ = r現在のステージ;\r
+ r現在のステージ = stage演奏画面;\r
\r
foreach (STPlugin pg in this.listプラグイン)\r
{\r
\r
if (DTXVmode.Command == CDTXVmode.ECommand.Stop)\r
{\r
- if (!ConfigIni.bギタレボモード)\r
- {\r
- CDTXMania.Instance.stage演奏ドラム画面.t停止();\r
- }\r
- else\r
- {\r
- CDTXMania.Instance.stage演奏ギター画面.t停止();\r
- }\r
+ CDTXMania.Instance.stage演奏画面.t停止();\r
+\r
if (previewSound != null)\r
{\r
this.previewSound.tサウンドを停止する();\r
{\r
if (DTXVmode.NeedReload)\r
{\r
- if (!ConfigIni.bギタレボモード)\r
- {\r
- CDTXMania.Instance.stage演奏ドラム画面.t再読込();\r
- }\r
- else\r
- {\r
- CDTXMania.Instance.stage演奏ギター画面.t再読込();\r
- }\r
+ CDTXMania.Instance.stage演奏画面.t再読込();\r
\r
CDTXMania.Instance.ConfigIni.bDrums有効 = !DTXVmode.GRmode;\r
CDTXMania.Instance.ConfigIni.bGuitar有効 = true;\r
}\r
else\r
{\r
- if (!ConfigIni.bギタレボモード)\r
- {\r
- CDTXMania.Instance.stage演奏ドラム画面.t演奏位置の変更(CDTXMania.Instance.DTXVmode.nStartBar);\r
- }\r
- else\r
- {\r
- CDTXMania.Instance.stage演奏ギター画面.t演奏位置の変更(CDTXMania.Instance.DTXVmode.nStartBar);\r
- }\r
+ CDTXMania.Instance.stage演奏画面.t演奏位置の変更(CDTXMania.Instance.DTXVmode.nStartBar);\r
}\r
}\r
}\r
STDGBVALUE<CScoreIni.C演奏記録> record;\r
CChip[] chipArray = new CChip[10];\r
\r
- if (!ConfigIni.bギタレボモード)\r
- {\r
- chipArray = stage演奏ギター画面.GetNoChipDrums();\r
- record = stage演奏ドラム画面.Record;\r
- }\r
- else\r
- {\r
- record = stage演奏ギター画面.Record;\r
- record.Drums = new CScoreIni.C演奏記録();\r
- }\r
+ chipArray = stage演奏画面.GetNoChipDrums();\r
+ record = stage演奏画面.Record;\r
\r
double playskill = 0.0;\r
\r