OSDN Git Service

#36043 rev.920 で手違いが起きたため、一度 rev.919 に戻し、ファイルを再修正。Ech定義の使用を CChip のプロパティを使うよう一部変更。
[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 System.Drawing;\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                         this.stレーンサイズ = new STレーンサイズ[ 8 ]\r
17                         {\r
18                                 new STレーンサイズ(  36 * 3 - 36 * 3, 36 ),\r
19                                 new STレーンサイズ(  77 * 3 - 36 * 3, 30 ),\r
20                                 new STレーンサイズ( 111 * 3 - 36 * 3, 30 ),\r
21                                 new STレーンサイズ( 146 * 3 - 36 * 3, 42 ),\r
22                                 new STレーンサイズ( 193 * 3 - 36 * 3, 30 ),\r
23                                 new STレーンサイズ( 227 * 3 - 36 * 3, 30 ),\r
24                                 new STレーンサイズ( 261 * 3 - 36 * 3, 30 ),\r
25                                 new STレーンサイズ( 295 * 3 - 36 * 3, 36 )\r
26                         };\r
27                         this.strファイル名 = new string[] {\r
28                                 @"Graphics\ScreenPlayDrums lane flush cymbal.png",\r
29                                 @"Graphics\ScreenPlayDrums lane flush hihat.png",\r
30                                 @"Graphics\ScreenPlayDrums lane flush snare.png",\r
31                                 @"Graphics\ScreenPlayDrums lane flush bass.png",\r
32                                 @"Graphics\ScreenPlayDrums lane flush hitom.png",\r
33                                 @"Graphics\ScreenPlayDrums lane flush lowtom.png",\r
34                                 @"Graphics\ScreenPlayDrums lane flush floortom.png",\r
35                                 @"Graphics\ScreenPlayDrums lane flush cymbal.png",\r
36                                 @"Graphics\ScreenPlayDrums lane flush cymbal reverse.png",\r
37                                 @"Graphics\ScreenPlayDrums lane flush hihat reverse.png",\r
38                                 @"Graphics\ScreenPlayDrums lane flush snare reverse.png",\r
39                                 @"Graphics\ScreenPlayDrums lane flush bass reverse.png",\r
40                                 @"Graphics\ScreenPlayDrums lane flush hitom reverse.png",\r
41                                 @"Graphics\ScreenPlayDrums lane flush lowtom reverse.png",\r
42                                 @"Graphics\ScreenPlayDrums lane flush floortom reverse.png",\r
43                                 @"Graphics\ScreenPlayDrums lane flush cymbal reverse.png"\r
44                         };\r
45                         base.b活性化してない = true;\r
46                 }\r
47 \r
48 \r
49                 // メソッド\r
50 \r
51                 public void Start( Eレーン lane, float f強弱度合い )\r
52                 {\r
53                         int num = (int) ( ( 1f - f強弱度合い ) * 55f );\r
54                         this.ct進行[ (int) lane ] = new CCounter( num, 100, 4, CDTXMania.Instance.Timer );\r
55                 }\r
56 \r
57 \r
58                 // CActivity 実装\r
59 \r
60                 public override void On活性化()\r
61                 {\r
62                         for ( int i = 0; i < 8; i++ )\r
63                         {\r
64                                 this.ct進行[ i ] = new CCounter();\r
65                         }\r
66                         base.On活性化();\r
67                 }\r
68                 public override void On非活性化()\r
69                 {\r
70                         for ( int i = 0; i < 8; i++ )\r
71                         {\r
72                                 this.ct進行[ i ] = null;\r
73                         }\r
74                         base.On非活性化();\r
75                 }\r
76                 public override void OnManagedリソースの作成()\r
77                 {\r
78                         if ( !base.b活性化してない )\r
79                         {\r
80                                 for ( int i = 0; i < 0x10; i++ )\r
81                                 {\r
82                                         this.txFlush[ i ] = TextureFactory.tテクスチャの生成Af( CSkin.Path( this.strファイル名[ i ] ) );\r
83                                 }\r
84                                 base.OnManagedリソースの作成();\r
85                         }\r
86                 }\r
87                 public override void OnManagedリソースの解放()\r
88                 {\r
89                         if ( !base.b活性化してない )\r
90                         {\r
91                                 for ( int i = 0; i < 0x10; i++ )\r
92                                 {\r
93                                         TextureFactory.tテクスチャの解放( ref this.txFlush[ i ] );\r
94                                 }\r
95                                 base.OnManagedリソースの解放();\r
96                         }\r
97                 }\r
98                 public override int On進行描画()\r
99                 {\r
100                         if ( !base.b活性化してない )\r
101                         {\r
102                                 for ( int i = 0; i < 8; i++ )\r
103                                 {\r
104                                         if ( !this.ct進行[ i ].b停止中 )\r
105                                         {\r
106                                                 this.ct進行[ i ].t進行();\r
107                                                 if ( this.ct進行[ i ].b終了値に達した )\r
108                                                 {\r
109                                                         this.ct進行[ i ].t停止();\r
110                                                 }\r
111                                         }\r
112                                 }\r
113                                 for ( int j = 0; j < 8; j++ )\r
114                                 {\r
115                                         if ( !this.ct進行[ j ].b停止中 )\r
116                                         {\r
117                                                 int x = this.stレーンサイズ[ j ].x;\r
118                                                 int w = this.stレーンサイズ[ j ].w;\r
119 \r
120                                                 x = (int) ( x * ( CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75 ) );\r
121                                                 x += ( CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ) ? 36 * 3 : 619 - 24 + 36;\r
122                                                 w = (int) ( w * ( CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 1.0 : 0.75 ) );\r
123 \r
124                                                 //for ( int k = 0; k < 3; k++ )\r
125                                                 int k = 0;\r
126                                                 {\r
127                                                         if ( CDTXMania.Instance.ConfigIni.bReverse.Drums )\r
128                                                         {\r
129                                                                 int y = ( k * 0x80 ) - ( ( this.ct進行[ j ].n現在の値 * 0x180 ) / 100 );\r
130                                                                 for ( int m = 0; m < w; m += 42 )\r
131                                                                 {\r
132                                                                         if ( this.txFlush[ j + 8 ] != null )\r
133                                                                         {\r
134                                                                                 this.txFlush[ j + 8 ].t2D描画(\r
135                                                                                         CDTXMania.Instance.Device,\r
136                                                                                         ( x + m ),\r
137                                                                                         y * Scale.Y,\r
138                                                                                         new Rectangle(\r
139                                                                                                 (int) ( ( k * 0x2a ) * Scale.X ),\r
140                                                                                                 0,\r
141                                                                                                 ( ( w - m ) < 0x2a ) ? (int) ( ( w - m ) * Scale.X ) : (int) ( 0x2a * Scale.X ),\r
142                                                                                                 (int) ( 0x80 * 3 * Scale.Y )\r
143                                                                                         )\r
144                                                                                 );\r
145                                                                         }\r
146                                                                 }\r
147                                                         }\r
148                                                         else\r
149                                                         {\r
150                                                                 int y = ( 0x60 + ( k * 0x80 ) ) + ( ( this.ct進行[ j ].n現在の値 * 0x180 ) / 100 );\r
151                                                                 if ( y < 480 )\r
152                                                                 {\r
153                                                                         for ( int n = 0; n < w; n += 42 )\r
154                                                                         {\r
155                                                                                 if ( this.txFlush[ j ] != null )\r
156                                                                                 {\r
157                                                                                         this.txFlush[ j ].t2D描画(\r
158                                                                                                 CDTXMania.Instance.Device,\r
159                                                                                                 ( x + n ),\r
160                                                                                                 (int) ( y * Scale.Y ),\r
161                                                                                                 new Rectangle(\r
162                                                                                                         (int) ( k * 0x2a * Scale.X ),\r
163                                                                                                         0,\r
164                                                                                                         ( ( w - n ) < 0x2a ) ? (int) ( ( w - n ) * Scale.X ) : (int) ( 0x2a * Scale.X ),\r
165                                                                                                         (int) ( 0x80 * 3 * Scale.Y )\r
166                                                                                                 )\r
167                                                                                         );\r
168                                                                                 }\r
169                                                                         }\r
170                                                                 }\r
171                                                         }\r
172                                                 }\r
173                                         }\r
174                                 }\r
175                         }\r
176                         return 0;\r
177                 }\r
178 \r
179 \r
180                 // その他\r
181 \r
182                 #region [ private ]\r
183                 //-----------------\r
184                 [StructLayout( LayoutKind.Sequential )]\r
185                 private struct STレーンサイズ\r
186                 {\r
187                         public int x;\r
188                         public int w;\r
189                         public STレーンサイズ( int x_, int w_ )\r
190                         {\r
191                                 x = x_;\r
192                                 w = w_;\r
193                         }\r
194                 }\r
195 \r
196                 private CCounter[] ct進行 = new CCounter[ 8 ];\r
197                 private readonly string[] strファイル名;\r
198                 private readonly STレーンサイズ[] stレーンサイズ;\r
199                 private CTextureAf[] txFlush = new CTextureAf[ 0x10 ];\r
200                 //-----------------\r
201                 #endregion\r
202         }\r
203 }\r