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; }
// ローカル 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(ノーツ数マップ); }