OSDN Git Service

SlimDX から SharpDX へ機械的に移行。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 08.結果 / CActResultImage.cs
index e94ccd8..667b5bc 100644 (file)
@@ -4,443 +4,337 @@ using System.Text;
 using System.Diagnostics;\r
 using System.IO;\r
 using System.Drawing;\r
-using SlimDX;\r
-using SlimDX.Direct3D9;\r
+using SharpDX;\r
+using SharpDX.Direct3D9;\r
 using FDK;\r
 \r
+using Rectangle = System.Drawing.Rectangle;\r
+\r
 namespace DTXMania\r
 {\r
        internal class CActResultImage : CActivity\r
        {\r
-               // コンストラクタ\r
+               CDTX.CAVI rAVI;\r
+               CCounter ct登場用;\r
+               int n本体X;\r
+               int n本体Y;\r
+               CTexture r表示するリザルト画像;\r
+               string strAVIファイル名;\r
+               CTexture txパネル本体;\r
+               CTexture txリザルト画像;\r
+               CTexture txリザルト画像がないときの画像;\r
 \r
-               public CActResultImage()\r
+               public void tアニメを完了させる()\r
                {\r
-                       base.b活性化してない = true;\r
+                       ct登場用.n現在の値 = ct登場用.n終了値;\r
                }\r
-\r
-\r
-               // メソッド\r
-\r
-               public void tアニメを完了させる()\r
+               public CAct演奏AVI actAVI\r
                {\r
-                       this.ct登場用.n現在の値 = this.ct登場用.n終了値;\r
+                       get;\r
+                       set;\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.n本体X = 4;\r
-                       this.n本体Y = 0x3f;\r
-                       base.On活性化();\r
-               }\r
-               public override void On非活性化()\r
-               {\r
-                       if( this.ct登場用 != null )\r
-                       {\r
-                               this.ct登場用 = null;\r
-                       }\r
-                       if( this.avi != null )\r
+                       if (b活性化してない)\r
                        {\r
-                               this.avi.Dispose();\r
-                               this.avi = null;\r
+                               n本体X = 4;\r
+                               n本体Y = 0x3f;\r
+                               base.On活性化();\r
+                               actAVI.bIsPreviewMovie = true;\r
+                               actAVI.On活性化();\r
                        }\r
-                       base.On非活性化();\r
                }\r
-               public override void OnManagedリソースの作成()\r
+               public override void On非活性化()\r
                {\r
-                       if( !base.b活性化してない )\r
+                       if (b活性化してる)\r
                        {\r
-                               this.txパネル本体 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenResult resultimage panel.png" ) );\r
-                               this.txリザルト画像がないときの画像 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect preimage default.png" ) );\r
-                               this.sfリザルトAVI画像 = Surface.CreateOffscreenPlain( CDTXMania.app.Device, 0xcc, 0x10d, CDTXMania.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.SystemMemory );\r
-                               this.nAVI再生開始時刻 = -1;\r
-                               this.n前回描画したフレーム番号 = -1;\r
-                               this.b動画フレームを作成した = false;\r
-                               this.pAVIBmp = IntPtr.Zero;\r
-                               if( CDTXMania.ConfigIni.bストイックモード )\r
+                               if (ct登場用 != null)\r
                                {\r
-                                       this.r表示するリザルト画像 = this.txリザルト画像がないときの画像;\r
+                                       ct登場用 = null;\r
                                }\r
-                               else if( ( ( !this.tリザルト動画の指定があれば構築する() && !this.tリザルト画像の指定があれば構築する() ) && ( !this.tプレビュー動画の指定があれば構築する() && !this.tプレビュー画像の指定があれば構築する() ) ) && !this.t背景画像があればその一部からリザルト画像を構築する() )\r
+                               if (rAVI != null)\r
                                {\r
-                                       this.r表示するリザルト画像 = this.txリザルト画像がないときの画像;\r
+                                       rAVI.Dispose();\r
+                                       rAVI = null;\r
                                }\r
+                               base.On非活性化();\r
+                               actAVI.On非活性化();\r
+                       }\r
+               }\r
+\r
+               public override void OnManagedリソースの作成()\r
+               {\r
+                       if (b活性化してる)\r
+                       {\r
+                               txパネル本体 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult resultimage panel.png"));\r
+                               txリザルト画像がないときの画像 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect preimage default.png"));\r
                                base.OnManagedリソースの作成();\r
+                               actAVI.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if( !base.b活性化してない )\r
+                       if (b活性化してる)\r
                        {\r
-                               CDTXMania.tテクスチャの解放( ref this.txパネル本体 );\r
-                               CDTXMania.tテクスチャの解放( ref this.txリザルト画像 );\r
-                               CDTXMania.tテクスチャの解放( ref this.txリザルト画像がないときの画像 );\r
-                               if( this.sfリザルトAVI画像 != null )\r
-                               {\r
-                                       this.sfリザルトAVI画像.Dispose();\r
-                                       this.sfリザルトAVI画像 = null;\r
-                               }\r
+                               TextureFactory.tテクスチャの解放(ref txパネル本体);\r
+                               TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                               TextureFactory.tテクスチャの解放(ref txリザルト画像がないときの画像);\r
                                base.OnManagedリソースの解放();\r
+                               actAVI.OnManagedリソースの解放();\r
                        }\r
                }\r
                public override unsafe int On進行描画()\r
                {\r
-                       if( base.b活性化してない )\r
+                       if (b活性化してる)\r
                        {\r
-                               return 0;\r
-                       }\r
-                       if( base.b初めての進行描画 )\r
-                       {\r
-                               this.ct登場用 = new CCounter( 0, 100, 5, CDTXMania.Timer );\r
-                               base.b初めての進行描画 = false;\r
-                       }\r
-                       this.ct登場用.t進行();\r
-                       if( ( ( this.avi != null ) && ( this.sfリザルトAVI画像 != null ) ) && ( this.nAVI再生開始時刻 != -1 ) )\r
-                       {\r
-                               int time = (int) ( ( CDTXMania.Timer.n現在時刻 - this.nAVI再生開始時刻 ) * ( ( (double) CDTXMania.ConfigIni.n演奏速度 ) / 20.0 ) );\r
-                               int frameNoFromTime = this.avi.GetFrameNoFromTime( time );\r
-                               if( frameNoFromTime >= this.avi.GetMaxFrameCount() )\r
+                               if (b初めての進行描画)\r
                                {\r
-                                       this.nAVI再生開始時刻 = CDTXMania.Timer.n現在時刻;\r
+                                       if (CDTXMania.Instance.ConfigIni.bStoicMode)\r
+                                       {\r
+                                               r表示するリザルト画像 = txリザルト画像がないときの画像;\r
+                                       }\r
+                                       else if (!tリザルト動画の指定があれば構築する() &&\r
+                                               !tリザルト画像の指定があれば構築する() &&\r
+                                               !tプレビュー動画の指定があれば構築する() &&\r
+                                               !tプレビュー画像の指定があれば構築する() &&\r
+                                               !t背景画像があればその一部からリザルト画像を構築する())\r
+                                       {\r
+                                               r表示するリザルト画像 = txリザルト画像がないときの画像;\r
+                                       }\r
+\r
+                                       ct登場用 = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
+                                       b初めての進行描画 = false;\r
                                }\r
-                               else if( ( this.n前回描画したフレーム番号 != frameNoFromTime ) && !this.b動画フレームを作成した )\r
+                               ct登場用.t進行();\r
+                               if (ct登場用.b終了値に達した)\r
                                {\r
-                                       this.b動画フレームを作成した = true;\r
-                                       this.n前回描画したフレーム番号 = frameNoFromTime;\r
-                                       this.pAVIBmp = this.avi.GetFramePtr( frameNoFromTime );\r
+                                       n本体X = 4;\r
+                                       n本体Y = 0x3f;\r
                                }\r
-                       }\r
-                       if( this.ct登場用.b終了値に達した )\r
-                       {\r
-                               this.n本体X = 4;\r
-                               this.n本体Y = 0x3f;\r
-                       }\r
-                       else\r
-                       {\r
-                               double num3 = ( (double) this.ct登場用.n現在の値 ) / 100.0;\r
-                               double num4 = Math.Cos( ( 1.5 + ( 0.5 * num3 ) ) * Math.PI );\r
-                               this.n本体X = 4;\r
-                               this.n本体Y = 0x3f - ( (int) ( ( ( this.txパネル本体 != null ) ? ( (double) this.txパネル本体.sz画像サイズ.Height ) : ( (double) 0 ) ) * ( 1.0 - ( num4 * num4 ) ) ) );\r
-                       }\r
-                       if( this.txパネル本体 != null )\r
-                       {\r
-                               this.txパネル本体.t2D描画( CDTXMania.app.Device, this.n本体X, this.n本体Y );\r
-                       }\r
-                       int x = this.n本体X + 0x11;\r
-                       int y = this.n本体Y + 0x10;\r
-                       if( ( ( this.nAVI再生開始時刻 != -1 ) && ( this.avi != null ) ) && ( this.sfリザルトAVI画像 != null ) )\r
-                       {\r
-                               if( this.b動画フレームを作成した && ( this.pAVIBmp != IntPtr.Zero ) )\r
+                               else\r
                                {\r
-                                       DataRectangle rectangle = this.sfリザルトAVI画像.LockRectangle( LockFlags.None );\r
-                                       DataStream data = rectangle.Data;\r
-                                       int num7 = rectangle.Pitch / this.sfリザルトAVI画像.Description.Width;\r
-                                       BitmapUtil.BITMAPINFOHEADER* pBITMAPINFOHEADER = (BitmapUtil.BITMAPINFOHEADER*) this.pAVIBmp.ToPointer();\r
-                                       if( pBITMAPINFOHEADER->biBitCount == 0x18 )\r
-                                       {\r
-                                               switch( num7 )\r
-                                               {\r
-                                                       case 2:\r
-                                                               this.avi.tBitmap24ToGraphicsStreamR5G6B5( pBITMAPINFOHEADER, data, this.sfリザルトAVI画像.Description.Width, this.sfリザルトAVI画像.Description.Height );\r
-                                                               break;\r
-\r
-                                                       case 4:\r
-                                                               this.avi.tBitmap24ToGraphicsStreamX8R8G8B8( pBITMAPINFOHEADER, data, this.sfリザルトAVI画像.Description.Width, this.sfリザルトAVI画像.Description.Height );\r
-                                                               break;\r
-                                               }\r
-                                       }\r
-                                       this.sfリザルトAVI画像.UnlockRectangle();\r
-                                       this.b動画フレームを作成した = false;\r
+                                       double num3 = ((double)ct登場用.n現在の値) / 100.0;\r
+                                       double num4 = Math.Cos((1.5 + (0.5 * num3)) * Math.PI);\r
+                                       n本体X = 4;\r
+                                       n本体Y = 0x3f - ((int)(((txパネル本体 != null) ?\r
+                                               ((double)txパネル本体.sz画像サイズ.Height) : ((double)0)) * (1.0 - (num4 * num4))));\r
                                }\r
-                               using( Surface surface = CDTXMania.app.Device.GetBackBuffer( 0, 0 ) )\r
+                               if (txパネル本体 != null)\r
                                {\r
-                                       Rectangle sourceRectangle = new Rectangle( 0, 0, this.sfリザルトAVI画像.Description.Width, this.sfリザルトAVI画像.Description.Height );\r
-                                       if( y < 0 )\r
-                                       {\r
-                                               sourceRectangle.Y += -y;\r
-                                               sourceRectangle.Height -= -y;\r
-                                               y = 0;\r
-                                       }\r
-                                       if( sourceRectangle.Height > 0 )\r
-                                       {\r
-                                               CDTXMania.app.Device.UpdateSurface( this.sfリザルトAVI画像, sourceRectangle, surface, new Point( x, y ) );\r
-                                       }\r
-                                       goto Label_042F;\r
+                                       txパネル本体.t2D描画(\r
+                                               CDTXMania.Instance.Device,\r
+                                               n本体X * Scale.X,\r
+                                               n本体Y * Scale.Y\r
+                                       );\r
                                }\r
-                       }\r
-                       if( this.r表示するリザルト画像 != null )\r
-                       {\r
-                               int width = this.r表示するリザルト画像.szテクスチャサイズ.Width;\r
-                               int height = this.r表示するリザルト画像.szテクスチャサイズ.Height;\r
-                               if( width > 0xcc )\r
+                               int x = (int)((n本体X + 17) * Scale.X);\r
+                               int y = (int)((n本体Y + 16) * Scale.Y);\r
+                               if (rAVI != null)\r
                                {\r
-                                       width = 0xcc;\r
+                                       actAVI.t進行描画(x, y, 612, 605);\r
                                }\r
-                               if( height > 0x10d )\r
+                               #region [ プレビュー画像表示 ]\r
+                               else if (r表示するリザルト画像 != null)\r
                                {\r
-                                       height = 0x10d;\r
-                               }\r
-                               x += ( 0xcc - width ) / 2;\r
-                               y += ( 0x10d - height ) / 2;\r
-                               this.r表示するリザルト画像.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, width, height ) );\r
-                       }\r
-               Label_042F:\r
-                       if( ( CDTXMania.DTX.GENRE != null ) && ( CDTXMania.DTX.GENRE.Length > 0 ) )\r
-                       {\r
-                               CDTXMania.act文字コンソール.tPrint( this.n本体X + 0x12, this.n本体Y - 1, C文字コンソール.Eフォント種別.赤細, CDTXMania.DTX.GENRE );\r
-                       }\r
-                       if( !this.ct登場用.b終了値に達した )\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       return 1;\r
-               }\r
+                                       CPreviewMagnifier cmg = new CPreviewMagnifier(CPreviewMagnifier.EPreviewType.MusicSelect);\r
+                                       cmg.GetMagnifier(r表示するリザルト画像.sz画像サイズ.Width, r表示するリザルト画像.sz画像サイズ.Height, 1.0f, 1.0f);\r
 \r
+                                       r表示するリザルト画像.vc拡大縮小倍率.X = cmg.magX;\r
+                                       r表示するリザルト画像.vc拡大縮小倍率.Y = cmg.magY;\r
+                                       r表示するリザルト画像.vc拡大縮小倍率.Z = 1f;\r
+                                       x += (int)((612 - cmg.width * cmg.magX) / 2);\r
+                                       y += (int)((605 - cmg.height * cmg.magY) / 2);\r
+                                       r表示するリザルト画像.t2D描画(CDTXMania.Instance.Device, x, y);\r
 \r
-               // その他\r
 \r
-               #region [ private ]\r
-               //-----------------\r
-               private CAvi avi;\r
-               private bool b動画フレームを作成した;\r
-               private CCounter ct登場用;\r
-               private long nAVI再生開始時刻;\r
-               private int n前回描画したフレーム番号;\r
-               private int n本体X;\r
-               private int n本体Y;\r
-               private IntPtr pAVIBmp;\r
-               private CTexture r表示するリザルト画像;\r
-               private Surface sfリザルトAVI画像;\r
-               private string strAVIファイル名;\r
-               private CTexture txパネル本体;\r
-               private CTexture txリザルト画像;\r
-               private CTexture txリザルト画像がないときの画像;\r
+                               }\r
+                               #endregion\r
+                               if ((CDTXMania.Instance.DTX.GENRE != null) && (CDTXMania.Instance.DTX.GENRE.Length > 0))\r
+                               {\r
+                                       CDTXMania.Instance.act文字コンソール.tPrint(\r
+                                               (int)((n本体X + 0x12) * Scale.X),\r
+                                               (int)((n本体Y - 1) * Scale.Y),\r
+                                               C文字コンソール.Eフォント種別.赤細,\r
+                                               CDTXMania.Instance.DTX.GENRE\r
+                                       );\r
+                               }\r
+                               if (!ct登場用.b終了値に達した)\r
+                               {\r
+                                       return 0;\r
+                               }\r
+                               return 1;\r
+                       }\r
+                       return 0;\r
+               }\r
 \r
                private bool t背景画像があればその一部からリザルト画像を構築する()\r
                {\r
-                       string bACKGROUND;\r
-                       if( ( CDTXMania.ConfigIni.bギタレボモード && ( CDTXMania.DTX.BACKGROUND_GR != null ) ) && ( CDTXMania.DTX.BACKGROUND_GR.Length > 0 ) )\r
-                       {\r
-                               bACKGROUND = CDTXMania.DTX.BACKGROUND_GR;\r
-                       }\r
-                       else\r
+                       string strBackground = CDTXMania.Instance.DTX.BACKGROUND;\r
+                       if (string.IsNullOrEmpty(strBackground))\r
                        {\r
-                               bACKGROUND = CDTXMania.DTX.BACKGROUND;\r
+                               strBackground = CDTXMania.Instance.DTX.BACKGROUND_GR;\r
                        }\r
-                       if( string.IsNullOrEmpty( bACKGROUND ) )\r
+                       if (string.IsNullOrEmpty(strBackground))\r
                        {\r
                                return false;\r
                        }\r
-                       CDTXMania.tテクスチャの解放( ref this.txリザルト画像 );\r
-                       this.r表示するリザルト画像 = null;\r
-                       bACKGROUND = CDTXMania.DTX.strフォルダ名 + bACKGROUND;\r
-                       Bitmap image = null;\r
-                       Bitmap bitmap2 = null;\r
-                       Bitmap bitmap3 = null;\r
-                       try\r
+                       TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                       r表示するリザルト画像 = null;\r
+                       strBackground = CDTXMania.Instance.DTX.strフォルダ名 + strBackground;\r
+                       if (!File.Exists(strBackground))\r
                        {\r
-                               image = new Bitmap( bACKGROUND );\r
-                               bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height);\r
-                               Graphics graphics = Graphics.FromImage( bitmap2 );\r
-                               int x = 0;\r
-                               for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height)\r
-                               {\r
-                                       for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width)\r
-                                       {\r
-                                               graphics.DrawImage( image, x, i, image.Width, image.Height );\r
-                                       }\r
-                               }\r
-                               graphics.Dispose();\r
-                               bitmap3 = new Bitmap( 0xcc, 0x10d );\r
-                               graphics = Graphics.FromImage( bitmap3 );\r
-                               graphics.DrawImage( bitmap2, 5, 5, new Rectangle( 0x157, 0x6d, 0xcc, 0x10d ), GraphicsUnit.Pixel );\r
-                               graphics.Dispose();\r
-                               this.txリザルト画像 = new CTexture( CDTXMania.app.Device, bitmap3, CDTXMania.TextureFormat );\r
-                               this.r表示するリザルト画像 = this.txリザルト画像;\r
-                       }\r
-                       catch\r
-                       {\r
-                               Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { bACKGROUND } );\r
-                               this.txリザルト画像 = null;\r
                                return false;\r
                        }\r
