OSDN Git Service

eda8737ab8708b172b7ec801d42723b4c654cae2
[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.Runtime.InteropServices;\r
5 using SlimDX;\r
6 \r
7 namespace DTXMania\r
8 {\r
9         internal class CAct演奏Guitar判定文字列 : CAct演奏判定文字列共通\r
10         {\r
11                 // コンストラクタ\r
12 \r
13                 public CAct演奏Guitar判定文字列()\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 = 0x1a;\r
58                         stレーンサイズ11.w = 0x6f;\r
59                         stレーンサイズArray[ 10 ] = stレーンサイズ11;\r
60                         STレーンサイズ stレーンサイズ12 = new STレーンサイズ();\r
61                         stレーンサイズ12.x = 480;\r
62                         stレーンサイズ12.w = 0x6f;\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                                                         if( j == 11 )\r
156                                                         {\r
157                                                                 if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Bass ) == E判定文字表示位置.表示OFF )\r
158                                                                 {\r
159                                                                         goto Label_06B7;\r
160                                                                 }\r
161                                                                 num5 = ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Bass ) == E判定文字表示位置.レーン上 ) ? this.stレーンサイズ[ j ].x : 0x163;\r
162                                                                 num6 = CDTXMania.ConfigIni.bReverse.Bass ? 0x12b : 190;\r
163                                                         }\r
164                                                         else if( j == 10 )\r
165                                                         {\r
166                                                                 if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.表示OFF )\r
167                                                                 {\r
168                                                                         goto Label_06B7;\r
169                                                                 }\r
170                                                                 num5 = ( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Guitar ) == E判定文字表示位置.レーン上 ) ? this.stレーンサイズ[ j ].x : 0xaf;\r
171                                                                 num6 = CDTXMania.ConfigIni.bReverse.Guitar ? 0x12b : 190;\r
172                                                         }\r
173                                                         int x = ( ( num5 + base.st状態[ j ].n相対X座標 ) + ( this.stレーンサイズ[ j ].w / 2 ) ) - ( (int) ( ( ( 128f * base.st状態[ j ].fX方向拡大率 ) * 0.8 ) / 2.0 ) );\r
174                                                         int y = ( num6 + base.st状態[ j ].n相対Y座標 ) - ( (int) ( ( ( 43f * base.st状態[ j ].fY方向拡大率 ) * 0.8 ) / 2.0 ) );\r
175                                                         if( base.tx判定文字列[ index ] != null )\r
176                                                         {\r
177                                                                 base.tx判定文字列[ index ].n透明度 = base.st状態[ j ].n透明度;\r
178                                                                 base.tx判定文字列[ index ].vc拡大縮小倍率 = new Vector3( (float) ( base.st状態[ j ].fX方向拡大率 * 0.8 ), (float) ( base.st状態[ j ].fY方向拡大率 * 0.8 ), 1f );\r
179                                                                 base.tx判定文字列[ index ].t2D描画( CDTXMania.app.Device, x, y, base.st判定文字列[ (int) base.st状態[ j ].judge ].rc );\r
180                                                         }\r
181                                                 Label_06B7: ;\r
182                                                 }\r
183                                         }\r
184                                 }\r
185                         }\r
186                         return 0;\r
187                 }\r
188 \r
189 \r
190                 // その他\r
191 \r
192                 #region [ private ]\r
193                 //-----------------\r
194                 [StructLayout( LayoutKind.Sequential )]\r
195                 private struct STレーンサイズ\r
196                 {\r
197                         public int x;\r
198                         public int w;\r
199                 }\r
200 \r
201                 private STレーンサイズ[] stレーンサイズ;\r
202                 //-----------------\r
203                 #endregion\r
204         }\r
205 }\r