2 using System.Collections.Generic;
\r
4 using System.Runtime.InteropServices;
\r
5 using System.Drawing;
\r
10 internal class CAct演奏Drumsパッド : CActivity
\r
14 public CAct演奏Drumsパッド()
\r
16 ST基本位置[] st基本位置Array = new ST基本位置[ 9 ];
\r
17 ST基本位置 st基本位置 = new ST基本位置();
\r
20 st基本位置.rc = new Rectangle( 0, 0, 0x40, 0x40 );
\r
21 st基本位置Array[ 0 ] = st基本位置;
\r
22 ST基本位置 st基本位置2 = new ST基本位置();
\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
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
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
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
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
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
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
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
69 public void Hit( int nLane )
\r
71 this.stパッド状態[ nLane ].n明るさ = 6;
\r
72 this.stパッド状態[ nLane ].nY座標加速度dot = 2;
\r
78 public override void On活性化()
\r
80 this.nフラッシュ制御タイマ = -1;
\r
81 this.nY座標制御タイマ = -1;
\r
82 for( int i = 0; i < 9; i++ )
\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
89 this.stパッド状態[ i ] = stパッド状態;
\r
93 public override void OnManagedリソースの作成()
\r
95 if( !base.b活性化してない )
\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
102 public override void OnManagedリソースの解放()
\r
104 if( !base.b活性化してない )
\r
106 CDTXMania.tテクスチャの解放( ref this.txパッド );
\r
107 CDTXMania.tテクスチャの解放( ref this.tx光るパッド );
\r
108 base.OnManagedリソースの解放();
\r
111 public override int On進行描画()
\r
113 if( !base.b活性化してない )
\r
115 if( base.b初めての進行描画 )
\r
117 this.nフラッシュ制御タイマ = CDTXMania.Timer.n現在時刻;
\r
118 this.nY座標制御タイマ = CDTXMania.Timer.n現在時刻;
\r
119 base.b初めての進行描画 = false;
\r
121 long num = CDTXMania.Timer.n現在時刻;
\r
122 if( num < this.nフラッシュ制御タイマ )
\r
124 this.nフラッシュ制御タイマ = num;
\r
126 while( ( num - this.nフラッシュ制御タイマ ) >= 15 )
\r
128 for( int j = 0; j < 9; j++ )
\r
130 if( this.stパッド状態[ j ].n明るさ > 0 )
\r
132 this.stパッド状態[ j ].n明るさ--;
\r
135 this.nフラッシュ制御タイマ += 15;
\r
137 long num3 = CDTXMania.Timer.n現在時刻;
\r
138 if( num3 < this.nY座標制御タイマ )
\r
140 this.nY座標制御タイマ = num3;
\r
142 while( ( num3 - this.nY座標制御タイマ ) >= 5 )
\r
144 for( int k = 0; k < 9; k++ )
\r
146 this.stパッド状態[ k ].nY座標オフセットdot += this.stパッド状態[ k ].nY座標加速度dot;
\r
147 if( this.stパッド状態[ k ].nY座標オフセットdot > 15 )
\r
149 this.stパッド状態[ k ].nY座標オフセットdot = 15;
\r
150 this.stパッド状態[ k ].nY座標加速度dot = -1;
\r
152 else if( this.stパッド状態[ k ].nY座標オフセットdot < 0 )
\r
154 this.stパッド状態[ k ].nY座標オフセットdot = 0;
\r
155 this.stパッド状態[ k ].nY座標加速度dot = 0;
\r
158 this.nY座標制御タイマ += 5;
\r
160 for( int i = 0; i < 9; i++ )
\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
167 this.txパッド.t2D描画( CDTXMania.app.Device, x, y, this.st基本位置[ index ].rc );
\r
169 if( this.tx光るパッド != null )
\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
182 #region [ private ]
\r
183 //-----------------
\r
184 [StructLayout( LayoutKind.Sequential )]
\r
185 private struct STパッド状態
\r
188 public int nY座標オフセットdot;
\r
189 public int nY座標加速度dot;
\r
191 [StructLayout( LayoutKind.Sequential )]
\r
192 private struct ST基本位置
\r
196 public Rectangle rc;
\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