-                       finally\r
+                       using (Bitmap image = new Bitmap(strBackground))\r
                        {\r
-                               if( image != null )\r
-                               {\r
-                                       image.Dispose();\r
-                               }\r
-                               if( bitmap2 != null )\r
-                               {\r
-                                       bitmap2.Dispose();\r
-                               }\r
-                               if( bitmap3 != null )\r
+                               using (Bitmap bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height))\r
                                {\r
-                                       bitmap3.Dispose();\r
-                               }\r
-                       }\r
-                       return true;\r
-               }\r
-               private unsafe void tサーフェイスをクリアする( Surface sf )\r
-               {\r
-                       DataRectangle rectangle = sf.LockRectangle( LockFlags.None );\r
-                       DataStream data = rectangle.Data;\r
-                       switch( ( rectangle.Pitch / sf.Description.Width ) )\r
-                       {\r
-                               case 4:\r
+                                       using (Graphics graphics = Graphics.FromImage(bitmap2))\r
                                        {\r
-                                               uint* numPtr = (uint*) data.DataPointer.ToPointer();\r
-                                               for( int i = 0; i < sf.Description.Height; i++ )\r
+                                               int x = 0;\r
+                                               for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height)\r
                                                {\r
-                                                       for( int j = 0; j < sf.Description.Width; j++ )\r
+                                                       for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width)\r
                                                        {\r
-                                                               ( numPtr + ( i * sf.Description.Width ) )[ j ] = 0;\r
+                                                               graphics.DrawImage(image, x, i, image.Width, image.Height);\r
                                                        }\r
                                                }\r
-                                               break;\r
                                        }\r
