OSDN Git Service

#36043 CDTXMania 内の app 以外の static メンバをインスタンスメンバにし、appを介してアクセスするように変更。CChipのメンバの多くをpr...
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ギター画面 / CAct演奏Guitarゲージ.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Drawing;\r
5 using FDK;\r
6 \r
7 namespace DTXMania\r
8 {\r
9         internal class CAct演奏Guitarゲージ : CAct演奏ゲージ共通\r
10         {\r
11                 // プロパティ\r
12 \r
13 //              public STDGBVALUE<double> db現在のゲージ値;\r
14 \r
15 \r
16                 // コンストラクタ\r
17 \r
18                 public CAct演奏Guitarゲージ()\r
19                 {\r
20                         base.b活性化してない = true;\r
21                 }\r
22 \r
23 \r
24                 // CActivity 実装\r
25 \r
26                 public override void On活性化()\r
27                 {\r
28                         // CAct演奏ゲージ共通.Init()に移動\r
29 //                      this.db現在のゲージ値.Guitar = ( CDTXMania.app.ConfigIni.nRisky > 0 ) ? 1.0 : 0.66666666666666663;\r
30 //                      this.db現在のゲージ値.Bass   = ( CDTXMania.app.ConfigIni.nRisky > 0 ) ? 1.0 : 0.66666666666666663;\r
31                         base.On活性化();\r
32                 }\r
33                 public override void On非活性化()\r
34                 {\r
35                         this.ct本体移動 = null;\r
36                         this.ct本体振動 = null;\r
37                         base.On非活性化();\r
38                 }\r
39                 public override void OnManagedリソースの作成()\r
40                 {\r
41                         if( !base.b活性化してない )\r
42                         {\r
43                                 this.txゲージ = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayGuitar gauge.png" ) );\r
44                                 base.OnManagedリソースの作成();\r
45                         }\r
46                 }\r
47                 public override void OnManagedリソースの解放()\r
48                 {\r
49                         if( !base.b活性化してない )\r
50                         {\r
51                                 TextureFactory.tテクスチャの解放( ref this.txゲージ );\r
52                                 base.OnManagedリソースの解放();\r
53                         }\r
54                 }\r
55                 public override int On進行描画()\r
56                 {\r
57                         if( !base.b活性化してない )\r
58                         {\r
59                                 int num;\r
60                                 int num9;\r
61                                 if( base.b初めての進行描画 )\r
62                                 {\r
63                                         this.ct本体移動 = new CCounter( 0, 0x1a, 20, CDTXMania.app.Timer );\r
64                                         this.ct本体振動 = new CCounter( 0, 360, 4, CDTXMania.app.Timer );\r
65                                         base.b初めての進行描画 = false;\r
66                                 }\r
67                                 this.ct本体移動.t進行Loop();\r
68                                 this.ct本体振動.t進行Loop();\r
69 \r
70                                 #region [ ギターのゲージ ]\r
71                                 if ( this.db現在のゲージ値.Guitar == 1.0 )       // ギターのゲージ\r
72                                 {\r
73                                         num = (int) ( 128.0 * this.db現在のゲージ値.Guitar );\r
74                                 }\r
75                                 else\r
76                                 {\r
77                                         num = (int) ( ( 128.0 * this.db現在のゲージ値.Guitar ) + ( 2.0 * Math.Sin( Math.PI * 2 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) );\r
78                                 }\r
79                                 if( num > 0 )\r
80                                 {\r
81                                         Rectangle rectangle;\r
82                                         int num2 = 0x1a - this.ct本体移動.n現在の値;\r
83                                         int x = 0xb2 - num2;\r
84                                         int num4 = num + num2;\r
85                                         while( num4 > 0 )\r
86                                         {\r
87                                                 if( this.db現在のゲージ値.Guitar == 1.0 )\r
88                                                 {\r
89                                                         rectangle = new Rectangle( 0x1b, 0, 0x1b, 0x10 );\r
90                                                 }\r
91                                                 else\r
92                                                 {\r
93                                                         rectangle = new Rectangle( 0, 0, 0x1b, 0x10 );\r
94                                                 }\r
95                                                 if( x < 0xb2 )\r
96                                                 {\r
97                                                         int num5 = 0xb2 - x;\r
98                                                         rectangle.X += num5;\r
99                                                         rectangle.Width -= num5;\r
100                                                         x += num5;\r
101                                                 }\r
102                                                 if( ( x + rectangle.Width ) > ( 0xb2 + num ) )\r
103                                                 {\r
104                                                         int num6 = ( x + rectangle.Width ) - ( 0xb2 + num );\r
105                                                         rectangle.Width -= num6;\r
106                                                 }\r
107                                                 if( rectangle.Left >= rectangle.Right )\r
108                                                 {\r
109                                                         break;\r
110                                                 }\r
111                                                 if( this.txゲージ != null )\r
112                                                 {\r
113                                                         Rectangle rectangle1 = rectangle;\r
114                                                         rectangle1.X = (int) ( rectangle1.X * Scale.X );\r
115                                                         rectangle1.Y = (int) ( rectangle1.Y * Scale.Y );\r
116                                                         rectangle1.Width = (int) ( rectangle1.Width * Scale.X );\r
117                                                         rectangle1.Height = (int) ( rectangle1.Height * Scale.Y );\r
118 \r
119                                                         this.txゲージ.b加算合成 = false;\r
120                                                         this.txゲージ.t2D描画(\r
121                                                                 CDTXMania.app.Device,\r
122                                                                 x * Scale.X,\r
123                                                                 8 * Scale.Y,\r
124                                                                 rectangle1\r
125                                                         );\r
126                                                 }\r
127                                                 num4 -= rectangle.Width;\r
128                                                 x += rectangle.Width;\r
129                                         }\r
130                                         rectangle = new Rectangle( 0, 0x10, 0x40, 0x10 );\r
131                                         x = ( 0xb2 + num ) - 0x40;\r
132                                         if( x < 0xb2 )\r
133                                         {\r
134                                                 int num7 = 0xb2 - x;\r
135                                                 rectangle.X += num7;\r
136                                                 rectangle.Width -= num7;\r
137                                                 x += num7;\r
138                                         }\r
139                                         if( ( x + rectangle.Width ) > ( 0xb2 + num ) )\r
140                                         {\r
141                                                 int num8 = ( x + rectangle.Width ) - ( 0xb2 + num );\r
142                                                 rectangle.Width -= num8;\r
143                                         }\r
144                                         if( ( rectangle.Left < rectangle.Right ) && ( this.txゲージ != null ) )\r
145                                         {\r
146                                                 this.txゲージ.b加算合成 = true;\r
147                                                 rectangle.X = (int) ( rectangle.X * Scale.X );\r
148                                                 rectangle.Y = (int) ( rectangle.Y * Scale.Y );\r
149                                                 rectangle.Width = (int) ( rectangle.Width * Scale.X );\r
150                                                 rectangle.Height = (int) ( rectangle.Height * Scale.Y );\r
151                                                 this.txゲージ.t2D描画( CDTXMania.app.Device,\r
152                                                         x * Scale.X,\r
153                                                         8 * Scale.Y,\r
154                                                         rectangle\r
155                                                 );\r
156                                         }\r
157                                         if (this.bRisky && this.actLVLNFont != null)            // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
158                                         {\r
159                                                 CActLVLNFont.EFontColor efc = this.IsDanger( E楽器パート.GUITAR ) ?\r
160                                                         CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
161                                                 actLVLNFont.t文字列描画(\r
162                                                         (int) ( 196 * Scale.X ),\r
163                                                         (int) ( 6 * Scale.Y ),\r
164                                                         nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Left );\r
165                                         }\r
166                                 }\r
167                                 #endregion\r
168 \r
169                                 #region [ ベースのゲージ ]\r
170                                 if ( this.db現在のゲージ値.Bass == 1.0 )\r
171                                 {\r
172                                         num9 = (int) ( 128.0 * this.db現在のゲージ値.Bass );\r
173                                 }\r
174                                 else\r
175                                 {\r
176                                         num9 = (int) ( ( 128.0 * this.db現在のゲージ値.Bass ) + ( 2.0 * Math.Sin( Math.PI * 2 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) );\r
177                                 }\r
178                                 if( num9 > 0 )\r
179                                 {\r
180                                         Rectangle rectangle2;\r
181                                         int num10 = this.ct本体移動.n現在の値;\r
182                                         int num11 = ( 0x1cf - num9 ) - num10;\r
183                                         int num12 = num9 + num10;\r
184                                         while( num12 > 0 )\r
185                                         {\r
186                                                 if( this.db現在のゲージ値.Bass == 1.0 )\r
187                                                 {\r
188                                                         rectangle2 = new Rectangle( 10, 0x30, 0x1b, 0x10 );\r
189                                                 }\r
190                                                 else\r
191                                                 {\r
192                                                         rectangle2 = new Rectangle( 0x25, 0x30, 0x1b, 0x10 );\r
193                                                 }\r
194                                                 if( num11 < ( 0x1cf - num9 ) )\r
195                                                 {\r
196                                                         int num13 = ( 0x1cf - num9 ) - num11;\r
197                                                         rectangle2.X += num13;\r
198                                                         rectangle2.Width -= num13;\r
199                                                         num11 += num13;\r
200                                                 }\r
201                                                 if( ( num11 + rectangle2.Width ) > 0x1cf )\r
202                                                 {\r
203                                                         int num14 = ( num11 + rectangle2.Width ) - 0x1cf;\r
204                                                         rectangle2.Width -= num14;\r
205                                                 }\r
206                                                 if( rectangle2.Left >= rectangle2.Right )\r
207                                                 {\r
208                                                         break;\r
209                                                 }\r
210                                                 if( this.txゲージ != null )\r
211                                                 {\r
212                                                         Rectangle rectangle3 = rectangle2;\r
213                                                         rectangle3.X = (int) ( rectangle3.X * Scale.X );\r
214                                                         rectangle3.Y = (int) ( rectangle3.Y * Scale.Y );\r
215                                                         rectangle3.Width = (int) ( rectangle3.Width * Scale.X );\r
216                                                         rectangle3.Height = (int) ( rectangle3.Height * Scale.Y );\r
217                                                         this.txゲージ.b加算合成 = false;\r
218                                                         this.txゲージ.t2D描画(\r
219                                                                 CDTXMania.app.Device,\r
220                                                                 num11 * Scale.X,\r
221                                                                 8 * Scale.Y,\r
222                                                                 rectangle3\r
223                                                         );\r
224                                                 }\r
225                                                 num12 -= rectangle2.Width;\r
226                                                 num11 += rectangle2.Width;\r
227                                         }\r
228                                         rectangle2 = new Rectangle( 0, 0x20, 0x40, 0x10 );\r
229                                         num11 = 0x1cf - num9;\r
230                                         if( ( num11 + rectangle2.Width ) > 0x1cf )\r
231                                         {\r
232                                                 int num15 = ( num11 + rectangle2.Width ) - 0x1cf;\r
233                                                 rectangle2.Width -= num15;\r
234                                         }\r
235                                         if( ( rectangle2.Left < rectangle2.Right ) && ( this.txゲージ != null ) )\r
236                                         {\r
237                                                 this.txゲージ.b加算合成 = true;\r
238                                                 rectangle2.X = (int) ( rectangle2.X * Scale.X );\r
239                                                 rectangle2.Y = (int) ( rectangle2.Y * Scale.Y );\r
240                                                 rectangle2.Width = (int) ( rectangle2.Width * Scale.X );\r
241                                                 rectangle2.Height = (int) ( rectangle2.Height * Scale.Y );\r
242                                                 this.txゲージ.t2D描画(\r
243                                                         CDTXMania.app.Device,\r
244                                                         num11 * Scale.X,\r
245                                                         8 * Scale.Y,\r
246                                                         rectangle2\r
247                                                 );\r
248                                         }\r
249                                         if (this.bRisky && this.actLVLNFont != null)            // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
250                                         {\r
251                                                 CActLVLNFont.EFontColor efc = this.IsDanger( E楽器パート.GUITAR ) ?\r
252                                                         CActLVLNFont.EFontColor.Red : CActLVLNFont.EFontColor.Yellow;\r
253                                                 actLVLNFont.t文字列描画(\r
254                                                         (int) ( 445 * Scale.X ),\r
255                                                         (int) ( 6 * Scale.Y ),\r
256                                                         nRiskyTimes.ToString(), efc, CActLVLNFont.EFontAlign.Right );\r
257                                         }\r
258                                 }\r
259                                 #endregion\r
260                         }\r
261                         return 0;\r
262                 }\r
263 \r
264 \r
265                 // その他\r
266 \r
267                 #region [ private ]\r
268                 //-----------------\r
269                 //private CCounter ct本体移動;\r
270                 //private CCounter ct本体振動;\r
271                 //private CTexture txゲージ;\r
272                 //-----------------\r
273                 #endregion\r
274         }\r
275 }\r