OSDN Git Service

リポジトリの中間ファイルをすべて削除し、再構築。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ドラム画面 / CAct演奏Drums判定文字列.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 \r
7 namespace DTXMania\r
8 {\r
9         internal class CAct演奏Drums判定文字列 : CAct演奏判定文字列共通\r
10         {\r
11                 // コンストラクタ\r
12 \r
13                 public CAct演奏Drums判定文字列()\r
14                 {\r
15                         STレーンサイズ[] stレーンサイズArray = new STレーンサイズ[ 12 ];\r
16                         STレーンサイズ stレーンサイズ = new STレーンサイズ();\r
17                         stレーンサイズ.x = 0x24;\r
18                         stレーンサイズ.w = 0x24;\r
19                         stレーンサイズArray[ 0 ] = stレーンサイズ;\r
20                         STレーンサイズ stレーンサイズ2 = new STレーンサイズ();\r
21                         stレーンサイズ2.x = 0x4d;\r
22                         stレーンサイズ2.w = 30;\r
23                         stレーンサイズArray[ 1 ] = stレーンサイズ2;\r
24                         STレーンサイズ stレーンサイズ3 = new STレーンサイズ();\r
25                         stレーンサイズ3.x = 0x6f;\r
26                         stレーンサイズ3.w = 30;\r
27                         stレーンサイズArray[ 2 ] = stレーンサイズ3;\r
28                         STレーンサイズ stレーンサイズ4 = new STレーンサイズ();\r
29                         stレーンサイズ4.x = 0x92;\r
30                         stレーンサイズ4.w = 0x2a;\r
31                         stレーンサイズArray[ 3 ] = stレーンサイズ4;\r
32                         STレーンサイズ stレーンサイズ5 = new STレーンサイズ();\r
33                         stレーンサイズ5.x = 0xc1;\r
34                         stレーンサイズ5.w = 30;\r
35                         stレーンサイズArray[ 4 ] = stレーンサイズ5;\r
36                         STレーンサイズ stレーンサイズ6 = new STレーンサイズ();\r
37                         stレーンサイズ6.x = 0xe3;\r
38                         stレーンサイズ6.w = 30;\r
39                         stレーンサイズArray[ 5 ] = stレーンサイズ6;\r
40                         STレーンサイズ stレーンサイズ7 = new STレーンサイズ();\r
41                         stレーンサイズ7.x = 0x105;\r
42                         stレーンサイズ7.w = 30;\r
43                         stレーンサイズArray[ 6 ] = stレーンサイズ7;\r
44                         STレーンサイズ stレーンサイズ8 = new STレーンサイズ();\r
45                         stレーンサイズ8.x = 0x127;\r
46                         stレーンサイズ8.w = 0x24;\r
47                         stレーンサイズArray[ 7 ] = stレーンサイズ8;\r
48                         STレーンサイズ stレーンサイズ9 = new STレーンサイズ();\r
49                         stレーンサイズ9.x = 0;\r
50                         stレーンサイズ9.w = 0;\r
51                         stレーンサイズArray[ 8 ] = stレーンサイズ9;\r
52                         STレーンサイズ stレーンサイズ10 = new STレーンサイズ();\r
53                         stレーンサイズ10.x = 0;\r
54                         stレーンサイズ10.w = 0;\r
55                         stレーンサイズArray[ 9 ] = stレーンサイズ10;\r
56                         STレーンサイズ stレーンサイズ11 = new STレーンサイズ();\r
57                         stレーンサイズ11.x = 0x1fb;\r
58                         stレーンサイズ11.w = 80;\r
59                         stレーンサイズArray[ 10 ] = stレーンサイズ11;\r
60                         STレーンサイズ stレーンサイズ12 = new STレーンサイズ();\r
61                         stレーンサイズ12.x = 0x18e;\r
62                         stレーンサイズ12.w = 80;\r
63                         stレーンサイズArray[ 11 ] = stレーンサイズ12;\r
64                         this.stレーンサイズ = stレーンサイズArray;\r
65                         base.b活性化してない = true;\r
66                 }\r
67                 \r
68                 \r
69                 // CActivity 実装(共通クラスからの差分のみ)\r
70 \r
71                 public override int On進行描画()\r
72                 {\r
73                         if( !base.b活性化してない )\r
74                         {\r
75                                 for( int i = 0; i < 12; i++ )\r
76                                 {\r
77                                         if( !base.st状態[ i ].ct進行.b停止中 )\r
78                                         {\r
79                                                 base.st状態[ i ].ct進行.t進行();\r
80                                                 if( base.st状態[ i ].ct進行.b終了値に達した )\r
81                                                 {\r
82                                                         base.st状態[ i ].ct進行.t停止();\r
83                                                 }\r
84                                                 int num2 = base.st状態[ i ].ct進行.n現在の値;\r
85                                                 if( ( base.st状態[ i ].judge != E判定.Miss ) && ( base.st状態[ i ].judge != E判定.Bad ) )\r
86                                                 {\r
87                                                         if( num2 < 50 )\r
88                                                         {\r
89                                                                 base.st状態[ i ].fX方向拡大率 = 1f + ( 1f * ( 1f - ( ( (float) num2 ) / 50f ) ) );\r
90                                                                 base.st状態[ i ].fY方向拡大率 = ( (float) num2 ) / 50f;\r
91                                                                 base.st状態[ i ].n相対X座標 = 0;\r
92                                                                 base.st状態[ i ].n相対Y座標 = 0;\r
93                                                                 base.st状態[ i ].n透明度 = 0xff;\r
94                                                         }\r
95                                                         else if( num2 < 130 )\r
96                                                         {\r
97                                                                 base.st状態[ i ].fX方向拡大率 = 1f;\r
98                                                                 base.st状態[ i ].fY方向拡大率 = 1f;\r
99                                                                 base.st状態[ i ].n相対X座標 = 0;\r
100                                                                 base.st状態[ i ].n相対Y座標 = ( ( num2 % 6 ) == 0 ) ? ( CDTXMania.Random.Next( 6 ) - 3 ) : base.st状態[ i ].n相対Y座標;\r
101                                                                 base.st状態[ i ].n透明度 = 0xff;\r
102                                                         }\r
103                                                         else if( num2 >= 240 )\r
104                                                         {\r
105                                                                 base.st状態[ i ].fX方向拡大率 = 1f;\r
106                                                                 base.st状態[ i ].fY方向拡大率 = 1f - ( ( 1f * ( num2 - 240 ) ) / 60f );\r
107                                                                 base.st状態[ i ].n相対X座標 = 0;\r
108                                                                 base.st状態[ i ].n相対Y座標 = 0;\r
109                                                                 base.st状態[ i ].n透明度 = 0xff;\r
110                                                         }\r
111                                                         else\r
112                                                         {\r
113                                                                 base.st状態[ i ].fX方向拡大率 = 1f;\r
114                                                                 base.st状態[ i ].fY方向拡大率 = 1f;\r
115                                                                 base.st状態[ i ].n相対X座標 = 0;\r
116                                                                 base.st状態[ i ].n相対Y座標 = 0;\r
117                                                                 base.st状態[ i ].n透明度 = 0xff;\r
118                                                         }\r
119                                                 }\r
120                                                 else if( num2 < 50 )\r
121                                                 {\r
122                                                         base.st状態[ i ].fX方向拡大率 = 1f;\r
123                                                         base.st状態[ i ].fY方向拡大率 = ( (float) num2 ) / 50f;\r
124                                                         base.st状態[ i ].n相対X座標 = 0;\r
125                                                         base.st状態[ i ].n相対Y座標 = 0;\r
126                                                         base.st状態[ i ].n透明度 = 0xff;\r
127                                                 }\r
128                                                 else if( num2 >= 200 )\r
129                                                 {\r
130                                                         base.st状態[ i ].fX方向拡大率 = 1f - ( ( (float) ( num2 - 200 ) ) / 100f );\r
131                                                         base.st状態[ i ].fY方向拡大率 = 1f - ( ( (float) ( num2 - 200 ) ) / 100f );\r
132                                                         base.st状態[ i ].n相対X座標 = 0;\r
133                                                         base.st状態[ i ].n相対Y座標 = 0;\r
134                                                         base.st状態[ i ].n透明度 = 0xff;\r
135                                                 }\r
136                                                 else\r
137                                                 {\r
138                                                         base.st状態[ i ].fX方向拡大率 = 1f;\r
139                                                         base.st状態[ i ].fY方向拡大率 = 1f;\r
140                                                         base.st状態[ i ].n相対X座標 = 0;\r
141                                                         base.st状態[ i ].n相対Y座標 = 0;\r
142                                                         base.st状態[ i ].n透明度 = 0xff;\r
143                                                 }\r
144                                         }\r
145                                 }\r
146                                 for( int j = 0; j < 12; j++ )\r
147                                 {\r
148                                         if( !base.st状態[ j ].ct進行.b停止中 )\r
149                                         {\r
150                                                 int index = base.st判定文字列[ (int) base.st状態[ j ].judge ].n画像番号;\r
151                                                 int num5 = 0;\r
152                                                 int num6 = 0;\r
153                                                 if( j < 8 )\r
154                                                 {\r
155                                                         num5 = this.stレーンサイズ[ j ].x;\r
156                                                         num6 = CDTXMania.ConfigIni.bReverse.Drums ? ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) == E判定文字表示位置.レーン上 ) ? ( 240 + ( this.n文字の縦表示位置[ j ] * 0x20 ) ) : 50 ) : ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) == E判定文字表示位置.レーン上 ) ? ( 180 + ( this.n文字の縦表示位置[ j ] * 0x20 ) ) : 450 );\r
157                                                 }\r
158                                                 else if( j == 11 )\r
159                                                 {\r
160                                                         if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Bass ) == E判定文字表示位置.表示OFF )\r
161                                                         {\r
162                                                                 goto Label_07FC;\r
163                                                         }\r
164                                                         num5 = this.stレーンサイズ[ j ].x;\r
165                                                         num6 = CDTXMania.ConfigIni.bReverse.Bass ? ( ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Bass ) == E判定文字表示位置.レーン上 ) ? 240 : 100 ) + ( this.n文字の縦表示位置[ j ] * 0x20 ) ) : ( ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Bass ) == E判定文字表示位置.レーン上 ) ? 180 : 300 ) + ( this.n文字の縦表示位置[ j ] * 0x20 ) );\r
166                                                 }\r
167                                                 else if( j == 10 )\r
168                                                 {\r
169                                                         if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.表示OFF )\r
170                                                         {\r
171                                                                 goto Label_07FC;\r
172                                                         }\r
173                                                         if( !CDTXMania.DTX.bチップがある.Bass && ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.判定ライン上または横 ) )\r
174                                                         {\r
175                                                                 num5 = 0x198;\r
176                                                                 num6 = 0x93;\r
177                                                         }\r
178                                                         else\r
179                                                         {\r
180                                                                 num5 = this.stレーンサイズ[ j ].x;\r
181                                                                 num6 = CDTXMania.ConfigIni.bReverse.Guitar ? ( ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.レーン上 ) ? 240 : 100 ) + ( this.n文字の縦表示位置[ j ] * 0x20 ) ) : ( ( ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.レーン上 ) ? 180 : 300 ) + ( this.n文字の縦表示位置[ j ] * 0x20 ) );\r
182                                                         }\r
183                                                 }\r
184                                                 int x = ( ( num5 + base.st状態[ j ].n相対X座標 ) + ( this.stレーンサイズ[ j ].w / 2 ) ) - ( (int) ( ( 64f * base.st状態[ j ].fX方向拡大率 ) * ( ( j < 10 ) ? 1.0 : 0.7 ) ) );\r
185                                                 int y = ( num6 + base.st状態[ j ].n相対Y座標 ) - ( (int) ( ( ( 43f * base.st状態[ j ].fY方向拡大率 ) * ( ( j < 10 ) ? 1.0 : 0.7 ) ) / 2.0 ) );\r
186                                                 if( base.tx判定文字列[ index ] != null )\r
187                                                 {\r
188                                                         base.tx判定文字列[ index ].n透明度 = base.st状態[ j ].n透明度;\r
189                                                         base.tx判定文字列[ index ].vc拡大縮小倍率 = new Vector3( (float) ( base.st状態[ j ].fX方向拡大率 * ( ( j < 10 ) ? 1.0 : 0.7 ) ), (float) ( base.st状態[ j ].fY方向拡大率 * ( ( j < 10 ) ? 1.0 : 0.7 ) ), 1f );\r
190                                                         base.tx判定文字列[ index ].t2D描画( CDTXMania.app.Device, x, y, base.st判定文字列[ (int) base.st状態[ j ].judge ].rc );\r
191                                                 }\r
192                                         Label_07FC: ;\r
193                                         }\r
194                                 }\r
195                         }\r
196                         return 0;\r
197                 }\r
198                 \r
199 \r
200                 // その他\r
201 \r
202                 #region [ private ]\r
203                 //-----------------\r
204                 [StructLayout( LayoutKind.Sequential )]\r
205                 private struct STレーンサイズ\r
206                 {\r
207                         public int x;\r
208                         public int w;\r
209                 }\r
210 \r
211                 private readonly int[] n文字の縦表示位置 = new int[] { 1, 2, 0, 1, 3, 2, 1, 0, 0, 0, 1, 1 };\r
212                 private STレーンサイズ[] stレーンサイズ;\r
213                 //-----------------\r
214                 #endregion\r
215         }\r
216 }\r