-                               case 2:\r
+                                       using (Bitmap bitmap3 = new Bitmap(0xcc, 0x10d))\r
                                        {\r
-                                               ushort* numPtr2 = (ushort*) data.DataPointer.ToPointer();\r
-                                               for( int k = 0; k < sf.Description.Height; k++ )\r
+                                               using (Graphics graphics = Graphics.FromImage(bitmap3))\r
                                                {\r
-                                                       for( int m = 0; m < sf.Description.Width; m++ )\r
-                                                       {\r
-                                                               ( numPtr2 + ( k * sf.Description.Width ) )[ m ] = 0;\r
-                                                       }\r
+                                                       graphics.DrawImage(bitmap2, 5, 5, new Rectangle(0x157, 0x6d, 0xcc, 0x10d), GraphicsUnit.Pixel);\r
                                                }\r
-                                               break;\r
+                                               txリザルト画像 = new CTexture(CDTXMania.Instance.Device, bitmap3, CDTXMania.Instance.TextureFormat);\r
                                        }\r
+                               }\r
+                               r表示するリザルト画像 = txリザルト画像;\r
                        }\r
-                       sf.UnlockRectangle();\r
+                       return true;\r
                }\r
+\r
                private bool tプレビュー画像の指定があれば構築する()\r
                {\r
-                       if( string.IsNullOrEmpty( CDTXMania.DTX.PREIMAGE ) )\r
+                       if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREIMAGE))\r
                        {\r
                                return false;\r
                        }\r
