OSDN Git Service

#23670 エラー発生時強制終了する前に例外の内容をダイアログ表示するようにした。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 08.結果 / CStage結果.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Diagnostics;\r
5 using FDK;\r
6 \r
7 namespace DTXMania\r
8 {\r
9         internal class CStage結果 : CStage\r
10         {\r
11                 // プロパティ\r
12 \r
13                 public STDGBVALUE<bool> b新記録スキル;\r
14                 public STDGBVALUE<bool> b新記録スコア;\r
15         public STDGBVALUE<bool> b新記録ランク;\r
16                 public STDGBVALUE<float> fPerfect率;\r
17                 public STDGBVALUE<float> fGreat率;\r
18                 public STDGBVALUE<float> fGood率;\r
19                 public STDGBVALUE<float> fPoor率;\r
20         public STDGBVALUE<float> fMiss率;\r
21         public STDGBVALUE<bool> bオート;        // #23596 10.11.16 add ikanick\r
22                                                 //        10.11.17 change (int to bool) ikanick\r
23                 public STDGBVALUE<int> nランク値;\r
24                 public STDGBVALUE<int> n演奏回数;\r
25                 public int n総合ランク値;\r
26                 public CDTX.CChip[] r空うちドラムチップ;\r
27                 public STDGBVALUE<CScoreIni.C演奏記録> st演奏記録;\r
28 \r
29 \r
30                 // コンストラクタ\r
31 \r
32                 public CStage結果()\r
33                 {\r
34 //                      STDGBVALUE<CScoreIni.C演奏記録> stdgbvalue = new STDGBVALUE<CScoreIni.C演奏記録>();\r
35                         this.st演奏記録.Drums = new CScoreIni.C演奏記録();\r
36                         this.st演奏記録.Guitar = new CScoreIni.C演奏記録();\r
37                         this.st演奏記録.Bass = new CScoreIni.C演奏記録();\r
38 //                      this.st演奏記録 = stdgbvalue;\r
39                         this.r空うちドラムチップ = new CDTX.CChip[ 10 ];\r
40                         this.n総合ランク値 = -1;\r
41                         this.nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
42                         base.eステージID = CStage.Eステージ.結果;\r
43                         base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
44                         base.b活性化してない = true;\r
45                         base.list子Activities.Add( this.actResultImage = new CActResultImage() );\r
46                         base.list子Activities.Add( this.actParameterPanel = new CActResultParameterPanel() );\r
47                         base.list子Activities.Add( this.actRank = new CActResultRank() );\r
48                         base.list子Activities.Add( this.actSongBar = new CActResultSongBar() );\r
49                         base.list子Activities.Add( this.actOption = new CActオプションパネル() );\r
50                         base.list子Activities.Add( this.actFI = new CActFIFOWhite() );\r
51                         base.list子Activities.Add( this.actFO = new CActFIFOBlack() );\r
52                 }\r
53 \r
54                 \r
55                 // CStage 実装\r
56 \r
57                 public override void On活性化()\r
58                 {\r
59                         Trace.TraceInformation( "結果ステージを活性化します。" );\r
60                         Trace.Indent();\r
61                         try\r
62                         {\r
63                                 #region [ 初期化 ]\r
64                                 //---------------------\r
65                                 this.eフェードアウト完了時の戻り値 = E戻り値.継続;\r
66                                 this.bアニメが完了 = false;\r
67                                 this.n最後に再生したHHのWAV番号 = -1;\r
68                                 this.n最後に再生したHHのチャンネル番号 = 0;\r
69                                 for( int i = 0; i < 3; i++ )\r
70                                 {\r
71                                         this.b新記録スキル[ i ] = false;\r
72                     this.b新記録スコア[ i ] = false;\r
73                     this.b新記録ランク[ i ] = false;\r
74                                 }\r
75                                 //---------------------\r
76                                 #endregion\r
77 \r
78                                 #region [ 結果の計算 ]\r
79                                 //---------------------\r
80                                 for( int i = 0; i < 3; i++ )\r
81                                 {\r
82                                         this.nランク値[ i ] = -1;\r
83                                         if ( ( ( ( i != 0 ) || ( CDTXMania.DTX.bチップがある.Drums && !CDTXMania.ConfigIni.bギタレボモード ) ) && ( ( i != 1 ) || CDTXMania.DTX.bチップがある.Guitar ) ) && ( ( i != 2 ) || CDTXMania.DTX.bチップがある.Bass ) )\r
84                                         {\r
85                                                 CScoreIni.C演奏記録 part = this.st演奏記録[ i ];\r
86                                                 bool bIsAutoPlay = true;\r
87                                                 switch( i )\r
88                                                 {\r
89                                                         case 0:\r
90                                 bIsAutoPlay = CDTXMania.ConfigIni.bドラムが全部オートプレイである;\r
91                                                                 break;\r
92 \r
93                                                         case 1:\r
94                                                                 bIsAutoPlay = CDTXMania.ConfigIni.bAutoPlay.Guitar;\r
95                                                                 break;\r
96 \r
97                                                         case 2:\r
98                                                                 bIsAutoPlay = CDTXMania.ConfigIni.bAutoPlay.Bass;\r
99                                                                 break;\r
100                                                 }\r
101                                                 this.fPerfect率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nPerfect数 ) / ( (float) part.n全チップ数 ) );\r
102                                                 this.fGreat率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nGreat数 ) / ( (float) part.n全チップ数 ) );\r
103                                                 this.fGood率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nGood数 ) / ( (float) part.n全チップ数 ) );\r
104                                                 this.fPoor率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nPoor数 ) / ( (float) part.n全チップ数 ) );\r
105                                                 this.fMiss率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nMiss数 ) / ( (float) part.n全チップ数 ) );\r
106                                                 this.bオート[ i ] = bIsAutoPlay;     // #23596 10.11.16 add ikanick そのパートがオートなら1\r
107                                                                                                                         //        10.11.17 change (int to bool) ikanick\r
108                                                 this.nランク値[ i ] = CScoreIni.tランク値を計算して返す( part );\r
109 //Debug.WriteLine( "rank[" + i + "]=" + this.nランク値[ i ] );\r
110 //if ( this.nランク値[ i ] != -1 )\r
111 //{\r
112 //      this.n総合ランク値 = Math.Min( this.n総合ランク値, this.nランク値[ i ] );\r
113 //}\r
114                                         }\r
115                                 }\r
116                                 this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す( this.st演奏記録.Drums, this.st演奏記録.Guitar, this.st演奏記録.Bass );\r
117                                 //---------------------\r
118                                 #endregion\r
119 \r
120                                 #region [ .score.ini の作成と出力 ]\r
121                                 //---------------------\r
122                                 string str = CDTXMania.DTX.strファイル名の絶対パス + ".score.ini";\r
123                                 CScoreIni ini = new CScoreIni( str );\r
124 \r
125                                 bool[] b今までにフルコンボしたことがある = new bool[] { false, false, false };\r
126 \r
127                                 for( int i = 0; i < 3; i++ )\r
128                                 {\r
129                                         // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)\r
130                                         \r
131                                         b今までにフルコンボしたことがある[ i ] = ini.stセクション[ i * 2 ].bフルコンボである | ini.stセクション[ i * 2 + 1 ].bフルコンボである;\r
132 \r
133                         //              if( this.nランク値[ i ] <= CScoreIni.tランク値を計算して返す( ini.stセクション[ ( i * 2 ) + 1 ] ) )\r
134                         //              {\r
135                         //                      this.b新記録ランク[ i ] = true;\r
136                         //              }\r
137                                         // 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更\r
138                                         if ( this.nランク値[ i ] >= 0 && ini.stファイル.BestRank[ i ] > this.nランク値[ i ] )               // #24459 2011.3.1 yyagi update BestRank\r
139                                         {\r
140                                                 this.b新記録ランク[ i ] = true;\r
141                                                 ini.stファイル.BestRank[ i ] = this.nランク値[ i ];\r
142                                         }\r
143 \r
144                                         // 新記録スコアチェック\r
145                                         if( this.st演奏記録[ i ].nスコア > ini.stセクション[ i * 2 ].nスコア )\r
146                                         {\r
147                                                 this.b新記録スコア[ i ] = true;\r
148                                                 ini.stセクション[ i * 2 ] = this.st演奏記録[ i ];\r
149                                         }\r
150 \r
151                     // 新記録スキルチェック\r
152                     if (this.st演奏記録[i].db演奏型スキル値 > ini.stセクション[(i * 2) + 1].db演奏型スキル値)\r
153                     {\r
154                         this.b新記録スキル[ i ] = true;\r
155                         ini.stセクション[(i * 2) + 1] = this.st演奏記録[ i ];\r
156                     }\r
157                     // ラストプレイ #23595 2011.1.9 ikanick\r
158                     // オートじゃなければプレイ結果を書き込む\r
159                     if (this.bオート[ i ] == false) {\r
160                         ini.stセクション[i + 6] = this.st演奏記録[ i ];\r
161                     }\r
162 \r
163                     // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす\r
164                     //        11.02.05 bオート to t更新条件を取得する use      ikanick\r
165                                         bool[] b更新が必要か否か = new bool[ 3 ];\r
166                                         CScoreIni.t更新条件を取得する( out b更新が必要か否か[ 0 ], out b更新が必要か否か[ 1 ], out b更新が必要か否か[ 2 ] );\r
167 \r
168                     if (b更新が必要か否か[ i ])\r
169                     {\r
170                         switch ( i )\r
171                         {\r
172                             case 0:\r
173                                 ini.stファイル.ClearCountDrums++;\r
174                                 break;\r
175                             case 1:\r
176                                 ini.stファイル.ClearCountGuitar++;\r
177                                 break;\r
178                             case 2:\r
179                                 ini.stファイル.ClearCountBass++;\r
180                                 break;\r
181                             default:\r
182                                 throw new Exception("クリア回数増加のk(0-2)が範囲外です。");\r
183                         }\r
184                     }\r
185                     //---------------------------------------------------------------------/\r
186                                 }\r
187                                 ini.t書き出し( str );\r
188                                 //---------------------\r
189                                 #endregion\r
190 \r
191                                 #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi]\r
192                                 this.n演奏回数.Drums = ini.stファイル.PlayCountDrums;\r
193                                 this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar;\r
194                                 this.n演奏回数.Bass = ini.stファイル.PlayCountBass;\r
195                                 #endregion\r
196                                 #region [ 選曲画面の譜面情報の更新 ]\r
197                                 //---------------------\r
198                                 if( !CDTXMania.bコンパクトモード )\r
199                                 {\r
200                                         Cスコア cスコア = CDTXMania.stage選曲.r確定されたスコア;\r
201                                         bool[] b更新が必要か否か = new bool[ 3 ];\r
202                                         CScoreIni.t更新条件を取得する( out b更新が必要か否か[ 0 ], out b更新が必要か否か[ 1 ], out b更新が必要か否か[ 2 ] );\r
203                                         for( int m = 0; m < 3; m++ )\r
204                                         {\r
205                                                 if( b更新が必要か否か[ m ] )\r
206                                                 {\r
207                                                         // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。\r
208                                                         // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11)\r
209                                                         cスコア.譜面情報.フルコンボ[ m ] = this.st演奏記録[ m ].bフルコンボである | b今までにフルコンボしたことがある[ m ];\r
210 \r
211                                                         if( this.b新記録スキル[ m ] )\r
212                                                         {\r
213                                                                 cスコア.譜面情報.最大スキル[ m ] = this.st演奏記録[ m ].db演奏型スキル値;\r
214                             }\r
215 \r
216                             if (this.b新記録ランク[ m ])\r
217                             {\r
218                                 cスコア.譜面情報.最大ランク[ m ] = this.nランク値[ m ];\r
219                             }\r
220                                                 }\r
221                                         }\r
222                                 }\r
223                                 //---------------------\r
224                                 #endregion\r
225 \r
226                                 #region [ #RESULTSOUND_xx の再生(あれば)]\r
227                                 //---------------------\r
228                                 int rank = CScoreIni.t総合ランク値を計算して返す( this.st演奏記録.Drums, this.st演奏記録.Guitar, this.st演奏記録.Bass );\r
229 \r
230                                 if (rank == 99) // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
231                                 {\r
232                                         rank = 6;\r
233                                 }\r
234         \r
235                                 if( string.IsNullOrEmpty( CDTXMania.DTX.RESULTSOUND[ rank ] ) )\r
236                                 {\r
237                                         CDTXMania.Skin.soundステージクリア音.t再生する();\r
238                                         this.rResultSound = null;\r
239                                 }\r
240                                 else\r
241                                 {\r
242                                         string str2 = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.RESULTSOUND[ rank ];\r
243                                         try\r
244                                         {\r
245                                                 this.rResultSound = CDTXMania.Sound管理.tサウンドを生成する( str2 );\r
246                                         }\r
247                                         catch\r
248                                         {\r
249                                                 Trace.TraceError( "サウンドの生成に失敗しました。({0})", new object[] { str2 } );\r
250                                                 this.rResultSound = null;\r
251                                         }\r
252                                 }\r
253                                 //---------------------\r
254                                 #endregion\r
255 \r
256                                 base.On活性化();\r
257                         }\r
258                         finally\r
259                         {\r
260                                 Trace.TraceInformation( "結果ステージの活性化を完了しました。" );\r
261                                 Trace.Unindent();\r
262                         }\r
263                 }\r
264                 public override void On非活性化()\r
265                 {\r
266                         if( this.rResultSound != null )\r
267                         {\r
268                                 CDTXMania.Sound管理.tサウンドを破棄する( this.rResultSound );\r
269                                 this.rResultSound = null;\r
270                         }\r
271                         base.On非活性化();\r
272                 }\r
273                 public override void OnManagedリソースの作成()\r
274                 {\r
275                         if( !base.b活性化してない )\r
276                         {\r
277                                 this.tx背景 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenResult background.jpg" ) );\r
278                                 this.tx上部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenResult header panel.png" ), true );\r
279                                 this.tx下部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenResult footer panel.png" ), true );\r
280                                 this.txオプションパネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\Screen option panels.png" ) );\r
281                                 base.OnManagedリソースの作成();\r
282                         }\r
283                 }\r
284                 public override void OnManagedリソースの解放()\r
285                 {\r
286                         if( !base.b活性化してない )\r
287                         {\r
288                                 if( this.ct登場用 != null )\r
289                                 {\r
290                                         this.ct登場用 = null;\r
291                                 }\r
292                                 CDTXMania.tテクスチャの解放( ref this.tx背景 );\r
293                                 CDTXMania.tテクスチャの解放( ref this.tx上部パネル );\r
294                                 CDTXMania.tテクスチャの解放( ref this.tx下部パネル );\r
295                                 CDTXMania.tテクスチャの解放( ref this.txオプションパネル );\r
296                                 base.OnManagedリソースの解放();\r
297                         }\r
298                 }\r
299                 public override int On進行描画()\r
300                 {\r
301                         if( !base.b活性化してない )\r
302                         {\r
303                                 int num;\r
304                                 if( base.b初めての進行描画 )\r
305                                 {\r
306                                         this.ct登場用 = new CCounter( 0, 100, 5, CDTXMania.Timer );\r
307                                         this.actFI.tフェードイン開始();\r
308                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
309                                         if( this.rResultSound != null )\r
310                                         {\r
311                                                 this.rResultSound.t再生を開始する();\r
312                                         }\r
313                                         base.b初めての進行描画 = false;\r
314                                 }\r
315                                 this.bアニメが完了 = true;\r
316                                 if( this.ct登場用.b進行中 )\r
317                                 {\r
318                                         this.ct登場用.t進行();\r
319                                         if( this.ct登場用.b終了値に達した )\r
320                                         {\r
321                                                 this.ct登場用.t停止();\r
322                                         }\r
323                                         else\r
324                                         {\r
325                                                 this.bアニメが完了 = false;\r
326                                         }\r
327                                 }\r
328 \r
329                                 // 描画\r
330 \r
331                                 if( this.tx背景 != null )\r
332                                 {\r
333                                         this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );\r
334                                 }\r
335                                 if( this.ct登場用.b進行中 && ( this.tx上部パネル != null ) )\r
336                                 {\r
337                                         double num2 = ( (double) this.ct登場用.n現在の値 ) / 100.0;\r
338                                         double num3 = Math.Sin( 1.5707963267948966 * num2 );\r
339                                         num = ( (int) ( this.tx上部パネル.sz画像サイズ.Height * num3 ) ) - this.tx上部パネル.sz画像サイズ.Height;\r
340                                 }\r
341                                 else\r
342                                 {\r
343                                         num = 0;\r
344                                 }\r
345                                 if( this.tx上部パネル != null )\r
346                                 {\r
347                                         this.tx上部パネル.t2D描画( CDTXMania.app.Device, 0, num );\r
348                                 }\r
349                                 if( this.tx下部パネル != null )\r
350                                 {\r
351                                         this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, 480 - this.tx下部パネル.sz画像サイズ.Height );\r
352                                 }\r
353                                 this.actOption.On進行描画();\r
354                                 if( this.actResultImage.On進行描画() == 0 )\r
355                                 {\r
356                                         this.bアニメが完了 = false;\r
357                                 }\r
358                                 if( this.actParameterPanel.On進行描画() == 0 )\r
359                                 {\r
360                                         this.bアニメが完了 = false;\r
361                                 }\r
362                                 if( this.actRank.On進行描画() == 0 )\r
363                                 {\r
364                                         this.bアニメが完了 = false;\r
365                                 }\r
366                                 if( this.actSongBar.On進行描画() == 0 )\r
367                                 {\r
368                                         this.bアニメが完了 = false;\r
369                                 }\r
370                                 if( base.eフェーズID == CStage.Eフェーズ.共通_フェードイン )\r
371                                 {\r
372                                         if( this.actFI.On進行描画() != 0 )\r
373                                         {\r
374                                                 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
375                                         }\r
376                                 }\r
377                                 else if( ( base.eフェーズID == CStage.Eフェーズ.共通_フェードアウト ) && ( this.actFO.On進行描画() != 0 ) )\r
378                                 {\r
379                                         return (int) this.eフェードアウト完了時の戻り値;\r
380                                 }\r
381 \r
382                                 // キー入力\r
383 \r
384                                 if( CDTXMania.act現在入力を占有中のプラグイン == null )\r
385                                 {\r
386                                         if( CDTXMania.ConfigIni.bドラム打音を発声する && CDTXMania.ConfigIni.bDrums有効 )\r
387                                         {\r
388                                                 for( int i = 0; i < 10; i++ )\r
389                                                 {\r
390                                                         List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.DRUMS, (Eパッド) i );\r
391                                                         if( ( events != null ) && ( events.Count > 0 ) )\r
392                                                         {\r
393                                                                 foreach( STInputEvent event2 in events )\r
394                                                                 {\r
395                                                                         if( !event2.b押された )\r
396                                                                         {\r
397                                                                                 continue;\r
398                                                                         }\r
399                                                                         CDTX.CChip rChip = this.r空うちドラムチップ[ i ];\r
400                                                                         if( rChip == null )\r
401                                                                         {\r
402                                                                                 switch( ( (Eパッド) i ) )\r
403                                                                                 {\r
404                                                                                         case Eパッド.HH:\r
405                                                                                                 rChip = this.r空うちドラムチップ[ 7 ];\r
406                                                                                                 if( rChip == null )\r
407                                                                                                 {\r
408                                                                                                         rChip = this.r空うちドラムチップ[ 9 ];\r
409                                                                                                 }\r
410                                                                                                 break;\r
411 \r
412                                                                                         case Eパッド.FT:\r
413                                                                                                 rChip = this.r空うちドラムチップ[ 4 ];\r
414                                                                                                 break;\r
415 \r
416                                                                                         case Eパッド.CY:\r
417                                                                                                 rChip = this.r空うちドラムチップ[ 8 ];\r
418                                                                                                 break;\r
419 \r
420                                                                                         case Eパッド.HHO:\r
421                                                                                                 rChip = this.r空うちドラムチップ[ 0 ];\r
422                                                                                                 if( rChip == null )\r
423                                                                                                 {\r
424                                                                                                         rChip = this.r空うちドラムチップ[ 9 ];\r
425                                                                                                 }\r
426                                                                                                 break;\r
427 \r
428                                                                                         case Eパッド.RD:\r
429                                                                                                 rChip = this.r空うちドラムチップ[ 6 ];\r
430                                                                                                 break;\r
431 \r
432                                                                                         case Eパッド.LC:\r
433                                                                                                 rChip = this.r空うちドラムチップ[ 0 ];\r
434                                                                                                 if( rChip == null )\r
435                                                                                                 {\r
436                                                                                                         rChip = this.r空うちドラムチップ[ 7 ];\r
437                                                                                                 }\r
438                                                                                                 break;\r
439                                                                                 }\r
440                                                                         }\r
441                                                                         if( ( ( rChip != null ) && ( rChip.nチャンネル番号 >= 0x11 ) ) && ( rChip.nチャンネル番号 <= 0x1a ) )\r
442                                                                         {\r
443                                                                                 int nLane = this.nチャンネル0Atoレーン07[ rChip.nチャンネル番号 - 0x11 ];\r
444                                                                                 if( ( nLane == 1 ) && ( ( rChip.nチャンネル番号 == 0x11 ) || ( ( rChip.nチャンネル番号 == 0x18 ) && ( this.n最後に再生したHHのチャンネル番号 != 0x18 ) ) ) )\r
445                                                                                 {\r
446                                                                                         CDTXMania.DTX.tWavの再生停止( this.n最後に再生したHHのWAV番号 );\r
447                                                                                         this.n最後に再生したHHのWAV番号 = rChip.n整数値・内部番号;\r
448                                                                                         this.n最後に再生したHHのチャンネル番号 = rChip.nチャンネル番号;\r
449                                                                                 }\r
450                                                                                 CDTXMania.DTX.tチップの再生( rChip, CDTXMania.Timer.nシステム時刻, nLane, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );\r
451                                                                         }\r
452                                                                 }\r
453                                                         }\r
454                                                 }\r
455                                         }\r
456                                         if( ( ( CDTXMania.Pad.b押されたDGB( Eパッド.CY ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.RD ) ) || ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LC ) || CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Return ) ) ) && !this.bアニメが完了 )\r
457                                         {\r
458                                                 this.actResultImage.tアニメを完了させる();\r
459                                                 this.actParameterPanel.tアニメを完了させる();\r
460                                                 this.actRank.tアニメを完了させる();\r
461                                                 this.actSongBar.tアニメを完了させる();\r
462                                                 this.ct登場用.t停止();\r
463                                         }\r
464                                         if( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 )\r
465                                         {\r
466                                                 if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Escape ) )\r
467                                                 {\r
468                                                         CDTXMania.Skin.sound取消音.t再生する();\r
469                                                         this.actFO.tフェードアウト開始();\r
470                                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
471                                                         this.eフェードアウト完了時の戻り値 = E戻り値.完了;\r
472                                                 }\r
473                                                 if ( ( ( CDTXMania.Pad.b押されたDGB( Eパッド.CY ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.RD ) ) || ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LC ) || CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.Return ) ) ) && this.bアニメが完了 )\r
474                                                 {\r
475                                                         CDTXMania.Skin.sound取消音.t再生する();\r
476                                                         this.actFO.tフェードアウト開始();\r
477                                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
478                                                         this.eフェードアウト完了時の戻り値 = E戻り値.完了;\r
479                                                 }\r
480                                         }\r
481                                 }\r
482                         }\r
483                         return 0;\r
484                 }\r
485                 public enum E戻り値 : int\r
486                 {\r
487                         継続,\r
488                         完了\r
489                 }\r
490 \r
491 \r
492                 // その他\r
493 \r
494                 #region [ private ]\r
495                 //-----------------\r
496                 private CCounter ct登場用;\r
497                 private E戻り値 eフェードアウト完了時の戻り値;\r
498                 private CActFIFOWhite actFI;\r
499                 private CActFIFOBlack actFO;\r
500                 private CActオプションパネル actOption;\r
501                 private CActResultParameterPanel actParameterPanel;\r
502                 private CActResultRank actRank;\r
503                 private CActResultImage actResultImage;\r
504                 private CActResultSongBar actSongBar;\r
505                 private bool bアニメが完了;\r
506                 private readonly int[] nチャンネル0Atoレーン07;\r
507                 private int n最後に再生したHHのWAV番号;\r
508                 private int n最後に再生したHHのチャンネル番号;\r
509                 private CSound rResultSound;\r
510                 private CTexture txオプションパネル;\r
511                 private CTexture tx下部パネル;\r
512                 private CTexture tx上部パネル;\r
513                 private CTexture tx背景;\r
514                 //-----------------\r
515                 #endregion\r
516         }\r
517 }\r