OSDN Git Service

#23670 エラー発生時強制終了する前に例外の内容をダイアログ表示するようにした。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 08.結果 / CStage結果.cs
index bf9999b..38fdf00 100644 (file)
@@ -77,14 +77,14 @@ namespace DTXMania
 \r
                                #region [ 結果の計算 ]\r
                                //---------------------\r
-                               for( int j = 0; j < 3; j++ )\r
+                               for( int i = 0; i < 3; i++ )\r
                                {\r
-                                       this.nランク値[ j ] = -1;\r
-                                       if( ( ( ( j != 0 ) || ( CDTXMania.DTX.bチップがある.Drums && !CDTXMania.ConfigIni.bギタレボモード ) ) && ( ( j != 1 ) || CDTXMania.DTX.bチップがある.Guitar ) ) && ( ( j != 2 ) || CDTXMania.DTX.bチップがある.Bass ) )\r
+                                       this.nランク値[ i ] = -1;\r
+                                       if ( ( ( ( i != 0 ) || ( CDTXMania.DTX.bチップがある.Drums && !CDTXMania.ConfigIni.bギタレボモード ) ) && ( ( i != 1 ) || CDTXMania.DTX.bチップがある.Guitar ) ) && ( ( i != 2 ) || CDTXMania.DTX.bチップがある.Bass ) )\r
                                        {\r
-                                               CScoreIni.C演奏記録 part = this.st演奏記録[ j ];\r
+                                               CScoreIni.C演奏記録 part = this.st演奏記録[ i ];\r
                                                bool bIsAutoPlay = true;\r
-                                               switch( j )\r
+                                               switch( i )\r
                                                {\r
                                                        case 0:\r
                                 bIsAutoPlay = CDTXMania.ConfigIni.bドラムが全部オートプレイである;\r
@@ -98,14 +98,19 @@ namespace DTXMania
                                                                bIsAutoPlay = CDTXMania.ConfigIni.bAutoPlay.Bass;\r
                                                                break;\r
                                                }\r
-                                               this.fPerfect率[ j ] = bIsAutoPlay ? 0f : ( ( 100f * part.nPerfect数 ) / ( (float) part.n全チップ数 ) );\r
-                                               this.fGreat率[ j ] = bIsAutoPlay ? 0f : ( ( 100f * part.nGreat数 ) / ( (float) part.n全チップ数 ) );\r
-                                               this.fGood率[ j ] = bIsAutoPlay ? 0f : ( ( 100f * part.nGood数 ) / ( (float) part.n全チップ数 ) );\r
-                                               this.fPoor率[ j ] = bIsAutoPlay ? 0f : ( ( 100f * part.nPoor数 ) / ( (float) part.n全チップ数 ) );\r
-                                               this.fMiss率[ j ] = bIsAutoPlay ? 0f : ( ( 100f * part.nMiss数 ) / ( (float) part.n全チップ数 ) );\r
-                                               this.bオート[ j ] = bIsAutoPlay;     // #23596 10.11.16 add ikanick そのパートがオートなら1\r
+                                               this.fPerfect率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nPerfect数 ) / ( (float) part.n全チップ数 ) );\r
+                                               this.fGreat率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nGreat数 ) / ( (float) part.n全チップ数 ) );\r
+                                               this.fGood率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nGood数 ) / ( (float) part.n全チップ数 ) );\r
+                                               this.fPoor率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nPoor数 ) / ( (float) part.n全チップ数 ) );\r
+                                               this.fMiss率[ i ] = bIsAutoPlay ? 0f : ( ( 100f * part.nMiss数 ) / ( (float) part.n全チップ数 ) );\r
+                                               this.bオート[ i ] = bIsAutoPlay;     // #23596 10.11.16 add ikanick そのパートがオートなら1\r
                                                                                                                        //        10.11.17 change (int to bool) ikanick\r
-                                               this.nランク値[ j ] = CScoreIni.tランク値を計算して返す( part );\r
+                                               this.nランク値[ i ] = CScoreIni.tランク値を計算して返す( part );\r
+//Debug.WriteLine( "rank[" + i + "]=" + this.nランク値[ i ] );\r
+//if ( this.nランク値[ i ] != -1 )\r
+//{\r
+//     this.n総合ランク値 = Math.Min( this.n総合ランク値, this.nランク値[ i ] );\r
+//}\r
                                        }\r
                                }\r
                                this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す( this.st演奏記録.Drums, this.st演奏記録.Guitar, this.st演奏記録.Bass );\r
@@ -119,42 +124,50 @@ namespace DTXMania
 \r
                                bool[] b今までにフルコンボしたことがある = new bool[] { false, false, false };\r
 \r