-                       CDTXMania.tテクスチャの解放( ref this.txリザルト画像 );\r
-                       this.r表示するリザルト画像 = null;\r
-                       string path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.PREIMAGE;\r
-                       if( !File.Exists( path ) )\r
+                       TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                       r表示するリザルト画像 = null;\r
+                       string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREIMAGE;\r
+                       if (!File.Exists(path))\r
                        {\r
-                               Trace.TraceWarning( "ファイルが存在しません。({0})", new object[] { path } );\r
+                               Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });\r
                                return false;\r
                        }\r
-                       this.txリザルト画像 = CDTXMania.tテクスチャの生成( path );\r
-                       this.r表示するリザルト画像 = this.txリザルト画像;\r
-                       return ( this.r表示するリザルト画像 != null );\r
+                       txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
+                       r表示するリザルト画像 = txリザルト画像;\r
+                       return (r表示するリザルト画像 != null);\r
                }\r
+\r
                private bool tプレビュー動画の指定があれば構築する()\r
                {\r
-                       if( !CDTXMania.ConfigIni.bAVI有効 )\r
+                       if (!CDTXMania.Instance.ConfigIni.bAVI)\r
                        {\r
                                return false;\r
                        }\r
-                       if( string.IsNullOrEmpty( CDTXMania.DTX.PREMOVIE ) )\r
+                       actAVI.Stop();\r
+                       if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREMOVIE))\r
                        {\r
                                return false;\r
                        }\r
