OSDN Git Service

SlimDX から SharpDX へ機械的に移行。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 02.タイトル / CActEnumSongs.cs
index d2873c0..a069726 100644 (file)
@@ -4,38 +4,52 @@ using System.Text;
 using System.Diagnostics;\r
 using System.Runtime.InteropServices;\r
 using System.IO;\r
+using System.Drawing;\r
 using System.Threading;\r
+using System.Globalization;\r
 using System.Runtime.Serialization.Formatters.Binary;\r
-using SlimDX;\r
-using SlimDX.Direct3D9;\r
+using SharpDX;\r
+using SharpDX.Direct3D9;\r
 using FDK;\r
 using SampleFramework;\r
 \r
 namespace DTXMania\r
 {\r
-       internal class CActEnumSongs :  CActivity\r
+       internal class CActEnumSongs : CActivity\r
        {\r
+               public bool bコマンドでの曲データ取得;\r
+\r
 \r
                /// <summary>\r
                /// Constructor\r
                /// </summary>\r
                public CActEnumSongs()\r
                {\r
+                       Init(false);\r
+               }\r
+\r
+               public CActEnumSongs(bool _bコマンドでの曲データ取得)\r
+               {\r
+                       Init(_bコマンドでの曲データ取得);\r
+               }\r
+               private void Init(bool _bコマンドでの曲データ取得)\r
+               {\r
                        base.b活性化してない = true;\r
+                       bコマンドでの曲データ取得 = _bコマンドでの曲データ取得;\r
                }\r
 \r
                // CActivity 実装\r
 \r
                public override void On活性化()\r
                {\r
-                       if ( this.b活性化してる )\r
+                       if (this.b活性化してる)\r
                                return;\r
                        base.On活性化();\r
 \r
                        try\r
                        {\r
-                               this.ctNowEnumeratingSongs = new CCounter();    // 0, 1000, 17, CDTXMania.Timer );\r
-                               this.ctNowEnumeratingSongs.t開始( 0, 100, 17, CDTXMania.Timer );\r
+                               this.ctNowEnumeratingSongs = new CCounter();  // 0, 1000, 17, CDTXMania.Instance.Timer );\r
+                               this.ctNowEnumeratingSongs.t開始(0, 100, 17, CDTXMania.Instance.Timer);\r
                        }\r
                        finally\r
                        {\r
@@ -43,39 +57,94 @@ namespace DTXMania
                }\r
                public override void On非活性化()\r
                {\r
-                       if ( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                                return;\r
                        base.On非活性化();\r
                        this.ctNowEnumeratingSongs = null;\r
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if ( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                                return;\r
-                       this.txNowEnumeratingSongs = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenTitle NowEnumeratingSongs.png" ), false );\r
+                       string pathNowEnumeratingSongs = CSkin.Path(@"Graphics\ScreenTitle NowEnumeratingSongs.png");\r
+                       if (File.Exists(pathNowEnumeratingSongs))\r
+                       {\r
+                               this.txNowEnumeratingSongs = TextureFactory.tテクスチャの生成(pathNowEnumeratingSongs, false);\r
+                       }\r
+                       else\r
+                       {\r
+                               this.txNowEnumeratingSongs = null;\r
+                       }\r
+                       string pathDialogNowEnumeratingSongs = CSkin.Path(@"Graphics\ScreenConfig NowEnumeratingSongs.png");\r
+                       if (File.Exists(pathDialogNowEnumeratingSongs))\r
+                       {\r
+                               this.txDialogNowEnumeratingSongs = TextureFactory.tテクスチャの生成(pathDialogNowEnumeratingSongs, false);\r
+                       }\r
+                       else\r
+                       {\r
+                               this.txDialogNowEnumeratingSongs = null;\r
+                       }\r
+                       try\r
+                       {\r
+                               System.Drawing.Font ftMessage = new System.Drawing.Font( @"MS PGothic", 40.0f, FontStyle.Bold, GraphicsUnit.Pixel );\r
+                               string strMessage = CDTXMania.Instance.Resources.Explanation("strEnumeratingSongs");\r
+                               if ( ( strMessage != null ) && ( strMessage.Length > 0 ) )\r
+                               {\r
+                                       Bitmap image = new Bitmap(1, 1);\r
+                                       Graphics graphics = Graphics.FromImage(image);\r
+                                       SizeF ef = graphics.MeasureString(strMessage, ftMessage);\r
+                                       Size size = new Size( (int) Math.Ceiling( (double) ef.Width ), (int) Math.Ceiling( (double) ef.Height ) );\r
+                                       graphics.Dispose();\r
+                                       image.Dispose();\r
+                                       image = new Bitmap(size.Width, size.Height);\r
+                                       graphics = Graphics.FromImage(image);\r
+                                       graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
+                                       graphics.DrawString(strMessage, ftMessage, Brushes.White, (float) 0f, (float) 0f);\r
+                                       graphics.Dispose();\r
+                                       this.txMessage = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
+                                       image.Dispose();\r
+                                       TextureFactory.t安全にDisposeする(ref ftMessage);\r
+                               }\r
+                               else\r
+                               {\r
+                                       this.txMessage = null;\r
+                               }\r
+                       }\r
+                       catch (CTextureCreateFailedException)\r
+                       {\r
+                               Trace.TraceError("テクスチャの生成に失敗しました。(txMessage)");\r
+                               this.txMessage = null;\r
+                       }\r
+\r
                        base.OnManagedリソースの作成();\r
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if ( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                                return;\r
 \r
-                       CDTXMania.t安全にDisposeする( ref this.txNowEnumeratingSongs );\r
+                       TextureFactory.t安全にDisposeする(ref this.txDialogNowEnumeratingSongs);\r
+                       TextureFactory.t安全にDisposeする(ref this.txNowEnumeratingSongs);\r
+                       TextureFactory.t安全にDisposeする(ref this.txMessage);\r
                        base.OnManagedリソースの解放();\r
                }\r
 \r
                public override int On進行描画()\r
                {\r
-                       if ( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                        {\r
                                return 0;\r
                        }\r
                        this.ctNowEnumeratingSongs.t進行Loop();\r
-                       if ( this.txNowEnumeratingSongs != null )\r
+                       if (this.txNowEnumeratingSongs != null)\r
+                       {\r
+                               this.txNowEnumeratingSongs.n透明度 = (int)(176.0 + 80.0 * Math.Sin((double)(2 * Math.PI * this.ctNowEnumeratingSongs.n現在の値 * 2 / 100.0)));\r
+                               this.txNowEnumeratingSongs.t2D描画(CDTXMania.Instance.Device, 18, 7);\r
+                       }\r
+                       if (bコマンドでの曲データ取得 && this.txDialogNowEnumeratingSongs != null)\r
                        {\r
-                               // this.txNowEnumeratingSongs.n透明度 = (int) ( 255.0 * ( 1.0 - ( ( (double) this.ctNowEnumeratingSongs.n現在の値 ) / 100.0 ) ) );\r
-                               this.txNowEnumeratingSongs.n透明度 = (int) ( 128.0 + 127.0 * Math.Sin( (double) (2 * Math.PI * this.ctNowEnumeratingSongs.n現在の値 / 100.0 ) ) );\r
-                               this.txNowEnumeratingSongs.t2D描画( CDTXMania.app.Device, 0, 0 );\r
+                               this.txDialogNowEnumeratingSongs.t2D描画(CDTXMania.Instance.Device, 500, 300);\r
+                               this.txMessage.t2D描画(CDTXMania.Instance.Device, 540, 320);\r
                        }\r
 \r
                        return 0;\r
@@ -84,5 +153,7 @@ namespace DTXMania
 \r
                private CCounter ctNowEnumeratingSongs;\r
                private CTexture txNowEnumeratingSongs = null;\r
+               private CTexture txDialogNowEnumeratingSongs = null;\r
+               private CTexture txMessage;\r
        }\r
 }\r