OSDN Git Service

DTXMania089リリースに際してのtag付け。
[dtxmania/dtxmania.git] / 110401(DTXMania089) / 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 System.Drawing;\r
6 using FDK;\r
7 \r
8 namespace DTXMania\r
9 {\r
10         internal class CAct演奏Drumsパッド : CActivity\r
11         {\r
12                 // コンストラクタ\r
13 \r
14                 public CAct演奏Drumsパッド()\r
15                 {\r
16                         ST基本位置[] st基本位置Array = new ST基本位置[ 9 ];\r
17                         ST基本位置 st基本位置 = new ST基本位置();\r
18                         st基本位置.x = 0x16;\r
19                         st基本位置.y = 0;\r
20                         st基本位置.rc = new Rectangle( 0, 0, 0x40, 0x40 );\r
21                         st基本位置Array[ 0 ] = st基本位置;\r
22                         ST基本位置 st基本位置2 = new ST基本位置();\r
23                         st基本位置2.x = 0x3d;\r
24                         st基本位置2.y = 11;\r
25                         st基本位置2.rc = new Rectangle( 0x40, 0, 0x40, 0x40 );\r
26                         st基本位置Array[ 1 ] = st基本位置2;\r
27                         ST基本位置 st基本位置3 = new ST基本位置();\r
28                         st基本位置3.x = 0x60;\r
29                         st基本位置3.y = 8;\r
30                         st基本位置3.rc = new Rectangle( 0x80, 0, 0x40, 0x40 );\r
31                         st基本位置Array[ 2 ] = st基本位置3;\r
32                         ST基本位置 st基本位置4 = new ST基本位置();\r
33                         st基本位置4.x = 0x8a;\r
34                         st基本位置4.y = 7;\r
35                         st基本位置4.rc = new Rectangle( 0, 0x40, 0x40, 0x40 );\r
36                         st基本位置Array[ 3 ] = st基本位置4;\r
37                         ST基本位置 st基本位置5 = new ST基本位置();\r
38                         st基本位置5.x = 0xb3;\r
39                         st基本位置5.y = 0;\r
40                         st基本位置5.rc = new Rectangle( 0x40, 0x40, 0x40, 0x40 );\r
41                         st基本位置Array[ 4 ] = st基本位置5;\r
42                         ST基本位置 st基本位置6 = new ST基本位置();\r
43                         st基本位置6.x = 0xd4;\r
44                         st基本位置6.y = 5;\r
45                         st基本位置6.rc = new Rectangle( 0x80, 0x40, 0x40, 0x40 );\r
46                         st基本位置Array[ 5 ] = st基本位置6;\r
47                         ST基本位置 st基本位置7 = new ST基本位置();\r
48                         st基本位置7.x = 250;\r
49                         st基本位置7.y = 15;\r
50                         st基本位置7.rc = new Rectangle( 0, 0x80, 0x40, 0x40 );\r
51                         st基本位置Array[ 6 ] = st基本位置7;\r
52                         ST基本位置 st基本位置8 = new ST基本位置();\r
53                         st基本位置8.x = 0x11a;\r
54                         st基本位置8.y = 0;\r
55                         st基本位置8.rc = new Rectangle( 0x40, 0x80, 0x40, 0x40 );\r
56                         st基本位置Array[ 7 ] = st基本位置8;\r
57                         ST基本位置 st基本位置9 = new ST基本位置();\r
58                         st基本位置9.x = 0x130;\r
59                         st基本位置9.y = 8;\r
60                         st基本位置9.rc = new Rectangle( 0x80, 0x80, 0x40, 0x40 );\r
61                         st基本位置Array[ 8 ] = st基本位置9;\r
62                         this.st基本位置 = st基本位置Array;\r
63                         base.b活性化してない = true;\r
64                 }\r
65                 \r
66                 \r
67                 // メソッド\r
68 \r
69                 public void Hit( int nLane )\r
70                 {\r
71                         this.stパッド状態[ nLane ].n明るさ = 6;\r
72                         this.stパッド状態[ nLane ].nY座標加速度dot = 2;\r
73                 }\r
74 \r
75 \r
76                 // CActivity 実装\r
77 \r
78                 public override void On活性化()\r
79                 {\r
80                         this.nフラッシュ制御タイマ = -1;\r
81                         this.nY座標制御タイマ = -1;\r
82                         for( int i = 0; i < 9; i++ )\r
83                         {\r
84                                 STパッド状態 stパッド状態2 = new STパッド状態();\r
85                                 STパッド状態 stパッド状態 = stパッド状態2;\r
86                                 stパッド状態.nY座標オフセットdot = 0;\r
87                                 stパッド状態.nY座標加速度dot = 0;\r
88                                 stパッド状態.n明るさ = 0;\r
89                                 this.stパッド状態[ i ] = stパッド状態;\r
90                         }\r
91                         base.On活性化();\r
92                 }\r
93                 public override void OnManagedリソースの作成()\r
94                 {\r
95                         if( !base.b活性化してない )\r
96                         {\r
97                                 this.txパッド = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums pads.png" ) );\r
98                                 this.tx光るパッド = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums pads flush.png" ) );\r
99                                 base.OnManagedリソースの作成();\r
100                         }\r
101                 }\r
102                 public override void OnManagedリソースの解放()\r
103                 {\r
104                         if( !base.b活性化してない )\r
105                         {\r
106                                 CDTXMania.tテクスチャの解放( ref this.txパッド );\r
107                                 CDTXMania.tテクスチャの解放( ref this.tx光るパッド );\r
108                                 base.OnManagedリソースの解放();\r
109                         }\r
110                 }\r
111                 public override int On進行描画()\r
112                 {\r
113                         if( !base.b活性化してない )\r
114                         {\r
115                                 if( base.b初めての進行描画 )\r
116                                 {\r
117                                         this.nフラッシュ制御タイマ = CDTXMania.Timer.n現在時刻;\r
118                                         this.nY座標制御タイマ = CDTXMania.Timer.n現在時刻;\r
119                                         base.b初めての進行描画 = false;\r
120                                 }\r
121                                 long num = CDTXMania.Timer.n現在時刻;\r
122                                 if( num < this.nフラッシュ制御タイマ )\r
123                                 {\r
124                                         this.nフラッシュ制御タイマ = num;\r
125                                 }\r
126                                 while( ( num - this.nフラッシュ制御タイマ ) >= 15 )\r
127                                 {\r
128                                         for( int j = 0; j < 9; j++ )\r
129                                         {\r
130                                                 if( this.stパッド状態[ j ].n明るさ > 0 )\r
131                                                 {\r
132                                                         this.stパッド状態[ j ].n明るさ--;\r
133                                                 }\r
134                                         }\r
135                                         this.nフラッシュ制御タイマ += 15;\r
136                                 }\r
137                                 long num3 = CDTXMania.Timer.n現在時刻;\r
138                                 if( num3 < this.nY座標制御タイマ )\r
139                                 {\r
140                                         this.nY座標制御タイマ = num3;\r
141                                 }\r
142                                 while( ( num3 - this.nY座標制御タイマ ) >= 5 )\r
143                                 {\r
144                                         for( int k = 0; k < 9; k++ )\r
145                                         {\r
146                                                 this.stパッド状態[ k ].nY座標オフセットdot += this.stパッド状態[ k ].nY座標加速度dot;\r
147                                                 if( this.stパッド状態[ k ].nY座標オフセットdot > 15 )\r
148                                                 {\r
149                                                         this.stパッド状態[ k ].nY座標オフセットdot = 15;\r
150                                                         this.stパッド状態[ k ].nY座標加速度dot = -1;\r
151                                                 }\r
152                                                 else if( this.stパッド状態[ k ].nY座標オフセットdot < 0 )\r
153                                                 {\r
154                                                         this.stパッド状態[ k ].nY座標オフセットdot = 0;\r
155                                                         this.stパッド状態[ k ].nY座標加速度dot = 0;\r
156                                                 }\r
157                                         }\r
158                                         this.nY座標制御タイマ += 5;\r
159                                 }\r
160                                 for( int i = 0; i < 9; i++ )\r
161                                 {\r
162                                         int index = this.n描画順[ i ];\r
163                                         int x = this.st基本位置[ index ].x;\r
164                                         int y = ( this.st基本位置[ index ].y + ( CDTXMania.ConfigIni.bReverse.Drums ? -10 : 0x19e ) ) + this.stパッド状態[ index ].nY座標オフセットdot;\r
165                                         if( this.txパッド != null )\r
166                                         {\r
167                                                 this.txパッド.t2D描画( CDTXMania.app.Device, x, y, this.st基本位置[ index ].rc );\r
168                                         }\r
169                                         if( this.tx光るパッド != null )\r
170                                         {\r
171                                                 this.tx光るパッド.n透明度 = ( this.stパッド状態[ index ].n明るさ * 40 ) + 15;\r
172                                                 this.tx光るパッド.t2D描画( CDTXMania.app.Device, x, y, this.st基本位置[ index ].rc );\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 n明るさ;\r
188                         public int nY座標オフセットdot;\r
189                         public int nY座標加速度dot;\r
190                 }\r
191                 [StructLayout( LayoutKind.Sequential )]\r
192                 private struct ST基本位置\r
193                 {\r
194                         public int x;\r
195                         public int y;\r
196                         public Rectangle rc;\r
197                 }\r
198 \r
199                 private long nY座標制御タイマ;\r
200                 private long nフラッシュ制御タイマ;\r
201                 private readonly int[] n描画順 = new int[] { 3, 6, 5, 4, 2, 1, 8, 7, 0 };\r
202                 private STパッド状態[] stパッド状態 = new STパッド状態[ 9 ];\r
203                 private readonly ST基本位置[] st基本位置;\r
204                 private CTexture txパッド;\r
205                 private CTexture tx光るパッド;\r
206                 //-----------------\r
207                 #endregion\r
208         }\r
209 }\r