Ejemplo n.º 1
0
        public ScoreDBRecord(VariablePath 譜面ファイルの絶対パス, ユーザ設定 userConfig)
        {
            // 譜面を読み込む。(ノーツ数やBPMを算出するため、ヘッダだけじゃなくすべてを読み込む。)
            var 譜面 = SSTF.スコア.ファイルから生成する(譜面ファイルの絶対パス.数なしパス);

            var ノーツ数マップ = _ノーツ数を算出して返す(譜面, userConfig);

            var(最小BPM, 最大BPM) = _最小最大BPMを調べて返す(譜面);

            // 読み込んだ譜面から反映する。
            this.ScorePath              = 譜面ファイルの絶対パス.数なしパス;
            this.Title                  = 譜面.曲名;
            this.LastWriteTime          = File.GetLastWriteTime(this.ScorePath).ToString("G");
            this.Level                  = 譜面.難易度;
            this.MinBPM                 = 最小BPM;
            this.MaxBPM                 = 最大BPM;
            this.TotalNotes_LeftCymbal  = ノーツ数マップ[演奏.表示レーン種別.LeftCymbal];
            this.TotalNotes_HiHat       = ノーツ数マップ[演奏.表示レーン種別.HiHat];
            this.TotalNotes_LeftPedal   = ノーツ数マップ[演奏.表示レーン種別.Foot];
            this.TotalNotes_Snare       = ノーツ数マップ[演奏.表示レーン種別.Snare];
            this.TotalNotes_Bass        = ノーツ数マップ[演奏.表示レーン種別.Bass];
            this.TotalNotes_HighTom     = ノーツ数マップ[演奏.表示レーン種別.Tom1];
            this.TotalNotes_LowTom      = ノーツ数マップ[演奏.表示レーン種別.Tom2];
            this.TotalNotes_FloorTom    = ノーツ数マップ[演奏.表示レーン種別.Tom3];
            this.TotalNotes_RightCymbal = ノーツ数マップ[演奏.表示レーン種別.RightCymbal];
            this.PreImage               = string.IsNullOrEmpty(譜面.プレビュー画像ファイル名) ? "" : 譜面.プレビュー画像ファイル名;
            this.Artist                 = 譜面.アーティスト名;
            this.PreSound               = string.IsNullOrEmpty(譜面.プレビュー音声ファイル名) ? "" : 譜面.プレビュー音声ファイル名;
            this.BGMAdjust              = 0;
        }
Ejemplo n.º 2
0
        // ローカル


        private Dictionary <演奏.表示レーン種別, int> _ノーツ数を算出して返す(スコア score, ユーザ設定 userConfig)
        {
            // ノーツ数マップを初期化。
            var ノーツ数マップ = new Dictionary <演奏.表示レーン種別, int>();

            foreach (演奏.表示レーン種別?lane in Enum.GetValues(typeof(演奏.表示レーン種別)))
            {
                if (lane.HasValue)
                {
                    ノーツ数マップ.Add(lane.Value, 0);
                }
            }

            // 譜面内のすべてのチップについて……
            foreach (var chip in score.チップリスト)
            {
                var ドラムチッププロパティ = userConfig.ドラムチッププロパティリスト[chip.チップ種別];

                // 1. AutoPlay ON のチップは、すべてが ON である場合を除いて、カウントしない。

                if (userConfig.AutoPlay[ドラムチッププロパティ.AutoPlay種別])
                {
                    if (!(userConfig.AutoPlayがすべてONである))
                    {
                        continue;
                    }
                }

                // 2. AutoPlay OFF 時でも、ユーザヒットの対象にならないチップはカウントしない。

                if (!(ドラムチッププロパティ.AutoPlayOFF_ユーザヒット))
                {
                    continue;
                }

                // カウント。

                ノーツ数マップ[ドラムチッププロパティ.表示レーン種別]++;
            }

            return(ノーツ数マップ);
        }