OSDN Git Service

e46a25ecd2b586cee6ba89bbee26b57d641333c1
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ギター画面 / CAct演奏GuitarWailingBonus.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Drawing;\r
5 using FDK;\r
6 \r
7 namespace DTXMania\r
8 {\r
9         internal class CAct演奏GuitarWailingBonus : CActivity\r
10         {\r
11                 // メソッド\r
12 \r
13                 public CAct演奏GuitarWailingBonus()\r
14                 {\r
15                         base.b活性化してない = true;\r
16                 }\r
17                 public void Start( E楽器パート part )\r
18                 {\r
19                         this.Start( part, null );\r
20                 }\r
21                 public void Start( E楽器パート part, CDTX.CChip r歓声Chip )\r
22                 {\r
23                         if( part != E楽器パート.DRUMS )\r
24                         {\r
25                                 for( int i = 0; i < 4; i++ )\r
26                                 {\r
27                                         if( ( this.ct進行用[ (int) part, i ] == null ) || this.ct進行用[ (int) part, i ].b停止中 )\r
28                                         {\r
29                                                 this.ct進行用[ (int) part, i ] = new CCounter( 0, 300, 2, CDTXMania.Timer );\r
30                                                 if( CDTXMania.ConfigIni.b歓声を発声する )\r
31                                                 {\r
32                                                         if( r歓声Chip != null )\r
33                                                         {\r
34                                                                 CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, 10, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
35                                                                 return;\r
36                                                         }\r
37                                                         CDTXMania.Skin.sound歓声音.n位置・次に鳴るサウンド = ( part == E楽器パート.GUITAR ) ? -50 : 50;\r
38                                                         CDTXMania.Skin.sound歓声音.t再生する();\r
39                                                         return;\r
40                                                 }\r
41                                                 break;\r
42                                         }\r
43                                 }\r
44                         }\r
45                 }\r
46 \r
47 \r
48                 // CActivity 実装\r
49 \r
50                 public override void On活性化()\r
51                 {\r
52                         for( int i = 0; i < 3; i++ )\r
53                         {\r
54                                 for( int j = 0; j < 4; j++ )\r
55                                 {\r
56                                         this.ct進行用[ i, j ] = null;\r
57                                 }\r
58                         }\r
59                         base.On活性化();\r
60                 }\r
61                 public override void OnManagedリソースの作成()\r
62                 {\r
63                         if( !base.b活性化してない )\r
64                         {\r
65                                 this.txWailingBonus = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing bonus.png" ) );\r
66                                 base.OnManagedリソースの作成();\r
67                         }\r
68                 }\r
69                 public override void OnManagedリソースの解放()\r
70                 {\r
71                         if( !base.b活性化してない )\r
72                         {\r
73                                 CDTXMania.tテクスチャの解放( ref this.txWailingBonus );\r
74                                 base.OnManagedリソースの解放();\r
75                         }\r
76                 }\r
77                 public override int On進行描画()\r
78                 {\r
79                         if( !base.b活性化してない )\r
80                         {\r
81                                 for( int i = 0; i < 2; i++ )\r
82                                 {\r
83                                         E楽器パート e楽器パート = ( i == 0 ) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
84                                         for( int k = 0; k < 4; k++ )\r
85                                         {\r
86                                                 if( ( this.ct進行用[ (int) e楽器パート, k ] != null ) && !this.ct進行用[ (int) e楽器パート, k ].b停止中 )\r
87                                                 {\r
88                                                         if( this.ct進行用[ (int) e楽器パート, k ].b終了値に達した )\r
89                                                         {\r
90                                                                 this.ct進行用[ (int) e楽器パート, k ].t停止();\r
91                                                         }\r
92                                                         else\r
93                                                         {\r
94                                                                 this.ct進行用[ (int) e楽器パート, k ].t進行();\r
95                                                         }\r
96                                                 }\r
97                                         }\r
98                                 }\r
99                                 for( int j = 0; j < 2; j++ )\r
100                                 {\r
101                                         E楽器パート e楽器パート2 = ( j == 0 ) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
102                                         for( int m = 0; m < 4; m++ )\r
103                                         {\r
104                                                 if( ( this.ct進行用[ (int) e楽器パート2, m ] != null ) && !this.ct進行用[ (int) e楽器パート2, m ].b停止中 )\r
105                                                 {\r
106                                                         int x = ( ( e楽器パート2 == E楽器パート.GUITAR ) ? 0x1a : 480 ) + 0x71;\r
107                                                         int num6 = 0;\r
108                                                         int num7 = 0;\r
109                                                         int num8 = this.ct進行用[ (int) e楽器パート2, m ].n現在の値;\r
110                                                         if( num8 < 100 )\r
111                                                         {\r
112                                                                 num6 = (int) ( 64.0 + ( 290.0 * Math.Cos( 1.5707963267948966 * ( ( (double) num8 ) / 100.0 ) ) ) );\r
113                                                         }\r
114                                                         else if( num8 < 150 )\r
115                                                         {\r
116                                                                 num6 = (int) ( 64.0 + ( ( 150 - num8 ) * Math.Sin( ( 3.1415926535897931 * ( ( num8 - 100 ) % 0x19 ) ) / 25.0 ) ) );\r
117                                                         }\r
118                                                         else if( num8 < 200 )\r
119                                                         {\r
120                                                                 num6 = 0x40;\r
121                                                         }\r
122                                                         else\r
123                                                         {\r
124                                                                 num6 = (int) ( 64.0 - ( ( (double) ( 290 * ( num8 - 200 ) ) ) / 100.0 ) );\r
125                                                         }\r
126                                                         if( CDTXMania.ConfigIni.bReverse[ (int) e楽器パート2 ] )\r
127                                                         {\r
128                                                                 num6 = ( 0x199 - num6 ) - 0xf4;\r
129                                                         }\r
130                                                         Rectangle rectangle = new Rectangle( 0, 0, 0x1a, 0x7a );\r
131                                                         if( ( 0x199 - num6 ) < rectangle.Bottom )\r
132                                                         {\r
133                                                                 rectangle.Height = ( 0x199 - num6 ) - rectangle.Top;\r
134                                                         }\r
135                                                         if( num6 < 0 )\r
136                                                         {\r
137                                                                 rectangle.Y = -num6;\r
138                                                                 rectangle.Height -= -num6;\r
139                                                                 num7 = -num6;\r
140                                                         }\r
141                                                         if( ( rectangle.Top < rectangle.Bottom ) && ( this.txWailingBonus != null ) )\r
142                                                         {\r
143                                                                 this.txWailingBonus.t2D描画( CDTXMania.app.Device, x, num6 + num7, rectangle );\r
144                                                         }\r
145                                                         num7 = 0;\r
146                                                         rectangle = new Rectangle( 0x1a, 0, 0x1a, 0x7a );\r
147                                                         if( ( 0x199 - ( num6 + 0x7a ) ) < rectangle.Bottom )\r
148                                                         {\r
149                                                                 rectangle.Height = ( 0x199 - ( num6 + 0x7a ) ) - rectangle.Top;\r
150                                                         }\r
151                                                         if( ( num6 + 0x7a ) < 0 )\r
152                                                         {\r
153                                                                 rectangle.Y = -( num6 + 0x7a );\r
154                                                                 rectangle.Height -= rectangle.Y;\r
155                                                                 num7 = -( num6 + 0x7a );\r
156                                                         }\r
157                                                         if( ( rectangle.Top < rectangle.Bottom ) && ( this.txWailingBonus != null ) )\r
158                                                         {\r
159                                                                 this.txWailingBonus.t2D描画( CDTXMania.app.Device, x, ( num6 + num7 ) + 0x7a, rectangle );\r
160                                                         }\r
161                                                 }\r
162                                         }\r
163                                 }\r
164                         }\r
165                         return 0;\r
166                 }\r
167                 \r
168 \r
169                 // その他\r
170 \r
171                 #region [ private ]\r
172                 //-----------------\r
173                 private CCounter[,] ct進行用 = new CCounter[ 3, 4 ];\r
174                 private CTexture txWailingBonus;\r
175                 //-----------------\r
176                 #endregion\r
177         }\r
178 }\r