OSDN Git Service

#36043 rev.920 で手違いが起きたため、一度 rev.919 に戻し、ファイルを再修正。Ech定義の使用を CChip のプロパティを使うよう一部変更。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 08.結果 / CActResultSongBar.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Drawing;\r
5 using System.Diagnostics;\r
6 using SlimDX;\r
7 using FDK;\r
8 \r
9 namespace DTXMania\r
10 {\r
11         internal class CActResultSongBar : CActivity\r
12         {\r
13                 // コンストラクタ\r
14 \r
15                 public CActResultSongBar()\r
16                 {\r
17                         base.b活性化してない = true;\r
18                 }\r
19 \r
20 \r
21                 // メソッド\r
22 \r
23                 public void tアニメを完了させる()\r
24                 {\r
25                         this.ct登場用.n現在の値 = this.ct登場用.n終了値;\r
26                 }\r
27 \r
28 \r
29                 // CActivity 実装\r
30 \r
31                 public override void On活性化()\r
32                 {\r
33                         this.n本体X = 0;\r
34                         this.n本体Y = 0x18b;\r
35                         this.ft曲名用フォント = new Font( "MS PGothic", 44f * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel );\r
36                         base.On活性化();\r
37                 }\r
38                 public override void On非活性化()\r
39                 {\r
40                         if( this.ft曲名用フォント != null )\r
41                         {\r
42                                 this.ft曲名用フォント.Dispose();\r
43                                 this.ft曲名用フォント = null;\r
44                         }\r
45                         if( this.ct登場用 != null )\r
46                         {\r
47                                 this.ct登場用 = null;\r
48                         }\r
49                         base.On非活性化();\r
50                 }\r
51                 public override void OnManagedリソースの作成()\r
52                 {\r
53                         if( !base.b活性化してない )\r
54                         {\r
55                                 this.txバー = TextureFactory.tテクスチャの生成Af( CSkin.Path( @"Graphics\ScreenResult song bar.png" ), false );\r
56                                 try\r
57                                 {\r
58                                         Bitmap image = new Bitmap( (int)(0x3a8 * Scale.X), (int)(0x36 * Scale.Y) );\r
59                                         Graphics graphics = Graphics.FromImage( image );\r
60                                         graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
61                                         graphics.DrawString( CDTXMania.Instance.DTX.TITLE, this.ft曲名用フォント, Brushes.White, ( float ) 8f * Scale.X, ( float ) 0f );\r
62                                         this.tx曲名 = new CTexture( CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat );\r
63                                         this.tx曲名.vc拡大縮小倍率 = new Vector3( 0.5f, 0.5f, 1f );\r
64                                         graphics.Dispose();\r
65                                         image.Dispose();\r
66                                 }\r
67                                 catch( CTextureCreateFailedException )\r
68                                 {\r
69                                         Trace.TraceError( "曲名テクスチャの生成に失敗しました。" );\r
70                                         this.tx曲名 = null;\r
71                                 }\r
72                                 base.OnManagedリソースの作成();\r
73                         }\r
74                 }\r
75                 public override void OnManagedリソースの解放()\r
76                 {\r
77                         if( !base.b活性化してない )\r
78                         {\r
79                                 TextureFactory.tテクスチャの解放( ref this.txバー );\r
80                                 TextureFactory.tテクスチャの解放( ref this.tx曲名 );\r
81                                 base.OnManagedリソースの解放();\r
82                         }\r
83                 }\r
84                 public override int On進行描画()\r
85                 {\r
86                         if( base.b活性化してない )\r
87                         {\r
88                                 return 0;\r
89                         }\r
90                         if( base.b初めての進行描画 )\r
91                         {\r
92                                 this.ct登場用 = new CCounter( 0, 270, 4, CDTXMania.Instance.Timer );\r
93                                 base.b初めての進行描画 = false;\r
94                         }\r
95                         this.ct登場用.t進行();\r
96                         int num = 0x1d4;\r
97                         int num2 = num - 0x40;\r
98                         if( this.ct登場用.b進行中 )\r
99                         {\r
100                                 if( this.ct登場用.n現在の値 <= 100 )\r
101                                 {\r
102                                         double num3 = 1.0 - ( ( (double) this.ct登場用.n現在の値 ) / 100.0 );\r
103                                         this.n本体X = -( (int) ( num * Math.Sin( Math.PI / 2 * num3 ) ) );\r
104                                         this.n本体Y = 0x18b;\r
105                                 }\r
106                                 else if( this.ct登場用.n現在の値 <= 200 )\r
107                                 {\r
108                                         double num4 = ( (double) ( this.ct登場用.n現在の値 - 100 ) ) / 100.0;\r
109                                         this.n本体X = -( (int) ( ( ( (double) num ) / 6.0 ) * Math.Sin( Math.PI * num4 ) ) );\r
110                                         this.n本体Y = 0x18b;\r
111                                 }\r
112                                 else if( this.ct登場用.n現在の値 <= 270 )\r
113                                 {\r
114                                         double num5 = ( (double) ( this.ct登場用.n現在の値 - 200 ) ) / 70.0;\r
115                                         this.n本体X = -( (int) ( ( ( (double) num ) / 18.0 ) * Math.Sin( Math.PI * num5 ) ) );\r
116                                         this.n本体Y = 0x18b;\r
117                                 }\r
118                         }\r
119                         else\r
120                         {\r
121                                 this.n本体X = 0;\r
122                                 this.n本体Y = 0x18b;\r
123                         }\r
124                         int num6 = this.n本体X;\r
125                         int y = this.n本体Y;\r
126                         int num8 = 0;\r
127                         while( num8 < num2 )\r
128                         {\r
129                                 Rectangle rectangle = new Rectangle( 0, 0, 0x40, 0x40 );\r
130                                 if( ( num8 + rectangle.Width ) >= num2 )\r
131                                 {\r
132                                         rectangle.Width -= ( num8 + rectangle.Width ) - num2;\r
133                                 }\r
134                                 if( this.txバー != null )\r
135                                 {\r
136                                         Rectangle rectangle1 = rectangle;\r
137                                         rectangle1.X = (int) ( rectangle1.X * Scale.X );\r
138                                         rectangle1.Y = (int) ( rectangle1.Y * Scale.Y );\r
139                                         rectangle1.Width = (int) ( rectangle1.Width * Scale.X );\r
140                                         rectangle1.Height = (int) ( rectangle1.Height * Scale.Y );\r
141                                         this.txバー.t2D描画(\r
142                                                 CDTXMania.Instance.Device,\r
143                                                 (num6 + num8) * Scale.X,\r
144                                                 y * Scale.Y,\r
145                                                 rectangle1\r
146                                         );\r
147                                 }\r
148                                 num8 += rectangle.Width;\r
149                         }\r
150                         if( this.txバー != null )\r
151                         {\r
152                                 this.txバー.t2D描画(\r
153                                         CDTXMania.Instance.Device,\r
154                                         (num6 + num8) * Scale.X,\r
155                                         y * Scale.Y,\r
156                                         new Rectangle(\r
157                                                 (int)(0x40 * Scale.X),\r
158                                                 0,\r
159                                                 (int)(0x40 * Scale.X),\r
160                                                 (int)(0x40 * Scale.Y)\r
161                                                 )\r
162                                         );\r
163                         }\r
164                         if( this.tx曲名 != null )\r
165                         {\r
166                                 this.tx曲名.t2D描画(\r
167                                         CDTXMania.Instance.Device,\r
168                                         this.n本体X * Scale.X,\r
169                                         (this.n本体Y + 20) * Scale.Y\r
170                                 );\r
171                         }\r
172                         if( !this.ct登場用.b終了値に達した )\r
173                         {\r
174                                 return 0;\r
175                         }\r
176                         return 1;\r
177                 }\r
178 \r
179 \r
180                 // その他\r
181 \r
182                 #region [ private ]\r
183                 //-----------------\r
184                 private CCounter ct登場用;\r
185                 private Font ft曲名用フォント;\r
186                 private int n本体X;\r
187                 private int n本体Y;\r
188                 private CTextureAf txバー;\r
189                 private CTexture tx曲名;\r
190                 //-----------------\r
191                 #endregion\r
192         }\r
193 }\r