OSDN Git Service

#36057 コンフィグまわりのリファクタ(リソース不完全なので注意)
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 02.タイトル / CActEnumSongs.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Diagnostics;\r
5 using System.Runtime.InteropServices;\r
6 using System.IO;\r
7 using System.Drawing;\r
8 using System.Threading;\r
9 using System.Globalization;\r
10 using System.Runtime.Serialization.Formatters.Binary;\r
11 using SlimDX;\r
12 using SlimDX.Direct3D9;\r
13 using FDK;\r
14 using SampleFramework;\r
15 \r
16 namespace DTXMania\r
17 {\r
18         internal class CActEnumSongs : CActivity\r
19         {\r
20                 public bool bコマンドでの曲データ取得;\r
21 \r
22 \r
23                 /// <summary>\r
24                 /// Constructor\r
25                 /// </summary>\r
26                 public CActEnumSongs()\r
27                 {\r
28                         Init(false);\r
29                 }\r
30 \r
31                 public CActEnumSongs(bool _bコマンドでの曲データ取得)\r
32                 {\r
33                         Init(_bコマンドでの曲データ取得);\r
34                 }\r
35                 private void Init(bool _bコマンドでの曲データ取得)\r
36                 {\r
37                         base.b活性化してない = true;\r
38                         bコマンドでの曲データ取得 = _bコマンドでの曲データ取得;\r
39                 }\r
40 \r
41                 // CActivity 実装\r
42 \r
43                 public override void On活性化()\r
44                 {\r
45                         if (this.b活性化してる)\r
46                                 return;\r
47                         base.On活性化();\r
48 \r
49                         try\r
50                         {\r
51                                 this.ctNowEnumeratingSongs = new CCounter();  // 0, 1000, 17, CDTXMania.Instance.Timer );\r
52                                 this.ctNowEnumeratingSongs.t開始(0, 100, 17, CDTXMania.Instance.Timer);\r
53                         }\r
54                         finally\r
55                         {\r
56                         }\r
57                 }\r
58                 public override void On非活性化()\r
59                 {\r
60                         if (this.b活性化してない)\r
61                                 return;\r
62                         base.On非活性化();\r
63                         this.ctNowEnumeratingSongs = null;\r
64                 }\r
65                 public override void OnManagedリソースの作成()\r
66                 {\r
67                         if (this.b活性化してない)\r
68                                 return;\r
69                         string pathNowEnumeratingSongs = CSkin.Path(@"Graphics\ScreenTitle NowEnumeratingSongs.png");\r
70                         if (File.Exists(pathNowEnumeratingSongs))\r
71                         {\r
72                                 this.txNowEnumeratingSongs = TextureFactory.tテクスチャの生成(pathNowEnumeratingSongs, false);\r
73                         }\r
74                         else\r
75                         {\r
76                                 this.txNowEnumeratingSongs = null;\r
77                         }\r
78                         string pathDialogNowEnumeratingSongs = CSkin.Path(@"Graphics\ScreenConfig NowEnumeratingSongs.png");\r
79                         if (File.Exists(pathDialogNowEnumeratingSongs))\r
80                         {\r
81                                 this.txDialogNowEnumeratingSongs = TextureFactory.tテクスチャの生成(pathDialogNowEnumeratingSongs, false);\r
82                         }\r
83                         else\r
84                         {\r
85                                 this.txDialogNowEnumeratingSongs = null;\r
86                         }\r
87 \r
88                         try\r
89                         {\r
90                                 System.Drawing.Font ftMessage = new System.Drawing.Font("MS PGothic", 40 * 3f, FontStyle.Bold, GraphicsUnit.Pixel);\r
91                                 string[] strMessage =\r
92                                 {\r
93                                         "     曲データの一覧を\n       取得しています。\n   しばらくお待ちください。",\r
94                                         " Now enumerating songs.\n         Please wait..."\r
95                                 };\r
96                                 int ci = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
97                                 if ((strMessage != null) && (strMessage.Length > 0))\r
98                                 {\r
99                                         Bitmap image = new Bitmap(1, 1);\r
100                                         Graphics graphics = Graphics.FromImage(image);\r
101                                         SizeF ef = graphics.MeasureString(strMessage[ci], ftMessage);\r
102                                         Size size = new Size((int)Math.Ceiling((double)ef.Width), (int)Math.Ceiling((double)ef.Height));\r
103                                         graphics.Dispose();\r
104                                         image.Dispose();\r
105                                         image = new Bitmap(size.Width, size.Height);\r
106                                         graphics = Graphics.FromImage(image);\r
107                                         graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
108                                         graphics.DrawString(strMessage[ci], ftMessage, Brushes.White, (float)0f, (float)0f);\r
109                                         graphics.Dispose();\r
110                                         this.txMessage = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
111                                         this.txMessage.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f);\r
112                                         image.Dispose();\r
113                                         TextureFactory.t安全にDisposeする(ref ftMessage);\r
114                                 }\r
115                                 else\r
116                                 {\r
117                                         this.txMessage = null;\r
118                                 }\r
119                         }\r
120                         catch (CTextureCreateFailedException)\r
121                         {\r
122                                 Trace.TraceError("テクスチャの生成に失敗しました。(txMessage)");\r
123                                 this.txMessage = null;\r
124                         }\r
125 \r
126                         base.OnManagedリソースの作成();\r
127                 }\r
128                 public override void OnManagedリソースの解放()\r
129                 {\r
130                         if (this.b活性化してない)\r
131                                 return;\r
132 \r
133                         TextureFactory.t安全にDisposeする(ref this.txDialogNowEnumeratingSongs);\r
134                         TextureFactory.t安全にDisposeする(ref this.txNowEnumeratingSongs);\r
135                         TextureFactory.t安全にDisposeする(ref this.txMessage);\r
136                         base.OnManagedリソースの解放();\r
137                 }\r
138 \r
139                 public override int On進行描画()\r
140                 {\r
141                         if (this.b活性化してない)\r
142                         {\r
143                                 return 0;\r
144                         }\r
145                         this.ctNowEnumeratingSongs.t進行Loop();\r
146                         if (this.txNowEnumeratingSongs != null)\r
147                         {\r
148                                 this.txNowEnumeratingSongs.n透明度 = (int)(176.0 + 80.0 * Math.Sin((double)(2 * Math.PI * this.ctNowEnumeratingSongs.n現在の値 * 2 / 100.0)));\r
149                                 this.txNowEnumeratingSongs.t2D描画(CDTXMania.Instance.Device, 18, 7);\r
150                         }\r
151                         if (bコマンドでの曲データ取得 && this.txDialogNowEnumeratingSongs != null)\r
152                         {\r
153                                 this.txDialogNowEnumeratingSongs.t2D描画(CDTXMania.Instance.Device, 500, 300);\r
154                                 this.txMessage.t2D描画(CDTXMania.Instance.Device, 540, 320);\r
155                         }\r
156 \r
157                         return 0;\r
158                 }\r
159 \r
160 \r
161                 private CCounter ctNowEnumeratingSongs;\r
162                 private CTexture txNowEnumeratingSongs = null;\r
163                 private CTexture txDialogNowEnumeratingSongs = null;\r
164                 private CTexture txMessage;\r
165         }\r
166 }\r