-                       this.strAVIファイル名 = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.PREMOVIE;\r
-                       if( !File.Exists( this.strAVIファイル名 ) )\r
+                       strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREMOVIE;\r
+                       if (!File.Exists(this.strAVIファイル名))\r
                        {\r
-                               Trace.TraceWarning( "ファイルが存在しません。({0})", new object[] { this.strAVIファイル名 } );\r
+                               Trace.TraceWarning("プレビュー動画のファイルが存在しません。({0})", strAVIファイル名);\r
                                return false;\r
                        }\r
-                       if( this.avi != null )\r
+                       if (rAVI != null)\r
                        {\r
-                               this.avi.Dispose();\r
-                               this.avi = null;\r
+                               rAVI.Dispose();\r
+                               rAVI = null;\r
                        }\r
                        try\r
                        {\r
-                               this.avi = new CAvi( this.strAVIファイル名 );\r
-                               this.nAVI再生開始時刻 = CDTXMania.Timer.n現在時刻;\r
-                               this.n前回描画したフレーム番号 = -1;\r
-                               this.b動画フレームを作成した = false;\r
-                               this.tサーフェイスをクリアする( this.sfリザルトAVI画像 );\r
-                               Trace.TraceInformation( "動画を生成しました。({0})", new object[] { this.strAVIファイル名 } );\r
+                               rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
+                               rAVI.OnDeviceCreated();\r
+                               actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
                        }\r
                        catch\r
                        {\r
-                               Trace.TraceError( "動画の生成に失敗しました。({0})", new object[] { this.strAVIファイル名 } );\r
-                               this.avi = null;\r
-                               this.nAVI再生開始時刻 = -1;\r
+                               Trace.TraceError("プレビュー動画の生成に失敗しました。({0})", strAVIファイル名);\r
+                               rAVI = null;\r
                        }\r
                        return true;\r
                }\r