-                               for( int k = 0; k < 3; k++ )\r
+                               for( int i = 0; i < 3; i++ )\r
                                {\r
                                        // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)\r
                                        \r
-                                       b今までにフルコンボしたことがある[ k ] = ini.stセクション[ k * 2 ].bフルコンボである | ini.stセクション[ k * 2 + 1 ].bフルコンボである;\r
-\r
-                                       if( this.nランク値[ k ] <= CScoreIni.tランク値を計算して返す( ini.stセクション[ ( k * 2 ) + 1 ] ) )\r
+                                       b今までにフルコンボしたことがある[ i ] = ini.stセクション[ i * 2 ].bフルコンボである | ini.stセクション[ i * 2 + 1 ].bフルコンボである;\r
+\r
+                       //              if( this.nランク値[ i ] <= CScoreIni.tランク値を計算して返す( ini.stセクション[ ( i * 2 ) + 1 ] ) )\r
+                       //              {\r
+                       //                      this.b新記録ランク[ i ] = true;\r
+                       //              }\r
+                                       // 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更\r
+                                       if ( this.nランク値[ i ] >= 0 && ini.stファイル.BestRank[ i ] > this.nランク値[ i ] )               // #24459 2011.3.1 yyagi update BestRank\r
                                        {\r
-                                               this.b新記録ランク[ k ] = true;\r
+                                               this.b新記録ランク[ i ] = true;\r
+                                               ini.stファイル.BestRank[ i ] = this.nランク値[ i ];\r
                                        }\r
 \r
                                        // 新記録スコアチェック\r
-                                       if( this.st演奏記録[ k ].nスコア > ini.stセクション[ k * 2 ].nスコア )\r
+                                       if( this.st演奏記録[ i ].nスコア > ini.stセクション[ i * 2 ].nスコア )\r
                                        {\r
-                                               this.b新記録スコア[ k ] = true;\r
-                                               ini.stセクション[ k * 2 ] = this.st演奏記録[ k ];\r
+                                               this.b新記録スコア[ i ] = true;\r
+                                               ini.stセクション[ i * 2 ] = this.st演奏記録[ i ];\r
                                        }\r
 \r
                     // 新記録スキルチェック\r
-                    if (this.st演奏記録[k].db演奏型スキル値 > ini.stセクション[(k * 2) + 1].db演奏型スキル値)\r
+                    if (this.st演奏記録[i].db演奏型スキル値 > ini.stセクション[(i * 2) + 1].db演奏型スキル値)\r
                     {\r
-                        this.b新記録スキル[ k ] = true;\r
-                        ini.stセクション[(k * 2) + 1] = this.st演奏記録[ k ];\r
+                        this.b新記録スキル[ i ] = true;\r
+                        ini.stセクション[(i * 2) + 1] = this.st演奏記録[ i ];\r
                     }\r
                     // ラストプレイ #23595 2011.1.9 ikanick\r
                     // オートじゃなければプレイ結果を書き込む\r
-                    if (this.bオート[ k ] == false) {\r
-                        ini.stセクション[k + 6] = this.st演奏記録[ k ];\r
+                    if (this.bオート[ i ] == false) {\r
+                        ini.stセクション[i + 6] = this.st演奏記録[ i ];\r
                     }\r
 \r
                     // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす\r
-                    //        10.11.17 change (nオート to bオート)\r
-                    //                 add default..throw           ikanick\r
-                    if (this.bオート[ k ] == false)\r
+                    //        11.02.05 bオート to t更新条件を取得する use      ikanick\r
+                                       bool[] b更新が必要か否か = new bool[ 3 ];\r
+                                       CScoreIni.t更新条件を取得する( out b更新が必要か否か[ 0 ], out b更新が必要か否か[ 1 ], out b更新が必要か否か[ 2 ] );\r
+\r
+                    if (b更新が必要か否か[ i ])\r
                     {\r
-                        switch ( k )\r
+                        switch ( i )\r
                         {\r
                             case 0:\r
                                 ini.stファイル.ClearCountDrums++;\r
@@ -175,6 +188,11 @@ namespace DTXMania
                                //---------------------\r
                                #endregion\r
 \r
+                               #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi]\r
+                               this.n演奏回数.Drums = ini.stファイル.PlayCountDrums;\r
+                               this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar;\r
+                               this.n演奏回数.Bass = ini.stファイル.PlayCountBass;\r
+                               #endregion\r
                                #region [ 選曲画面の譜面情報の更新 ]\r
                                //---------------------\r
                                if( !CDTXMania.bコンパクトモード )\r