OSDN Git Service

TEST_SHOWLAG マクロを定義してビルドすると、判定文字列(Perfect, Great,...)の下にジャストタイミングからのズレ時間(ms)を表示するようにした。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Wed, 2 Feb 2011 17:04:47 +0000 (17:04 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Wed, 2 Feb 2011 17:04:47 +0000 (17:04 +0000)
InputAdjustの設定を加味した上での値が表示されるので、InputAdjustの調整用に利用できる。

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@101 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏判定文字列共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CAct演奏Guitar判定文字列.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CStage演奏ギター画面.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏Drums判定文字列.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs

index c27418f..3ccfb0c 100644 (file)
@@ -383,6 +383,7 @@ namespace DTXMania
                        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
@@ -510,11 +511,10 @@ namespace DTXMania
 \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
@@ -524,6 +524,7 @@ namespace DTXMania
                                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
index 2db4592..47de33d 100644 (file)
@@ -22,6 +22,7 @@ namespace DTXMania
                        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
@@ -31,51 +32,53 @@ namespace DTXMania
                        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
@@ -90,6 +93,7 @@ namespace DTXMania
                                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
@@ -119,6 +123,7 @@ namespace DTXMania
                                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
@@ -129,6 +134,7 @@ namespace DTXMania
                                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
index eda8737..5ab18d3 100644 (file)
@@ -12,57 +12,29 @@ namespace DTXMania
 \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
@@ -170,13 +142,34 @@ namespace DTXMania
                                                                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
index f8ced29..8fa790c 100644 (file)
@@ -627,23 +627,24 @@ namespace DTXMania
 \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
@@ -974,13 +975,13 @@ namespace DTXMania
                        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
@@ -1112,12 +1113,12 @@ namespace DTXMania
                                        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
@@ -1306,9 +1307,9 @@ namespace DTXMania
                                        //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
@@ -2104,7 +2105,7 @@ namespace DTXMania
                                                        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
@@ -2239,7 +2240,7 @@ namespace DTXMania
                                                        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
index 54d2c24..9e43700 100644 (file)
@@ -1,5 +1,6 @@
 using System;\r
 using System.Collections.Generic;\r
+using System.Diagnostics;\r
 using System.Text;\r
 using System.Runtime.InteropServices;\r
 using SlimDX;\r
@@ -12,56 +13,28 @@ namespace DTXMania
 \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
@@ -181,13 +154,33 @@ namespace DTXMania
                                                                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
index 5108adb..29a4bdd 100644 (file)
@@ -687,7 +687,8 @@ namespace DTXMania
                {\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
@@ -1169,7 +1170,7 @@ namespace DTXMania
                                        {\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
@@ -1177,7 +1178,7 @@ namespace DTXMania
                                        {\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
@@ -1185,7 +1186,7 @@ namespace DTXMania
                                        {\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
@@ -1346,18 +1347,18 @@ namespace DTXMania
                                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