+\r
                private bool tリザルト画像の指定があれば構築する()\r
                {\r
-                       int rank = CScoreIni.t総合ランク値を計算して返す( CDTXMania.stage結果.st演奏記録.Drums, CDTXMania.stage結果.st演奏記録.Guitar, CDTXMania.stage結果.st演奏記録.Bass );\r
-                       if (rank == 99) // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                       CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);\r
+                       if (rank == CScoreIni.ERANK.UNKNOWN)  // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
                        {\r
-                               rank = 6;\r
+                               rank = CScoreIni.ERANK.E;\r
                        }\r
-                       if (string.IsNullOrEmpty(CDTXMania.DTX.RESULTIMAGE[rank]))\r
+                       if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.RESULTIMAGE[(int)rank]))\r
                        {\r
                                return false;\r
                        }\r
-                       CDTXMania.tテクスチャの解放( ref this.txリザルト画像 );\r
-                       this.r表示するリザルト画像 = null;\r
-                       string path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.RESULTIMAGE[ rank ];\r
-                       if( !File.Exists( path ) )\r
+                       TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                       r表示するリザルト画像 = null;\r
+                       string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTIMAGE[(int)rank];\r
+                       if (!File.Exists(path))\r
                        {\r
-                               Trace.TraceWarning( "ファイルが存在しません。({0})", new object[] { path } );\r
+                               Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });\r
                                return false;\r
                        }\r
