internal static int tランク値を計算して返す(C演奏記録 part)
 {
     if (part.b演奏にMIDI入力を使用した || part.b演奏にキーボードを使用した || part.b演奏にジョイパッドを使用した || part.b演奏にマウスを使用した)               // 2010.9.11
     {
         int nTotal = part.nPerfect数 + part.nGreat数 + part.nGood数 + part.nPoor数 + part.nMiss数;
         return(tランク値を計算して返す(nTotal, part.nPerfect数, part.nGreat数, part.nGood数, part.nPoor数, part.nMiss数));
     }
     return((int)ERANK.UNKNOWN);
 }
        internal static int t総合ランク値を計算して返す(C演奏記録 Drums)
        {
            int nTotal   = Drums.n全チップ数;
            int nPerfect = Drums.nPerfect数_Auto含まない;                    // #24569 2011.3.1 yyagi: to calculate result rank without AUTO chips
            int nGreat   = Drums.nGreat数_Auto含まない;                      //
            int nGood    = Drums.nGood数_Auto含まない;                       //
            int nPoor    = Drums.nPoor数_Auto含まない;                       //
            int nMiss    = Drums.nMiss数_Auto含まない;                       //

            return(tランク値を計算して返す(nTotal, nPerfect, nGreat, nGood, nPoor, nMiss));
        }
        internal static string t演奏セクションのMD5を求めて返す(C演奏記録 cc)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append(cc.nスコア.ToString());
            builder.Append(cc.dbゲーム型スキル値.ToString(".000000"));
            builder.Append(cc.db演奏型スキル値.ToString(".000000"));
            builder.Append(cc.nPerfect数);
            builder.Append(cc.nGreat数);
            builder.Append(cc.nGood数);
            builder.Append(cc.nPoor数);
            builder.Append(cc.nMiss数);
            builder.Append(cc.n最大コンボ数);
            builder.Append(cc.n全チップ数);
            builder.Append(boolToChar(cc.bTight));
            builder.Append(cc.f譜面スクロール速度.ToString(".000000"));
            builder.Append(cc.n演奏速度分子);
            builder.Append(cc.n演奏速度分母);
            builder.Append(boolToChar(cc.bDrums有効));
            builder.Append(boolToChar(cc.bSTAGEFAILED有効));
            builder.Append((int)cc.eダメージレベル);
            builder.Append(boolToChar(cc.b演奏にキーボードを使用した));
            builder.Append(boolToChar(cc.b演奏にMIDI入力を使用した));
            builder.Append(boolToChar(cc.b演奏にジョイパッドを使用した));
            builder.Append(boolToChar(cc.b演奏にマウスを使用した));
            builder.Append(cc.nPerfectになる範囲ms);
            builder.Append(cc.nGreatになる範囲ms);
            builder.Append(cc.nGoodになる範囲ms);
            builder.Append(cc.nPoorになる範囲ms);
            builder.Append(cc.strDTXManiaのバージョン);
            builder.Append(cc.最終更新日時);

            byte[]        bytes    = Encoding.GetEncoding("Shift_JIS").GetBytes(builder.ToString());
            StringBuilder builder2 = new StringBuilder(0x21);

            {
                MD5CryptoServiceProvider m = new MD5CryptoServiceProvider();
                byte[] buffer2             = m.ComputeHash(bytes);
                foreach (byte num2 in buffer2)
                {
                    builder2.Append(num2.ToString("x2"));
                }
            }
            return(builder2.ToString());
        }