OSDN Git Service

#34198 DirectShow による動画の再生を行うクラス CAviDS を追加し、これを利用するように変更した。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CAct演奏BGA.cs
index 558de3b..3ab7407 100644 (file)
@@ -170,53 +170,59 @@ namespace DTXMania
                                {\r
                                        if( ( ( this.stLayer[ i ].n移動開始時刻ms != -1 ) && ( ( this.stLayer[ i ].rBMP != null ) || ( this.stLayer[ i ].rBMPTEX != null ) ) ) && ( ( ( this.stLayer[ i ].rBMP == null ) || ( this.stLayer[ i ].rBMP.bUse && ( this.stLayer[ i ].rBMP.tx画像 != null ) ) ) && ( ( this.stLayer[ i ].rBMPTEX == null ) || ( this.stLayer[ i ].rBMPTEX.bUse && ( this.stLayer[ i ].rBMPTEX.tx画像 != null ) ) ) ) )\r
                                        {\r
-                                               Size size = this.stLayer[ i ].sz開始サイズ;\r
-                                               Size size2 = this.stLayer[ i ].sz終了サイズ;\r
-                                               Point point = this.stLayer[ i ].pt画像側開始位置;\r
-                                               Point point2 = this.stLayer[ i ].pt画像側終了位置;\r
-                                               Point point3 = this.stLayer[ i ].pt表示側開始位置;\r
-                                               Point point4 = this.stLayer[ i ].pt表示側終了位置;\r
-                                               long num2 = this.stLayer[ i ].n総移動時間ms;\r
-                                               long num3 = this.stLayer[ i ].n移動開始時刻ms;\r
-                                               if( CDTXMania.Timer.n現在時刻 < num3 )\r
+                                               Size sizeStart = this.stLayer[ i ].sz開始サイズ;\r
+                                               Size sizeEnd = this.stLayer[ i ].sz終了サイズ;\r
+                                               Point ptImgStart = this.stLayer[ i ].pt画像側開始位置;\r
+                                               Point ptImgEnd = this.stLayer[ i ].pt画像側終了位置;\r
+                                               Point ptDispStart = this.stLayer[ i ].pt表示側開始位置;\r
+                                               Point ptDispEnd = this.stLayer[ i ].pt表示側終了位置;\r
+                                               long timeTotal = this.stLayer[ i ].n総移動時間ms;\r
+                                               long timeMoveStart = this.stLayer[ i ].n移動開始時刻ms;\r
+                                               if( CDTXMania.Timer.n現在時刻 < timeMoveStart )\r
                                                {\r
-                                                       num3 = CDTXMania.Timer.n現在時刻;\r
+                                                       timeMoveStart = CDTXMania.Timer.n現在時刻;\r
                                                }\r
-                                               Size size3 = new Size( 0x116, 0x163 );\r
+                                               // Size size3 = new Size( 0x116, 0x163 );\r
+                                               Size size3 = new Size(556, 710);\r
+                                               // #34192 2015/10/30 (chnrm0)\r
+                                               // 表示域を2倍に変更した。\r
+                                               // x,yについては次のように変更した。\r
+                                               // 338,57 => 1014+139,128 (Dr.) 139は278の半分で、GR領域の中央によせるためにすこし右側にずらした。\r
+                                               // 181,50 => 682, 112 (Gt.)\r
                                                Size size4 = new Size( ( this.stLayer[ i ].rBMP != null ) ? this.stLayer[ i ].rBMP.n幅 : this.stLayer[ i ].rBMPTEX.tx画像.sz画像サイズ.Width, ( this.stLayer[ i ].rBMP != null ) ? this.stLayer[ i ].rBMP.n高さ : this.stLayer[ i ].rBMPTEX.tx画像.sz画像サイズ.Height );\r
-                                               int num4 = (int) ( ( CDTXMania.Timer.n現在時刻 - num3 ) * ( ( (double) CDTXMania.ConfigIni.n演奏速度 ) / 20.0 ) );\r
-                                               if( ( num2 != 0 ) && ( num2 < num4 ) )\r
+                                               int num4 = (int) ( ( CDTXMania.Timer.n現在時刻 - timeMoveStart ) * ( ( (double) CDTXMania.ConfigIni.n演奏速度 ) / 20.0 ) );\r
+                                               if( ( timeTotal != 0 ) && ( timeTotal < num4 ) )\r
                                                {\r
-                                                       this.stLayer[ i ].pt画像側開始位置 = point = point2;\r
-                                                       this.stLayer[ i ].pt表示側開始位置 = point3 = point4;\r
-                                                       this.stLayer[ i ].sz開始サイズ = size = size2;\r
-                                                       this.stLayer[ i ].n総移動時間ms = num2 = 0;\r
+                                                       this.stLayer[ i ].pt画像側開始位置 = ptImgStart = ptImgEnd;\r
+                                                       this.stLayer[ i ].pt表示側開始位置 = ptDispStart = ptDispEnd;\r
+                                                       this.stLayer[ i ].sz開始サイズ = sizeStart = sizeEnd;\r
+                                                       this.stLayer[ i ].n総移動時間ms = timeTotal = 0;\r
                                                }\r
                                                Rectangle rectangle = new Rectangle();\r
                                                Rectangle rectangle2 = new Rectangle();\r
-                                               if( num2 == 0 )\r
+                                               if( timeTotal == 0 )\r
                                                {\r
-                                                       rectangle.X = point.X;\r
-                                                       rectangle.Y = point.Y;\r
-                                                       rectangle.Width = size.Width;\r
-                                                       rectangle.Height = size.Height;\r
-                                                       rectangle2.X = point3.X;\r
-                                                       rectangle2.Y = point3.Y;\r
-                                                       rectangle2.Width = size.Width;\r
-                                                       rectangle2.Height = size.Height;\r
+                                                       rectangle.X = ptImgStart.X;\r
+                                                       rectangle.Y = ptImgStart.Y;\r
+                                                       rectangle.Width = sizeStart.Width;\r
+                                                       rectangle.Height = sizeStart.Height;\r
+                                                       rectangle2.X = ptDispStart.X;\r
+                                                       rectangle2.Y = ptDispStart.Y;\r
+                                                       rectangle2.Width = sizeStart.Width;\r
+                                                       rectangle2.Height = sizeStart.Height;\r
                                                }\r
                                                else\r
                                                {\r
-                                                       double num5 = ( (double) num4 ) / ( (double) num2 );\r
-                                                       Size size5 = new Size( size.Width + ( (int) ( ( size2.Width - size.Width ) * num5 ) ), size.Height + ( (int) ( ( size2.Height - size.Height ) * num5 ) ) );\r
-                                                       rectangle.X = point.X + ( (int) ( ( point2.X - point.X ) * num5 ) );\r
-                                                       rectangle.Y = point.Y + ( (int) ( ( point2.Y - point.Y ) * num5 ) );\r
-                                                       rectangle.Width = size5.Width;\r
-                                                       rectangle.Height = size5.Height;\r
-                                                       rectangle2.X = point3.X + ( (int) ( ( point4.X - point3.X ) * num5 ) );\r
-                                                       rectangle2.Y = point3.Y + ( (int) ( ( point4.Y - point3.Y ) * num5 ) );\r
-                                                       rectangle2.Width = size5.Width;\r
-                                                       rectangle2.Height = size5.Height;\r
+                                                       double coefSizeWhileMoving = ( (double) num4 ) / ( (double) timeTotal );\r
+                                                       Size sizeWhileMoving = new Size( sizeStart.Width + ( (int) ( ( sizeEnd.Width - sizeStart.Width ) * coefSizeWhileMoving ) ), sizeStart.Height + ( (int) ( ( sizeEnd.Height - sizeStart.Height ) * coefSizeWhileMoving ) ) );\r
+                                                       rectangle.X = ptImgStart.X + ( (int) ( ( ptImgEnd.X - ptImgStart.X ) * coefSizeWhileMoving ) );\r
+                                                       rectangle.Y = ptImgStart.Y + ( (int) ( ( ptImgEnd.Y - ptImgStart.Y ) * coefSizeWhileMoving ) );\r
+                                                       rectangle.Width = sizeWhileMoving.Width;\r
+                                                       rectangle.Height = sizeWhileMoving.Height;\r
+                                                       rectangle2.X = ptDispStart.X + ( (int) ( ( ptDispEnd.X - ptDispStart.X ) * coefSizeWhileMoving ) );\r
+                                                       rectangle2.Y = ptDispStart.Y + ( (int) ( ( ptDispEnd.Y - ptDispStart.Y ) * coefSizeWhileMoving ) );\r
+                                                       rectangle2.Width = sizeWhileMoving.Width;\r
+                                                       rectangle2.Height = sizeWhileMoving.Height;\r
                                                }\r
                                                if( ( ( ( rectangle.Right > 0 ) && ( rectangle.Bottom > 0 ) ) && ( ( rectangle.Left < size4.Width ) && ( rectangle.Top < size4.Height ) ) ) && ( ( ( rectangle2.Right > 0 ) && ( rectangle2.Bottom > 0 ) ) && ( ( rectangle2.Left < size3.Width ) && ( rectangle2.Top < size3.Height ) ) ) )\r
                                                {\r
@@ -270,24 +276,39 @@ namespace DTXMania
                                                        }\r
                                                        if( ( ( ( ( rectangle.Left < rectangle.Right ) && ( rectangle.Top < rectangle.Bottom ) ) && ( ( rectangle2.Left < rectangle2.Right ) && ( rectangle2.Top < rectangle2.Bottom ) ) ) && ( ( ( rectangle.Right >= 0 ) && ( rectangle.Bottom >= 0 ) ) && ( ( rectangle.Left <= size4.Width ) && ( rectangle.Top <= size4.Height ) ) ) ) && ( ( ( rectangle2.Right >= 0 ) && ( rectangle2.Bottom >= 0 ) ) && ( ( rectangle2.Left <= size3.Width ) && ( rectangle2.Top <= size3.Height ) ) ) )\r
                                                        {\r
-                                                               if( ( this.stLayer[ i ].rBMP != null ) && ( this.stLayer[ i ].rBMP.tx画像 != null ) )\r
+                                                               bool b2倍可能 = false;\r
+                                                               if( ( rectangle2.Left * 2 <= size3.Width ) && (rectangle2.Top * 2 <= size3.Height ) )\r
                                                                {\r
-                                                                       this.stLayer[ i ].rBMP.tx画像.vc拡大縮小倍率 = new Vector3( Scale.X, Scale.Y, 1f );\r
-                                                                       //this.stLayer[ i ].rBMP.tx画像.vc拡大縮小倍率 = new Vector3( 2f, 2f, 1f );\r
+                                                                       b2倍可能 = true;\r
+                                                               }\r
+                                                               if ( ( this.stLayer[ i ].rBMP != null ) && ( this.stLayer[ i ].rBMP.tx画像 != null ) )\r
+                                                               {\r
+                                                                       //this.stLayer[ i ].rBMP.tx画像.vc拡大縮小倍率 = new Vector3( Scale.X, Scale.Y, 1f );\r
+                                                                       if (b2倍可能)\r
+                                                                       {\r
+                                                                               this.stLayer[i].rBMP.tx画像.vc拡大縮小倍率 = new Vector3(2f, 2f, 1f);\r
+                                                                               rectangle2.X *= 2;\r
+                                                                               rectangle2.Y *= 2;\r
+                                                                       }\r
                                                                        this.stLayer[ i ].rBMP.tx画像.t2D描画(\r
                                                                                CDTXMania.app.Device,\r
-                                                                               (x + rectangle2.X) * Scale.X,\r
-                                                                               (y + rectangle2.Y) * Scale.Y,\r
+                                                                               (x + rectangle2.X),\r
+                                                                               (y + rectangle2.Y),\r
                                                                                rectangle );\r
                                                                }\r
                                                                else if( ( this.stLayer[ i ].rBMPTEX != null ) && ( this.stLayer[ i ].rBMPTEX.tx画像 != null ) )\r
                                                                {\r
-                                                                       this.stLayer[ i ].rBMPTEX.tx画像.vc拡大縮小倍率 = new Vector3( Scale.X, Scale.Y, 1f );\r
-                                                                       //this.stLayer[ i ].rBMPTEX.tx画像.vc拡大縮小倍率 = new Vector3( 2f, 2f, 1f );\r
+                                                                       //this.stLayer[ i ].rBMPTEX.tx画像.vc拡大縮小倍率 = new Vector3( Scale.X, Scale.Y, 1f );\r
+                                                                       if (b2倍可能)\r
+                                                                       {\r
+                                                                               this.stLayer[i].rBMPTEX.tx画像.vc拡大縮小倍率 = new Vector3(2f, 2f, 1f);\r
+                                                                               rectangle2.X *= 2;\r
+                                                                               rectangle2.Y *= 2;\r
+                                                                       }\r
                                                                        this.stLayer[ i ].rBMPTEX.tx画像.t2D描画(\r
                                                                                CDTXMania.app.Device,\r
-                                                                               (x + rectangle2.X) * Scale.X,\r
-                                                                               (y + rectangle2.Y) * Scale.Y,\r
+                                                                               (x + rectangle2.X),\r
+                                                                               (y + rectangle2.Y),\r
                                                                                rectangle );\r
                                                                }\r
                                                        }\r