2 using System.Collections.Generic;
\r
4 using System.Drawing;
\r
9 internal class CAct演奏DrumsWailingBonus : CActivity
\r
13 public CAct演奏DrumsWailingBonus()
\r
15 base.b活性化してない = true;
\r
21 public void Start( E楽器パート part )
\r
23 this.Start( part, null );
\r
25 public void Start( E楽器パート part, CDTX.CChip r歓声Chip )
\r
27 if( ( part == E楽器パート.GUITAR ) || ( part == E楽器パート.BASS ) )
\r
29 int num = (int) part;
\r
30 for( int i = 0; i < 4; i++ )
\r
32 if( this.ct進行用[ num, i ].b停止中 )
\r
34 this.ct進行用[ num, i ] = new CCounter( 0, 300, 2, CDTXMania.Timer );
\r
35 if( CDTXMania.ConfigIni.b歓声を発声する )
\r
37 if( r歓声Chip != null )
\r
39 CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, 10, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
42 CDTXMania.Skin.sound歓声音.t再生する();
\r
54 public override void On活性化()
\r
56 for( int i = 0; i < 3; i++ )
\r
58 for( int j = 0; j < 4; j++ )
\r
60 this.ct進行用[ i, j ] = new CCounter();
\r
65 public override void On非活性化()
\r
67 for( int i = 0; i < 3; i++ )
\r
69 for( int j = 0; j < 4; j++ )
\r
71 this.ct進行用[ i, j ] = null;
\r
76 public override void OnManagedリソースの作成()
\r
78 if( !base.b活性化してない )
\r
80 this.txWailingBonus = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing bonus.png" ) );
\r
81 base.OnManagedリソースの作成();
\r
84 public override void OnManagedリソースの解放()
\r
86 if( !base.b活性化してない )
\r
88 CDTXMania.tテクスチャの解放( ref this.txWailingBonus );
\r
89 base.OnManagedリソースの解放();
\r
92 public override int On進行描画()
\r
94 if( !base.b活性化してない )
\r
96 for( int i = 0; i < 2; i++ )
\r
98 E楽器パート e楽器パート = ( i == 0 ) ? E楽器パート.GUITAR : E楽器パート.BASS;
\r
99 for( int j = 0; j < 4; j++ )
\r
101 if( !this.ct進行用[ (int) e楽器パート, j ].b停止中 )
\r
103 if( this.ct進行用[ (int) e楽器パート, j ].b終了値に達した )
\r
105 this.ct進行用[ (int) e楽器パート, j ].t停止();
\r
109 this.ct進行用[ (int) e楽器パート, j ].t進行();
\r
110 int x = ( ( e楽器パート == E楽器パート.GUITAR ) ? 0x1fb : 0x18e ) + 0x4e;
\r
113 int num6 = this.ct進行用[ (int) e楽器パート, j ].n現在の値;
\r
116 num4 = (int) ( 64.0 + ( 290.0 * Math.Cos( 1.5707963267948966 * ( ( (float) num6 ) / 100f ) ) ) );
\r
118 else if( num6 < 150 )
\r
120 num4 = (int) ( 64.0 + ( ( 150 - num6 ) * Math.Sin( ( 3.1415926535897931 * ( ( num6 - 100 ) % 0x19 ) ) / 25.0 ) ) );
\r
122 else if( num6 < 200 )
\r
128 num4 = (int) ( 64f - ( ( (float) ( 290 * ( num6 - 200 ) ) ) / 100f ) );
\r
130 if( CDTXMania.ConfigIni.bReverse[ (int) e楽器パート ] )
\r
132 num4 = ( 0x163 - num4 ) - 0xf4;
\r
134 Rectangle rectangle = new Rectangle( 0, 0, 0x1a, 0x7a );
\r
135 if( ( 0x163 - num4 ) < rectangle.Bottom )
\r
137 rectangle.Height = ( 0x163 - num4 ) - rectangle.Top;
\r
141 rectangle.Y = -num4;
\r
144 if( ( rectangle.Top < rectangle.Bottom ) && ( this.txWailingBonus != null ) )
\r
146 this.txWailingBonus.t2D描画( CDTXMania.app.Device, x, ( ( ( e楽器パート == E楽器パート.GUITAR ) ? 0x39 : 0x39 ) + num4 ) + num5, rectangle );
\r
149 rectangle = new Rectangle( 0x1a, 0, 0x1a, 0x7a );
\r
150 if( ( 0x163 - ( num4 + 0x7a ) ) < rectangle.Bottom )
\r
152 rectangle.Height = ( 0x163 - ( num4 + 0x7a ) ) - rectangle.Top;
\r
154 if( ( num4 + 0x7a ) < 0 )
\r
156 rectangle.Y = -( num4 + 0x7a );
\r
157 num5 = -( num4 + 0x7a );
\r
159 if( ( rectangle.Top < rectangle.Bottom ) && ( this.txWailingBonus != null ) )
\r
161 this.txWailingBonus.t2D描画( CDTXMania.app.Device, x, ( ( ( ( e楽器パート == E楽器パート.GUITAR ) ? 0x39 : 0x39 ) + num4 ) + num5 ) + 0x7a, rectangle );
\r
174 #region [ private ]
\r
175 //-----------------
\r
176 private CCounter[,] ct進行用 = new CCounter[ 3, 4 ];
\r
177 private CTexture txWailingBonus;
\r
178 //-----------------
\r