-                       this.txリザルト画像 = CDTXMania.tテクスチャの生成( path );\r
-                       this.r表示するリザルト画像 = this.txリザルト画像;\r
-                       return ( this.r表示するリザルト画像 != null );\r
+                       txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
+                       r表示するリザルト画像 = this.txリザルト画像;\r
+                       return (this.r表示するリザルト画像 != null);\r
                }\r
+\r
                private bool tリザルト動画の指定があれば構築する()\r
                {\r
-                       if( !CDTXMania.ConfigIni.bAVI有効 )\r
+                       if (!CDTXMania.Instance.ConfigIni.bAVI)\r
                        {\r
                                return false;\r
                        }\r
-                       int rank = CScoreIni.t総合ランク値を計算して返す( CDTXMania.stage結果.st演奏記録.Drums, CDTXMania.stage結果.st演奏記録.Guitar, CDTXMania.stage結果.st演奏記録.Bass );\r
-                       if (rank == 99) // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                       CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);\r
+                       // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                       if (rank == CScoreIni.ERANK.UNKNOWN)\r
                        {\r
-                               rank = 6;\r
+                               rank = CScoreIni.ERANK.E;\r
                        }\r
 \r
-                       if( string.IsNullOrEmpty( CDTXMania.DTX.RESULTMOVIE[ rank ] ) )\r
+                       if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank]))\r
                        {\r
                                return false;\r
                        }\r
-                       this.strAVIファイル名 = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.RESULTMOVIE[ rank ];\r
-                       if( !File.Exists( this.strAVIファイル名 ) )\r
+                       strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank];\r
+                       if (!File.Exists(this.strAVIファイル名))\r
                        {\r
-                               Trace.TraceWarning( "ファイルが存在しません。({0})", new object[] { this.strAVIファイル名 } );\r
+                               Trace.TraceWarning("リザルト動画のファイルが存在しません。({0})", this.strAVIファイル名);\r
                                return false;\r
                        }\r
-                       if( this.avi != null )\r
+                       if (rAVI != null)\r
                        {\r
-                               this.avi.Dispose();\r
-                               this.avi = null;\r
+                               rAVI.Dispose();\r
+                               rAVI = null;\r
                        }\r
                        try\r
                        {\r
-                               this.avi = new CAvi( this.strAVIファイル名 );\r
-                               this.nAVI再生開始時刻 = CDTXMania.Timer.n現在時刻;\r
-                               this.n前回描画したフレーム番号 = -1;\r
-                               this.b動画フレームを作成した = false;\r
-                               this.tサーフェイスをクリアする( this.sfリザルトAVI画像 );\r
-                               Trace.TraceInformation( "動画を生成しました。({0})", new object[] { this.strAVIファイル名 } );\r
+                               rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
+                               rAVI.OnDeviceCreated();\r
+                               actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
                        }\r
                        catch\r
                        {\r
-                               Trace.TraceError( "動画の生成に失敗しました。({0})", new object[] { this.strAVIファイル名 } );\r
-                               this.avi = null;\r
-                               this.nAVI再生開始時刻 = -1;\r
+                               Trace.TraceError("リザルト動画の生成に失敗しました。({0})", this.strAVIファイル名);\r
+                               rAVI = null;\r
                        }\r
                        return true;\r
                }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r