public int n透明度 = 0xff;\r
public int n発声位置;\r
public int n発声時刻ms;\r
+ public int nLag; // 2011.2.1 yyagi\r
public CDTX.CAVI rAVI;\r
public CDTX.CAVIPAN rAVIPan;\r
public CDTX.CBGA rBGA;\r
\r
public CChip()\r
{\r
- STDGBVALUE<int> stdgbvalue = new STDGBVALUE<int>();\r
- stdgbvalue.Drums = 0;\r
- stdgbvalue.Guitar = 0;\r
- stdgbvalue.Bass = 0;\r
- this.nバーからの距離dot = stdgbvalue;\r
+ this.nバーからの距離dot = new STDGBVALUE<int>();\r
+ this.nバーからの距離dot.Drums = 0;\r
+ this.nバーからの距離dot.Guitar = 0;\r
+ this.nバーからの距離dot.Bass = 0;\r
}\r
public void t初期化()\r
{\r
this.db実数値 = 0.0;\r
this.n発声位置 = 0;\r
this.n発声時刻ms = 0;\r
+ this.nLag = -999;\r
this.dbチップサイズ倍率 = 1.0;\r
this.bHit = false;\r
this.b可視 = true;\r
public int n相対X座標;\r
public int n相対Y座標;\r
public int n透明度;\r
+ public int nLag; // 2011.2.1 yyagi\r
}\r
\r
protected readonly ST判定文字列[] st判定文字列;\r
public int n画像番号;\r
public Rectangle rc;\r
}\r
+\r
+ protected readonly STlag数値[] stLag数値; // 2011.2.1 yyagi\r
+ [StructLayout( LayoutKind.Sequential )]\r
+ protected struct STlag数値\r
+ {\r
+ public Rectangle rc;\r
+ }\r
+\r
\r
protected CTexture[] tx判定文字列 = new CTexture[ 3 ];\r
+ protected CTexture txlag数値 = new CTexture(); // 2011.2.1 yyagi\r
\r
\r
// コンストラクタ\r
\r
public CAct演奏判定文字列共通()\r
{\r
- ST判定文字列[] st判定文字列Array = new ST判定文字列[ 7 ];\r
- ST判定文字列 st判定文字列 = new ST判定文字列();\r
- st判定文字列.n画像番号 = 0;\r
- st判定文字列.rc = new Rectangle( 0, 0, 0x80, 0x2a );\r
- st判定文字列Array[ 0 ] = st判定文字列;\r
- ST判定文字列 st判定文字列2 = new ST判定文字列();\r
- st判定文字列2.n画像番号 = 0;\r
- st判定文字列2.rc = new Rectangle( 0, 0x2b, 0x80, 0x2a );\r
- st判定文字列Array[ 1 ] = st判定文字列2;\r
- ST判定文字列 st判定文字列3 = new ST判定文字列();\r
- st判定文字列3.n画像番号 = 0;\r
- st判定文字列3.rc = new Rectangle( 0, 0x56, 0x80, 0x2a );\r
- st判定文字列Array[ 2 ] = st判定文字列3;\r
- ST判定文字列 st判定文字列4 = new ST判定文字列();\r
- st判定文字列4.n画像番号 = 1;\r
- st判定文字列4.rc = new Rectangle( 0, 0, 0x80, 0x2a );\r
- st判定文字列Array[ 3 ] = st判定文字列4;\r
- ST判定文字列 st判定文字列5 = new ST判定文字列();\r
- st判定文字列5.n画像番号 = 1;\r
- st判定文字列5.rc = new Rectangle( 0, 0x2b, 0x80, 0x2a );\r
- st判定文字列Array[ 4 ] = st判定文字列5;\r
- ST判定文字列 st判定文字列6 = new ST判定文字列();\r
- st判定文字列6.n画像番号 = 1;\r
- st判定文字列6.rc = new Rectangle( 0, 0x56, 0x80, 0x2a );\r
- st判定文字列Array[ 5 ] = st判定文字列6;\r
- ST判定文字列 st判定文字列7 = new ST判定文字列();\r
- st判定文字列7.n画像番号 = 2;\r
- st判定文字列7.rc = new Rectangle( 0, 0, 0x80, 0x2a );\r
- st判定文字列Array[ 6 ] = st判定文字列7;\r
- this.st判定文字列 = st判定文字列Array;\r
+ this.st判定文字列 = new ST判定文字列[ 7 ];\r
+ Rectangle[] r = new Rectangle[] {\r
+ new Rectangle( 0, 0, 0x80, 0x2a ),\r
+ new Rectangle( 0, 0x2b, 0x80, 0x2a ),\r
+ new Rectangle( 0, 0x56, 0x80, 0x2a ),\r
+ new Rectangle( 0, 0, 0x80, 0x2a ),\r
+ new Rectangle( 0, 0x2b, 0x80, 0x2a ),\r
+ new Rectangle( 0, 0x56, 0x80, 0x2a ),\r
+ new Rectangle( 0, 0, 0x80, 0x2a )\r
+ };\r
+ for ( int i = 0; i < 7; i++ )\r
+ {\r
+ this.st判定文字列[ i ] = new ST判定文字列();\r
+ this.st判定文字列[ i ].n画像番号 = i / 3;\r
+ this.st判定文字列[ i ].rc = r[i];\r
+ }\r
+\r
+ this.stLag数値 = new STlag数値[ 12 * 2 ]; // 2011.2.1 yyagi\r
+ for ( int i = 0; i < 12; i++ )\r
+ {\r
+ this.stLag数値[ i ].rc = new Rectangle( ( i % 4 ) * 15 , ( i / 4 ) * 19 , 15, 19 );\r
+ this.stLag数値[ i + 12 ].rc = new Rectangle( ( i % 4 ) * 15 + 64, ( i / 4 ) * 19 + 64, 15, 19 );\r
+ }\r
base.b活性化してない = true;\r
}\r
\r
\r
// メソッド\r
\r
- public virtual void Start( int nLane, E判定 judge )\r
+ public virtual void Start( int nLane, E判定 judge, int lag )\r
{\r
if( ( nLane < 0 ) || ( nLane > 11 ) )\r
{\r
this.st状態[ nLane ].n相対X座標 = 0;\r
this.st状態[ nLane ].n相対Y座標 = 0;\r
this.st状態[ nLane ].n透明度 = 0xff;\r
+ this.st状態[ nLane ].nLag = lag;\r
}\r
}\r
\r
this.tx判定文字列[ 0 ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay judge strings 1.png" ) );\r
this.tx判定文字列[ 1 ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay judge strings 2.png" ) );\r
this.tx判定文字列[ 2 ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay judge strings 3.png" ) );\r
+ this.txlag数値 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect level numbers.png" ) );\r
base.OnManagedリソースの作成();\r
}\r
}\r
CDTXMania.tテクスチャの解放( ref this.tx判定文字列[ 0 ] );\r
CDTXMania.tテクスチャの解放( ref this.tx判定文字列[ 1 ] );\r
CDTXMania.tテクスチャの解放( ref this.tx判定文字列[ 2 ] );\r
+ CDTXMania.tテクスチャの解放( ref this.txlag数値 );\r
base.OnManagedリソースの解放();\r
}\r
}\r
\r
public CAct演奏Guitar判定文字列()\r
{\r
- STレーンサイズ[] stレーンサイズArray = new STレーンサイズ[ 12 ];\r
+ this.stレーンサイズ = new STレーンサイズ[ 12 ];\r
STレーンサイズ stレーンサイズ = new STレーンサイズ();\r
- stレーンサイズ.x = 0x24;\r
- stレーンサイズ.w = 0x24;\r
- stレーンサイズArray[ 0 ] = stレーンサイズ;\r
- STレーンサイズ stレーンサイズ2 = new STレーンサイズ();\r
- stレーンサイズ2.x = 0x4d;\r
- stレーンサイズ2.w = 30;\r
- stレーンサイズArray[ 1 ] = stレーンサイズ2;\r
- STレーンサイズ stレーンサイズ3 = new STレーンサイズ();\r
- stレーンサイズ3.x = 0x6f;\r
- stレーンサイズ3.w = 30;\r
- stレーンサイズArray[ 2 ] = stレーンサイズ3;\r
- STレーンサイズ stレーンサイズ4 = new STレーンサイズ();\r
- stレーンサイズ4.x = 0x92;\r
- stレーンサイズ4.w = 0x2a;\r
- stレーンサイズArray[ 3 ] = stレーンサイズ4;\r
- STレーンサイズ stレーンサイズ5 = new STレーンサイズ();\r
- stレーンサイズ5.x = 0xc1;\r
- stレーンサイズ5.w = 30;\r
- stレーンサイズArray[ 4 ] = stレーンサイズ5;\r
- STレーンサイズ stレーンサイズ6 = new STレーンサイズ();\r
- stレーンサイズ6.x = 0xe3;\r
- stレーンサイズ6.w = 30;\r
- stレーンサイズArray[ 5 ] = stレーンサイズ6;\r
- STレーンサイズ stレーンサイズ7 = new STレーンサイズ();\r
- stレーンサイズ7.x = 0x105;\r
- stレーンサイズ7.w = 30;\r
- stレーンサイズArray[ 6 ] = stレーンサイズ7;\r
- STレーンサイズ stレーンサイズ8 = new STレーンサイズ();\r
- stレーンサイズ8.x = 0x127;\r
- stレーンサイズ8.w = 0x24;\r
- stレーンサイズArray[ 7 ] = stレーンサイズ8;\r
- STレーンサイズ stレーンサイズ9 = new STレーンサイズ();\r
- stレーンサイズ9.x = 0;\r
- stレーンサイズ9.w = 0;\r
- stレーンサイズArray[ 8 ] = stレーンサイズ9;\r
- STレーンサイズ stレーンサイズ10 = new STレーンサイズ();\r
- stレーンサイズ10.x = 0;\r
- stレーンサイズ10.w = 0;\r
- stレーンサイズArray[ 9 ] = stレーンサイズ10;\r
- STレーンサイズ stレーンサイズ11 = new STレーンサイズ();\r
- stレーンサイズ11.x = 0x1a;\r
- stレーンサイズ11.w = 0x6f;\r
- stレーンサイズArray[ 10 ] = stレーンサイズ11;\r
- STレーンサイズ stレーンサイズ12 = new STレーンサイズ();\r
- stレーンサイズ12.x = 480;\r
- stレーンサイズ12.w = 0x6f;\r
- stレーンサイズArray[ 11 ] = stレーンサイズ12;\r
- this.stレーンサイズ = stレーンサイズArray;\r
- base.b活性化してない = true;\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
\r
num5 = ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.レーン上 ) ? this.stレーンサイズ[ j ].x : 0xaf;\r
num6 = CDTXMania.ConfigIni.bReverse.Guitar ? 0x12b : 190;\r
}\r
- int x = ( ( num5 + base.st状態[ j ].n相対X座標 ) + ( this.stレーンサイズ[ j ].w / 2 ) ) - ( (int) ( ( ( 128f * base.st状態[ j ].fX方向拡大率 ) * 0.8 ) / 2.0 ) );\r
+ int xc = ( ( num5 + 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 = ( num6 + base.st状態[ j ].n相対Y座標 ) - ( (int) ( ( ( 43f * base.st状態[ j ].fY方向拡大率 ) * 0.8 ) / 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方向拡大率 * 0.8 ), (float) ( base.st状態[ j ].fY方向拡大率 * 0.8 ), 1f );\r
base.tx判定文字列[ index ].t2D描画( CDTXMania.app.Device, x, y, base.st判定文字列[ (int) base.st状態[ j ].judge ].rc );\r
+#if TEST_SHOWLAG\r
+ if (base.txlag数値 != null) // 2011.2.1 yyagi\r
+ {\r
+ bool minus = false;\r
+ int offsetX = 0;\r
+ string strDispLag = base.st状態[j].nLag.ToString();\r
+ if (strDispLag[0] == '-') {\r
+ minus = true;\r
+ }\r
+ x = xc - strDispLag.Length * 15 / 2;\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;\r
+ base.txlag数値.t2D描画( CDTXMania.app.Device, x + offsetX, y + 35, base.stLag数値[ p ].rc );\r
+ offsetX += 15;\r
+ }\r
+ }\r
+#endif\r
+\r
}\r
Label_06B7: ;\r
}\r
\r
private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
{\r
- if( pChip != null )\r
+ if ( pChip != null )\r
{\r
- int nDeltaTime = Math.Abs( (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms ) ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
-//Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
- if( nDeltaTime <= CDTXMania.nPerfect範囲ms )\r
+ pChip.nLag = (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
+ int nDeltaTime = Math.Abs( pChip.nLag );\r
+ //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
+ if ( nDeltaTime <= CDTXMania.nPerfect範囲ms )\r
{\r
return E判定.Perfect;\r
}\r
- if( nDeltaTime <= CDTXMania.nGreat範囲ms )\r
+ if ( nDeltaTime <= CDTXMania.nGreat範囲ms )\r
{\r
return E判定.Great;\r
}\r
- if( nDeltaTime <= CDTXMania.nGood範囲ms )\r
+ if ( nDeltaTime <= CDTXMania.nGood範囲ms )\r
{\r
return E判定.Good;\r
}\r
- if( nDeltaTime <= CDTXMania.nPoor範囲ms )\r
+ if ( nDeltaTime <= CDTXMania.nPoor範囲ms )\r
{\r
return E判定.Poor;\r
}\r
switch (pChip.e楽器パート)\r
{\r
case E楽器パート.GUITAR:\r
- eJudgeResult = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, bIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Guitar);\r
- this.actJudgeString.Start(10, bIsAutoPlay ? E判定.Auto : eJudgeResult);\r
+ eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, bIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Guitar );\r
+ this.actJudgeString.Start( 10, bIsAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag );\r
break;\r
\r
case E楽器パート.BASS:\r
- eJudgeResult = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, bIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Bass);\r
- this.actJudgeString.Start(11, bIsAutoPlay ? E判定.Auto : eJudgeResult);\r
+ eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, bIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Bass );\r
+ this.actJudgeString.Start( 11, bIsAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag );\r
break;\r
}\r
if( !bIsAutoPlay )\r
break;\r
\r
case E楽器パート.GUITAR:\r
- this.actJudgeString.Start( 10, E判定.Bad );\r
+ this.actJudgeString.Start( 10, E判定.Bad, 999 );\r
this.actCombo.n現在のコンボ数.Guitar = 0;\r
return;\r
\r
case E楽器パート.BASS:\r
- this.actJudgeString.Start( 11, E判定.Bad );\r
+ this.actJudgeString.Start( 11, E判定.Bad, 999 );\r
this.actCombo.n現在のコンボ数.Bass = 0;\r
break;\r
\r
//nInputAdjustTime = nInputAdjustTimes[(int)pChip.e楽器パート];\r
nInputAdjustTime = this.nInputAdjustTimeMs[(int)pChip.e楽器パート];\r
}\r
- \r
+\r
if( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&\r
- ((pChip.nバーからの距離dot.Drums < 0) && (this.e指定時刻からChipのJUDGEを返す(CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime) == E判定.Miss)))\r
+ ((pChip.nバーからの距離dot.Drums < 0) && (this.e指定時刻からChipのJUDGEを返す(CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss)))\r
{\r
this.tチップのヒット処理( CDTXMania.Timer.n現在時刻, pChip );\r
}\r
this.t入力メソッド記憶( E楽器パート.GUITAR );\r
long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar, 0 );\r
- E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Guitar);\r
+ E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Guitar );\r
if (((pChip != null) && ((pChip.nチャンネル番号 & 15) == flagRGB)) && (e判定 != E判定.Miss))\r
{\r
if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
this.t入力メソッド記憶( E楽器パート.BASS );\r
long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf, this.nInputAdjustTimeMs.Bass, 0 );\r
- E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Bass);\r
+ E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Bass );\r
if (((pChip != null) && ((pChip.nチャンネル番号 & 15) == flagRGB)) && (e判定 != E判定.Miss))\r
{\r
if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
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
public CAct演奏Drums判定文字列()\r
{\r
- STレーンサイズ[] stレーンサイズArray = new STレーンサイズ[ 12 ];\r
+ this.stレーンサイズ = new STレーンサイズ[ 12 ];\r
STレーンサイズ stレーンサイズ = new STレーンサイズ();\r
- stレーンサイズ.x = 0x24;\r
- stレーンサイズ.w = 0x24;\r
- stレーンサイズArray[ 0 ] = stレーンサイズ;\r
- STレーンサイズ stレーンサイズ2 = new STレーンサイズ();\r
- stレーンサイズ2.x = 0x4d;\r
- stレーンサイズ2.w = 30;\r
- stレーンサイズArray[ 1 ] = stレーンサイズ2;\r
- STレーンサイズ stレーンサイズ3 = new STレーンサイズ();\r
- stレーンサイズ3.x = 0x6f;\r
- stレーンサイズ3.w = 30;\r
- stレーンサイズArray[ 2 ] = stレーンサイズ3;\r
- STレーンサイズ stレーンサイズ4 = new STレーンサイズ();\r
- stレーンサイズ4.x = 0x92;\r
- stレーンサイズ4.w = 0x2a;\r
- stレーンサイズArray[ 3 ] = stレーンサイズ4;\r
- STレーンサイズ stレーンサイズ5 = new STレーンサイズ();\r
- stレーンサイズ5.x = 0xc1;\r
- stレーンサイズ5.w = 30;\r
- stレーンサイズArray[ 4 ] = stレーンサイズ5;\r
- STレーンサイズ stレーンサイズ6 = new STレーンサイズ();\r
- stレーンサイズ6.x = 0xe3;\r
- stレーンサイズ6.w = 30;\r
- stレーンサイズArray[ 5 ] = stレーンサイズ6;\r
- STレーンサイズ stレーンサイズ7 = new STレーンサイズ();\r
- stレーンサイズ7.x = 0x105;\r
- stレーンサイズ7.w = 30;\r
- stレーンサイズArray[ 6 ] = stレーンサイズ7;\r
- STレーンサイズ stレーンサイズ8 = new STレーンサイズ();\r
- stレーンサイズ8.x = 0x127;\r
- stレーンサイズ8.w = 0x24;\r
- stレーンサイズArray[ 7 ] = stレーンサイズ8;\r
- STレーンサイズ stレーンサイズ9 = new STレーンサイズ();\r
- stレーンサイズ9.x = 0;\r
- stレーンサイズ9.w = 0;\r
- stレーンサイズArray[ 8 ] = stレーンサイズ9;\r
- STレーンサイズ stレーンサイズ10 = new STレーンサイズ();\r
- stレーンサイズ10.x = 0;\r
- stレーンサイズ10.w = 0;\r
- stレーンサイズArray[ 9 ] = stレーンサイズ10;\r
- STレーンサイズ stレーンサイズ11 = new STレーンサイズ();\r
- stレーンサイズ11.x = 0x1fb;\r
- stレーンサイズ11.w = 80;\r
- stレーンサイズArray[ 10 ] = stレーンサイズ11;\r
- STレーンサイズ stレーンサイズ12 = new STレーンサイズ();\r
- stレーンサイズ12.x = 0x18e;\r
- stレーンサイズ12.w = 80;\r
- stレーンサイズArray[ 11 ] = stレーンサイズ12;\r
- this.stレーンサイズ = stレーンサイズArray;\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
+ { 0x1fb, 80 },\r
+ { 0x18e, 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
num6 = CDTXMania.ConfigIni.bReverse.Guitar ? ( ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.レーン上 ) ? 240 : 100 ) + ( this.n文字の縦表示位置[ j ] * 0x20 ) ) : ( ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.レーン上 ) ? 180 : 300 ) + ( this.n文字の縦表示位置[ j ] * 0x20 ) );\r
}\r
}\r
- int x = ( ( num5 + base.st状態[ j ].n相対X座標 ) + ( this.stレーンサイズ[ j ].w / 2 ) ) - ( (int) ( ( 64f * base.st状態[ j ].fX方向拡大率 ) * ( ( j < 10 ) ? 1.0 : 0.7 ) ) );\r
+ int xc = ( ( num5 + 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 = ( num6 + 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描画( CDTXMania.app.Device, x, y, base.st判定文字列[ (int) base.st状態[ j ].judge ].rc );\r
+#if TEST_SHOWLAG\r
+ if (base.txlag数値 != null) // 2011.2.1 yyagi\r
+ {\r
+ bool minus = false;\r
+ int offsetX = 0;\r
+ string strDispLag = base.st状態[j].nLag.ToString();\r
+ if (strDispLag[0] == '-') {\r
+ minus = true;\r
+ }\r
+ x = xc - strDispLag.Length * 15 / 2;\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;\r
+ base.txlag数値.t2D描画( CDTXMania.app.Device, x + offsetX, y + 37, base.stLag数値[ p ].rc );\r
+ offsetX += 15;\r
+ }\r
+ }\r
+#endif\r
}\r
Label_07FC: ;\r
}\r
{\r
if( pChip != null )\r
{\r
- int nDeltaTime = Math.Abs( (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms ) ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
+ pChip.nLag = (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
+ int nDeltaTime = Math.Abs( pChip.nLag);\r
//Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
if( nDeltaTime <= CDTXMania.nPerfect範囲ms )\r
{\r
{\r
int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? 0 : this.nInputAdjustTimeMs.Drums;\r
eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
- this.actJudgeString.Start( this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ], bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? E判定.Auto : eJudgeResult );\r
+ this.actJudgeString.Start( this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ], bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? E判定.Auto : eJudgeResult, pChip.nLag );\r
}\r
break;\r
\r
{\r
int nInputAdjustTime = bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;\r
eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
- this.actJudgeString.Start( 10, bIsAutoPlay.Guitar ? E判定.Auto : eJudgeResult );\r
+ this.actJudgeString.Start( 10, bIsAutoPlay.Guitar ? E判定.Auto : eJudgeResult, pChip.nLag );\r
}\r
break;\r
\r
{\r
int nInputAdjustTime = bIsAutoPlay.Bass ? 0 : this.nInputAdjustTimeMs.Bass;\r
eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
- this.actJudgeString.Start( 11, bIsAutoPlay.Bass ? E判定.Auto : eJudgeResult );\r
+ this.actJudgeString.Start( 11, bIsAutoPlay.Bass ? E判定.Auto : eJudgeResult, pChip.nLag );\r
}\r
break;\r
}\r
case E楽器パート.DRUMS:\r
if( ( nLane >= 0 ) && ( nLane <= 7 ) )\r
{\r
- this.actJudgeString.Start( nLane, CDTXMania.ConfigIni.bAutoPlay[ nLane ] ? E判定.Auto : E判定.Miss );\r
+ this.actJudgeString.Start( nLane, CDTXMania.ConfigIni.bAutoPlay[ nLane ] ? E判定.Auto : E判定.Miss, 999 );\r
}\r
this.actCOMBO.n現在のコンボ数.Drums = 0;\r
return;\r
\r
case E楽器パート.GUITAR:\r
- this.actJudgeString.Start( 10, E判定.Bad );\r
+ this.actJudgeString.Start( 10, E判定.Bad, 999 );\r
this.actCOMBO.n現在のコンボ数.Guitar = 0;\r
return;\r
\r
case E楽器パート.BASS:\r
- this.actJudgeString.Start( 11, E判定.Bad );\r
+ this.actJudgeString.Start( 11, E判定.Bad, 999 );\r
this.actCOMBO.n現在のコンボ数.Bass = 0;\r
return;\r
}\r