OSDN Git Service

#36043 CDTXMania 内の app 以外の static メンバをインスタンスメンバにし、appを介してアクセスするように変更。CChipのメンバの多くをpr...
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ドラム画面 / CAct演奏DrumsチップファイアD.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Runtime.InteropServices;\r
5 using SlimDX;\r
6 using FDK;\r
7 \r
8 namespace DTXMania\r
9 {\r
10         internal class CAct演奏DrumsチップファイアD : CActivity\r
11         {\r
12                 // コンストラクタ\r
13 \r
14                 public CAct演奏DrumsチップファイアD()\r
15                 {\r
16                         base.b活性化してない = true;\r
17                 }\r
18                 \r
19                 \r
20                 // メソッド\r
21 \r
22                 public void Start( Eレーン lane )\r
23                 {\r
24                         this.Start( lane, false, false, false, 0 );\r
25                 }\r
26                 public void Start( Eレーン lane, bool bフィルイン )\r
27                 {\r
28                         this.Start( lane, bフィルイン, false, false, 0 );\r
29                 }\r
30                 public void Start( Eレーン lane, bool bフィルイン, bool b大波 )\r
31                 {\r
32                         this.Start( lane, bフィルイン, b大波, false, 0 );\r
33                 }\r
34                 public void Start( Eレーン lane, bool bフィルイン, bool b大波, bool b細波 )\r
35                 {\r
36                         this.Start( lane, bフィルイン, b大波, b細波, 0 );\r
37                 }\r
38                 public void Start( Eレーン lane, bool bフィルイン, bool b大波, bool b細波, int _nJudgeLinePosY_delta_Drums )\r
39                 {\r
40                         nJudgeLinePosY_delta_Drums = _nJudgeLinePosY_delta_Drums;\r
41                         if( this.tx火花 != null )\r
42                         {\r
43                                 for ( int j = 0; j < FIRE_MAX; j++ )\r
44                                 {\r
45                                         if ( this.st火花[ j ].b使用中 && this.st火花[ j ].nLane == (int) lane )          // yyagi 負荷軽減のつもり・・・だが、あまり効果なさげ\r
46                                         {\r
47                                                 this.st火花[ j ].ct進行.t停止();\r
48                                                 this.st火花[ j ].b使用中 = false;\r
49                                         }\r
50                                 }\r
51                                 float n回転初期値 = CDTXMania.app.Random.Next( 360 );\r
52                                 for ( int i = 0; i < 8; i++ )\r
53                                 {\r
54                                         for( int j = 0; j < FIRE_MAX; j++ )\r
55                                         {\r
56                                                 if( !this.st火花[ j ].b使用中 )\r
57                                                 {\r
58                                                         this.st火花[ j ].b使用中 = true;\r
59                                                         this.st火花[ j ].nLane = (int) lane;\r
60 //                                                      this.st火花[ j ].ct進行 = new CCounter( 0, 35, 6, CDTXMania.app.Timer );\r
61                                                         this.st火花[ j ].ct進行 = new CCounter( 0, 70, 3, CDTXMania.app.Timer );\r
62                                                         this.st火花[ j ].f回転単位 = C変換.DegreeToRadian( (float) ( n回転初期値 + ( i * 90f ) ) );\r
63                                                         this.st火花[ j ].f回転方向 = ( i < 4 ) ? 1f : -2f;\r
64                                                         this.st火花[ j ].fサイズ = ( i < 4 ) ? 1f : 0.5f;\r
65                                                         break;\r
66                                                 }\r
67                                         }\r
68                                 }\r
69                         }\r
70                         if ( bフィルイン && ( this.tx青い星 != null ) )\r
71                         {\r
72                                 for ( int i = 0; i < 0x10; i++ )\r
73                                 {\r
74                                         for ( int j = 0; j < STAR_MAX; j++ )\r
75                                         {\r
76                                                 if ( !this.st青い星[ j ].b使用中 )\r
77                                                 {\r
78                                                         this.st青い星[ j ].b使用中 = true;\r
79                                                         int n回転初期値 = CDTXMania.app.Random.Next( 360 );\r
80                                                         double num7 = 0.9 + ( ( (double) CDTXMania.app.Random.Next( 40 ) ) / 100.0 );\r
81                                                         this.st青い星[ j ].nLane = (int) lane;\r
82                                                         this.st青い星[ j ].ct進行 = new CCounter( 0, 100, 7, CDTXMania.app.Timer );\r
83                                                         this.st青い星[ j ].fX =\r
84                                                                 (int) ( this.nレーンの中央X座標[ (int) lane ] * ( CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75 ) ) +\r
85                                                                                         ( ( CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ) ? (float) ( 54 * 3 ) : (float) ( 619 + 12 + 40 ) );\r
86                                                         this.st青い星[ j ].fY = CDTXMania.app.ConfigIni.bReverse.Drums ?\r
87                                                                 (float) (119 + 4) - nJudgeLinePosY_delta_Drums : (float) (942 + 14) + nJudgeLinePosY_delta_Drums;\r
88                                                         this.st青い星[ j ].f加速度X = (float) ( num7 * Math.Cos( ( Math.PI * 2 * n回転初期値 ) / 360.0 ) );\r
89                                                         this.st青い星[ j ].f加速度Y = (float) ( num7 * ( Math.Sin( ( Math.PI * 2 * n回転初期値 ) / 360.0 ) - 0.2 ) );\r
90                                                         this.st青い星[ j ].f加速度の加速度X = 0.995f;\r
91                                                         this.st青い星[ j ].f加速度の加速度Y = 0.995f;\r
92                                                         this.st青い星[ j ].f重力加速度 = 0.00355f;\r
93                                                         this.st青い星[ j ].f半径 = (float) ( 0.5 + ( ( (double) CDTXMania.app.Random.Next( 30 ) ) / 100.0 ) );\r
94                                                         break;\r
95                                                 }\r
96                                         }\r
97                                 }\r
98                         }\r
99                         if( b大波 && ( this.tx大波 != null ) )\r
100                         {\r
101                                 for( int i = 0; i < 4; i++ )\r
102                                 {\r
103                                         for( int j = 0; j < BIGWAVE_MAX; j++ )\r
104                                         {\r
105                                                 if( !this.st大波[ j ].b使用中 )\r
106                                                 {\r
107                                                         this.st大波[ j ].b使用中 = true;\r
108                                                         this.st大波[ j ].nLane = (int) lane;\r
109                                                         this.st大波[ j ].f半径 = ( (float) ( ( 20 - CDTXMania.app.Random.Next( 40 ) ) + 100 ) ) / 100f;\r
110                                                         this.st大波[ j ].n進行速度ms = 10;\r
111                                                         this.st大波[ j ].ct進行 = new CCounter( 0, 100, this.st大波[ j ].n進行速度ms, CDTXMania.app.Timer );\r
112                                                         this.st大波[ j ].ct進行.n現在の値 = i * 10;\r
113                                                         this.st大波[ j ].f角度X = C変換.DegreeToRadian( (float) ( ( ( (double) ( CDTXMania.app.Random.Next( 100 ) * 50 ) ) / 100.0 ) + 30.0 ) );\r
114                                                         this.st大波[ j ].f角度Y = C変換.DegreeToRadian( this.b大波Balance ? ( this.fY波の最小仰角[ (int) lane ] + CDTXMania.app.Random.Next( 30 ) ) : ( this.fY波の最大仰角[ (int) lane ] - CDTXMania.app.Random.Next( 30 ) ) );\r
115                                                         this.st大波[ j ].f回転単位 = C変換.DegreeToRadian( (float) 0f );\r
116                                                         this.st大波[ j ].f回転方向 = 1f;\r
117                                                         this.b大波Balance = !this.b大波Balance;\r
118                                                         break;\r
119                                                 }\r
120                                         }\r
121                                 }\r
122                         }\r
123                         if( b細波 && ( this.tx細波 != null ) )\r
124                         {\r
125                                 for( int i = 0; i < 1; i++ )\r
126                                 {\r
127                                         for( int j = 0; j < BIGWAVE_MAX; j++ )\r
128                                         {\r
129                                                 if( !this.st細波[ j ].b使用中 )\r
130                                                 {\r
131                                                         this.st細波[ j ].b使用中 = true;\r
132                                                         this.st細波[ j ].nLane = (int) lane;\r
133                                                         this.st細波[ j ].f半径 = ( (float) ( ( 20 - CDTXMania.app.Random.Next( 40 ) ) + 100 ) ) / 100f;\r
134                                                         this.st細波[ j ].n進行速度ms = 8;\r
135                                                         this.st細波[ j ].ct進行 = new CCounter( 0, 100, this.st細波[ j ].n進行速度ms, CDTXMania.app.Timer );\r
136                                                         this.st細波[ j ].ct進行.n現在の値 = 0;\r
137                                                         this.st細波[ j ].f角度X = C変換.DegreeToRadian( (float) ( ( ( (double) ( CDTXMania.app.Random.Next( 100 ) * 50 ) ) / 100.0 ) + 30.0 ) );\r
138                                                         this.st細波[ j ].f角度Y = C変換.DegreeToRadian( this.b細波Balance ? ( this.fY波の最小仰角[ (int) lane ] + CDTXMania.app.Random.Next( 30 ) ) : ( this.fY波の最大仰角[ (int) lane ] - CDTXMania.app.Random.Next( 30 ) ) );\r
139                                                         this.b細波Balance = !this.b細波Balance;\r
140                                                         break;\r
141                                                 }\r
142                                         }\r
143                                 }\r
144                         }\r
145                 }\r
146 \r
147 \r
148                 // CActivity 実装\r
149 \r
150                 public override void On活性化()\r
151                 {\r
152                         for( int i = 0; i < FIRE_MAX; i++ )\r
153                         {\r
154                                 this.st火花[ i ] = new ST火花();\r
155                                 this.st火花[ i ].b使用中 = false;\r
156                                 this.st火花[ i ].ct進行 = new CCounter();\r
157                         }\r
158                         for( int i = 0; i < STAR_MAX; i++ )\r
159                         {\r
160                                 this.st青い星[ i ] = new ST青い星();\r
161                                 this.st青い星[ i ].b使用中 = false;\r
162                                 this.st青い星[ i ].ct進行 = new CCounter();\r
163                         }\r
164                         for( int i = 0; i < BIGWAVE_MAX; i++ )\r
165                         {\r
166                                 this.st大波[ i ] = new ST大波();\r
167                                 this.st大波[ i ].b使用中 = false;\r
168                                 this.st大波[ i ].ct進行 = new CCounter();\r
169                                 this.st細波[ i ] = new ST細波();\r
170                                 this.st細波[ i ].b使用中 = false;\r
171                                 this.st細波[ i ].ct進行 = new CCounter();\r
172                         }\r
173                         base.On活性化();\r
174                 }\r
175                 public override void On非活性化()\r
176                 {\r
177                         for( int i = 0; i <FIRE_MAX; i++ )\r
178                         {\r
179                                 this.st火花[ i ].ct進行 = null;\r
180                         }\r
181                         for( int i = 0; i < STAR_MAX; i++ )\r
182                         {\r
183                                 this.st青い星[ i ].ct進行 = null;\r
184                         }\r
185                         for( int i = 0; i < BIGWAVE_MAX; i++ )\r
186                         {\r
187                                 this.st大波[ i ].ct進行 = null;\r
188                                 this.st細波[ i ].ct進行 = null;\r
189                         }\r
190                         base.On非活性化();\r
191                 }\r
192                 public override void OnManagedリソースの作成()\r
193                 {\r
194                         if( !base.b活性化してない )\r
195                         {\r
196                                 this.tx火花 = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chip fire.png" ) );\r
197                                 if( this.tx火花 != null )\r
198                                 {\r
199                                         this.tx火花.b加算合成 = true;\r
200                                 }\r
201                                 this.tx青い星 = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chip star.png" ) );\r
202                                 if( this.tx青い星 != null )\r
203                                 {\r
204                                         this.tx青い星.b加算合成 = true;\r
205                                 }\r
206                                 this.tx大波 = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chip wave.png" ) );\r
207                                 if( this.tx大波 != null )\r
208                                 {\r
209                                         this.tx大波.b加算合成 = true;\r
210                                 }\r
211                                 this.tx細波 = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chip wave2.png" ) );\r
212                                 if( this.tx細波 != null )\r
213                                 {\r
214                                         this.tx細波.b加算合成 = true;\r
215                                 }\r
216                                 base.OnManagedリソースの作成();\r
217                         }\r
218                 }\r
219                 public override void OnManagedリソースの解放()\r
220                 {\r
221                         if( !base.b活性化してない )\r
222                         {\r
223                                 TextureFactory.tテクスチャの解放( ref this.tx火花 );\r
224                                 TextureFactory.tテクスチャの解放( ref this.tx青い星 );\r
225                                 TextureFactory.tテクスチャの解放( ref this.tx大波 );\r
226                                 TextureFactory.tテクスチャの解放( ref this.tx細波 );\r
227                                 base.OnManagedリソースの解放();\r
228                         }\r
229                 }\r
230                 public override int On進行描画()\r
231                 {\r
232                         if( !base.b活性化してない )\r
233                         {\r
234                                 for( int i = 0; i < FIRE_MAX; i++ )\r
235                                 {\r
236                                         if( this.st火花[ i ].b使用中 )\r
237                                         {\r
238                                                 this.st火花[ i ].ct進行.t進行();\r
239                                                 if( this.st火花[ i ].ct進行.b終了値に達した )\r
240                                                 {\r
241                                                         this.st火花[ i ].ct進行.t停止();\r
242                                                         this.st火花[ i ].b使用中 = false;\r
243                                                 }\r
244                                                 Matrix identity = Matrix.Identity;\r
245 //                                              float num2 = ( (float) this.st火花[ i ].ct進行.n現在の値 * 2 ) / 70f;\r
246                                                 float num2 = ( (float) this.st火花[ i ].ct進行.n現在の値 ) / 70f;\r
247                                                 float num3 = this.st火花[ i ].f回転単位 + ( this.st火花[ i ].f回転方向 * C変換.DegreeToRadian( (float) ( 60f * num2 ) ) );\r
248 //                                              float num4 = ( (float) ( 0.2 + ( 0.8 * Math.Cos( ( ( (double) this.st火花[ i ].ct進行.n現在の値 ) * 2 / 50.0 ) * Math.PI / 2 ) ) ) ) * this.st火花[ i ].fサイズ;\r
249                                                 float num4 = ( (float) ( 0.2 + ( 0.8 * Math.Cos( ( ( (double) this.st火花[ i ].ct進行.n現在の値 ) / 50.0 ) * Math.PI / 2 ) ) ) ) * this.st火花[ i ].fサイズ;\r
250                                                 identity *= Matrix.Scaling( 0.2f + num4, 0.2f + this.st火花[ i ].fサイズ, 1f );\r
251                                                 identity *= Matrix.RotationZ( num3 + ( (float) Math.PI / 2 ) );\r
252                                                 float num5 = ( (float) ( 0.8 * Math.Sin( num2 * Math.PI / 2 ) ) ) * this.st火花[ i ].fサイズ;\r
253                                                 identity *= Matrix.Translation(\r
254                                                         ( (int)(this.nレーンの中央X座標[ this.st火花[ i ].nLane ] * ((CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left)? 1.0 : 0.75))\r
255                                                         +\r
256                                                                 ( (CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left)? (float)(54 * 3) : (float)(619 + 12 + 40) ) +\r
257                                                                 ( ( (float) Math.Cos( (double) num3 ) ) * num5 ) ) - SampleFramework.GameWindowSize.Width / 2,\r
258                                                         -( ( ( CDTXMania.app.ConfigIni.bReverse.Drums ?\r
259                                                                 ( 119 + 4 ) - nJudgeLinePosY_delta_Drums : ( 942 + 14 ) + nJudgeLinePosY_delta_Drums )\r
260                                                         + ( ( (float) Math.Sin( (double) num3 ) ) * num5 ) ) - SampleFramework.GameWindowSize.Height / 2 ),\r
261                                                         0f\r
262                                                 );\r
263                                                 if( this.tx火花 != null )\r
264                                                 {\r
265                                                         this.tx火花.t3D描画( CDTXMania.app.Device, identity );\r
266                                                 }\r
267                                         }\r
268                                 }\r
269                                 for ( int i = 0; i < STAR_MAX; i++ )\r
270                                 {\r
271                                         if ( this.st青い星[ i ].b使用中 )\r
272                                         {\r
273                                                 this.st青い星[ i ].n前回のValue = this.st青い星[ i ].ct進行.n現在の値;\r
274                                                 this.st青い星[ i ].ct進行.t進行();\r
275                                                 if ( this.st青い星[ i ].ct進行.b終了値に達した )\r
276                                                 {\r
277                                                         this.st青い星[ i ].ct進行.t停止();\r
278                                                         this.st青い星[ i ].b使用中 = false;\r
279                                                 }\r
280                                                 for ( int n = this.st青い星[ i ].n前回のValue; n < this.st青い星[ i ].ct進行.n現在の値; n++ )\r
281                                                 {\r
282                                                         this.st青い星[ i ].fX += this.st青い星[ i ].f加速度X;\r
283                                                         this.st青い星[ i ].fY -= this.st青い星[ i ].f加速度Y;\r
284                                                         this.st青い星[ i ].f加速度X *= this.st青い星[ i ].f加速度の加速度X;\r
285                                                         this.st青い星[ i ].f加速度Y *= this.st青い星[ i ].f加速度の加速度Y;\r
286                                                         this.st青い星[ i ].f加速度Y -= this.st青い星[ i ].f重力加速度;\r
287                                                 }\r
288                                                 Matrix mat = Matrix.Identity;\r
289                                                 float x = (float) ( this.st青い星[ i ].f半径 * Math.Cos( ( Math.PI / 2 * this.st青い星[ i ].ct進行.n現在の値 ) / 100.0 ) );\r
290                                                 mat *= Matrix.Scaling( x, x, 1f );\r
291                                                 mat *= Matrix.Translation(\r
292                                                         this.st青い星[ i ].fX - SampleFramework.GameWindowSize.Width / 2,\r
293                                                         -( this.st青い星[ i ].fY * Scale.Y - SampleFramework.GameWindowSize.Height / 2 ),\r
294                                                         0f\r
295                                                 );\r
296                                                 if ( this.tx青い星 != null )\r
297                                                 {\r
298                                                         this.tx青い星.t3D描画( CDTXMania.app.Device, mat );\r
299                                                 }\r
300                                         }\r
301                                 }\r
302                                 for( int i = 0; i < BIGWAVE_MAX; i++ )\r
303                                 {\r
304                                         if( this.st大波[ i ].b使用中 )\r
305                                         {\r
306                                                 this.st大波[ i ].ct進行.t進行();\r
307                                                 if( this.st大波[ i ].ct進行.b終了値に達した )\r
308                                                 {\r
309                                                         this.st大波[ i ].ct進行.t停止();\r
310                                                         this.st大波[ i ].b使用中 = false;\r
311                                                 }\r
312                                                 if( this.st大波[ i ].ct進行.n現在の値 >= 0 )\r
313                                                 {\r
314                                                         Matrix matrix3 = Matrix.Identity;\r
315                                                         float num10 = ( (float) this.st大波[ i ].ct進行.n現在の値 ) / 100f;\r
316                                                         float angle = this.st大波[ i ].f回転単位 + ( this.st大波[ i ].f回転方向 * C変換.DegreeToRadian( (float) ( 60f * num10 ) ) );\r
317                                                         float num12 = 1f;\r
318                                                         if( num10 < 0.4f )\r
319                                                         {\r
320                                                                 num12 = 2.5f * num10;\r
321                                                         }\r
322                                                         else if( num10 < 0.8f )\r
323                                                         {\r
324                                                                 num12 = (float) ( 1.0 + ( 10.1 * ( 1.0 - Math.Cos( ( Math.PI / 2 * ( num10 - 0.4 ) ) * 2.5 ) ) ) );\r
325                                                         }\r
326                                                         else\r
327                                                         {\r
328                                                                 num12 = 11.1f + ( 12.5f * ( num10 - 0.8f ) );\r
329                                                         }\r
330                                                         int num13 = 0xff;\r
331                                                         if( num10 < 0.75f )\r
332                                                         {\r
333                                                                 num13 = 0x37;\r
334                                                         }\r
335                                                         else\r
336                                                         {\r
337                                                                 num13 = (int) ( ( 55f * ( 1f - num10 ) ) / 0.25f );\r
338                                                         }\r
339                                                         matrix3 *= Matrix.Scaling( num12 * this.st大波[ i ].f半径, num12 * this.st大波[ i ].f半径, 1f );\r
340                                                         matrix3 *= Matrix.RotationZ( angle );\r
341                                                         matrix3 *= Matrix.RotationX( this.st大波[ i ].f角度X );\r
342                                                         matrix3 *= Matrix.RotationY( this.st大波[ i ].f角度Y );\r
343                                                         matrix3 *= Matrix.Translation(\r
344                                                                 (int)(this.nレーンの中央X座標[ this.st大波[ i ].nLane ] * ( CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left? 1.0 : 0.75)) +\r
345                                                                         ( ( CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ) ? (float) ( 54 * 3 ) : (float) ( 619 + 12 + 40 ) )\r
346                                                                         - SampleFramework.GameWindowSize.Width / 2,\r
347                                                                 -( ( CDTXMania.app.ConfigIni.bReverse.Drums ?\r
348                                                                 (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums )\r
349                                                                 - SampleFramework.GameWindowSize.Height / 2 ),\r
350                                                                 0f );\r
351                                                         if( this.tx大波 != null )\r
352                                                         {\r
353                                                                 this.tx大波.n透明度 = num13;\r
354                                                                 this.tx大波.t3D描画( CDTXMania.app.Device, matrix3 );\r
355                                                         }\r
356                                                 }\r
357                                         }\r
358                                 }\r
359                                 for( int i = 0; i < BIGWAVE_MAX; i++ )\r
360                                 {\r
361                                         if( this.st細波[ i ].b使用中 )\r
362                                         {\r
363                                                 this.st細波[ i ].ct進行.t進行();\r
364                                                 if( this.st細波[ i ].ct進行.b終了値に達した )\r
365                                                 {\r
366                                                         this.st細波[ i ].ct進行.t停止();\r
367                                                         this.st細波[ i ].b使用中 = false;\r
368                                                 }\r
369                                                 if( this.st細波[ i ].ct進行.n現在の値 >= 0 )\r
370                                                 {\r
371                                                         Matrix matrix4 = Matrix.Identity;\r
372                                                         float num15 = ( (float) this.st細波[ i ].ct進行.n現在の値 ) / 100f;\r
373                                                         float num16 = 14f * num15;\r
374                                                         int num17 = ( num15 < 0.5f ) ? 155 : ( (int) ( ( 155f * ( 1f - num15 ) ) / 1f ) );\r
375                                                         matrix4 *= Matrix.Scaling(\r
376                                                                                         num16 * this.st細波[ i ].f半径,\r
377                                                                                         num16 * this.st細波[ i ].f半径,\r
378                                                                                         1f\r
379                                                         );\r
380                                                         matrix4 *= Matrix.RotationX( this.st細波[ i ].f角度X );\r
381                                                         matrix4 *= Matrix.RotationY( this.st細波[ i ].f角度Y );\r
382                                                         matrix4 *= Matrix.Translation(\r
383                                                                 (int)( this.nレーンの中央X座標[ this.st細波[ i ].nLane ] * (CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left? 1.0 : 0.75 ) ) +\r
384                                                                 ( ( CDTXMania.app.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ) ? (float) ( 54 * 3 ) : (float) ( 619 + 12 + 40 ) )\r
385                                                                         -SampleFramework.GameWindowSize.Width / 2,\r
386                                                                 -( ( CDTXMania.app.ConfigIni.bReverse.Drums ?\r
387                                                                 (119 + 4) - nJudgeLinePosY_delta_Drums : (942 + 14) + nJudgeLinePosY_delta_Drums )\r
388                                                                 - SampleFramework.GameWindowSize.Height / 2 ),\r
389                                                                 0f\r
390                                                         );\r
391                                                         if (this.tx細波 != null)\r
392                                                         {\r
393                                                                 this.tx細波.n透明度 = num17;\r
394                                                                 this.tx細波.t3D描画( CDTXMania.app.Device, matrix4 );\r
395                                                         }\r
396                                                 }\r
397                                         }\r
398                                 }\r
399                         }\r
400                         return 0;\r
401                 }\r
402                 \r
403 \r
404                 // その他\r
405 \r
406                 #region [ private ]\r
407                 //-----------------\r
408                 [StructLayout( LayoutKind.Sequential )]\r
409                 private struct ST火花\r
410                 {\r
411                         public int nLane;\r
412                         public bool b使用中;\r
413                         public CCounter ct進行;\r
414                         public float f回転単位;\r
415                         public float f回転方向;\r
416                         public float fサイズ;\r
417                 }\r
418                 [StructLayout( LayoutKind.Sequential )]\r
419                 private struct ST細波\r
420                 {\r
421                         public int nLane;\r
422                         public bool b使用中;\r
423                         public CCounter ct進行;\r
424                         public float f角度X;\r
425                         public float f角度Y;\r
426                         public float f半径;\r
427                         public int n進行速度ms;\r
428                 }\r
429                 [StructLayout( LayoutKind.Sequential )]\r
430                 private struct ST青い星\r
431                 {\r
432                         public int nLane;\r
433                         public bool b使用中;\r
434                         public CCounter ct進行;\r
435                         public int n前回のValue;\r
436                         public float fX;\r
437                         public float fY;\r
438                         public float f加速度X;\r
439                         public float f加速度Y;\r
440                         public float f加速度の加速度X;\r
441                         public float f加速度の加速度Y;\r
442                         public float f重力加速度;\r
443                         public float f半径;\r
444                 }\r
445                 [StructLayout( LayoutKind.Sequential )]\r
446                 private struct ST大波\r
447                 {\r
448                         public int nLane;\r
449                         public bool b使用中;\r
450                         public CCounter ct進行;\r
451                         public float f角度X;\r
452                         public float f角度Y;\r
453                         public float f半径;\r
454                         public int n進行速度ms;\r
455                         public float f回転単位;\r
456                         public float f回転方向;\r
457                 }\r
458 \r
459                 private const int BIGWAVE_MAX = 20;\r
460                 private bool b細波Balance;\r
461                 private bool b大波Balance;\r
462                 private const int FIRE_MAX = 8 * 8;\r
463                 private readonly float[] fY波の最小仰角 = new float[] { -130f, -126f, -120f, -118f, -110f, -108f, -103f, -97f };\r
464                 private readonly float[] fY波の最大仰角 = new float[] { 70f, 72f, 77f, 84f, 89f, 91f, 99f, 107f };\r
465                 private readonly int[] nレーンの中央X座標 = new int[] { 54 * 3 - 54 * 3, 92 * 3 - 54 * 3, 126 * 3 - 54 * 3, 167 * 3 - 54 * 3,\r
466                                                                                                                                 208 * 3 - 54 * 3, 242 * 3 - 54 * 3, 276 * 3 - 54 * 3, 313 * 3 - 54 * 3 };\r
467                 private const int STAR_MAX = 0x100;\r
468                 private ST火花[] st火花 = new ST火花[ FIRE_MAX ];\r
469                 private ST大波[] st大波 = new ST大波[ BIGWAVE_MAX ];\r
470                 private ST細波[] st細波 = new ST細波[ BIGWAVE_MAX ];\r
471                 private ST青い星[] st青い星 = new ST青い星[ STAR_MAX ];\r
472                 private CTexture tx火花;\r
473                 private CTexture tx細波;\r
474                 private CTexture tx青い星;\r
475                 private CTexture tx大波;\r
476                 private int nJudgeLinePosY_delta_Drums;\r
477                 //-----------------\r
478                 #endregion\r
479         }\r
480 }\r