パッケージ com.lmt.lib.bms.bemusic

クラス BeMusicStatisticsBuilder


  • public class BeMusicStatisticsBuilder
    extends Object
    譜面統計情報を集計するためのビルダーです。

    譜面統計情報は、入力となる楽曲の情報(ヘッダ情報と譜面データ)と、複数の集計オプションから成ります。 当クラスでは入力楽曲と集計オプションを取りまとめ、集計実行までの手続きを一元化する役割を担います。

    譜面統計情報の集計によってどのような情報が集計されるかについてはBeMusicStatisticsを参照してください。

    関連項目:
    BeMusicStatistics, BeMusicTimeSpan
    • コンストラクタの詳細

      • BeMusicStatisticsBuilder

        public BeMusicStatisticsBuilder​(BmsContent content)
        譜面統計情報ビルダーオブジェクトを構築します。

        指定されたBMSコンテンツからヘッダ情報の抽出、譜面データの構築を行い、それらを譜面統計情報の入力データとします。 譜面統計情報集計オプションについては当クラスの各種Setterメソッドの解説を参照してください。

        当コンストラクタを使用するのは、ヘッダ情報と譜面データを譜面統計情報の集計以外の用途で使用しない場合に限定するべきです。 ヘッダ情報と譜面データの生成処理には相応のCPU負荷がかかるため、これらを他の処理で再利用する想定があるケースでは BeMusicStatisticsBuilder(BeMusicHeader, BeMusicChart) を使用することを推奨します。

        パラメータ:
        content - BMSコンテンツ
        例外:
        NullPointerException - contentがnull
      • BeMusicStatisticsBuilder

        public BeMusicStatisticsBuilder​(BeMusicHeader header,
                                        BeMusicChart chart)
        譜面統計情報ビルダーオブジェクトを構築します。

        指定された楽曲のヘッダ情報・譜面データが譜面統計情報の入力データとなります。 その他の譜面統計情報集計オプションについては当クラスの各種Setterメソッドの解説を参照してください。

        ヘッダ情報の値は譜面統計情報の集計の際に必要に応じて参照されます。ヘッダ情報と譜面データが同一楽曲から 生成されたものでない場合、譜面統計情報は予期しない集計を行うことになりますので注意してください。

        パラメータ:
        header - ヘッダ情報
        chart - 譜面データ
        例外:
        NullPointerException - headerまたはchartがnull
    • メソッドの詳細

      • setNoteLayout

        public final BeMusicStatisticsBuilder setNoteLayout​(BeMusicNoteLayout layout)
        ノートレイアウトを指定します。

        譜面統計情報は当メソッドで指定されたノートレイアウトで集計が行われます。 ノートレイアウト、または譜面統計情報の集計対象の楽曲がシングルプレーの場合、シングルプレー用譜面として 譜面統計情報が集計されます。ダブルプレー用譜面として集計されるのは両者がダブルプレーであった場合のみです。

        指定を省略した場合、BeMusicNoteLayout.SP_REGULARが使用されます。

        パラメータ:
        layout - ノートレイアウト
        戻り値:
        このオブジェクトのインスタンス
        関連項目:
        BeMusicNoteLayout
      • addRating

        public final BeMusicStatisticsBuilder addRating​(BeMusicRatingType... ratingTypes)
        Delta Systemによる譜面のレーティングを行うレーティングの種別を追加します。

        レーティングの種別一覧はBeMusicRatingType列挙型を参照してください。

        当メソッドで追加されたレーティング種別は、setNoteLayout(BeMusicNoteLayout)で指定したノートレイアウトで 譜面の分析が行われ、種別に応じたレーティング値の算出が行われます。

        Delta Systemはその他の譜面統計情報とは別のアルゴリズムによって算出が行われます。よって、最終的なレーティング値は 期間統計情報の長さの影響を受けず、同じ譜面では常に同じ値を返します。

        レーティング種別を追加する順番に決まりはありません。また、同じレーティング種別を追加しても作用はなく、 重複したレーティング種別は内部処理で破棄されます。

        レーティング種別にnullを指定しても作用はありません。

        パラメータ:
        ratingTypes - レーティング種別一覧(一度に複数の種別を指定可能)
        戻り値:
        このオブジェクトのインスタンス
        関連項目:
        BeMusicRatingType
      • addRating

        public final <C extends Collection<BeMusicRatingType>> BeMusicStatisticsBuilder addRating​(C ratingTypes)
        Delta Systemによる譜面のレーティングを行うレーティングの種別を追加します。

        当メソッドは入力引数としてレーティング種別一覧のコレクションを指定することを除き addRating(BeMusicRatingType...) と同様の機能を持ちます。 当メソッドの詳細な動作仕様についてはそちらを参照してください。

        型パラメータ:
        C - レーティング種別一覧のコレクション
        パラメータ:
        ratingTypes - レーティング種別一覧
        戻り値:
        このオブジェクトのインスタンス
        例外:
        NullPointerException - ratingTypesがnull
        関連項目:
        BeMusicRatingType
      • statistics

        public final BeMusicStatistics statistics()
        指定された楽曲とオプションで譜面統計情報の集計を行います。

        各種Setterメソッドで指定した集計オプションに誤りがある場合、集計は行われずに例外がスローされます。

        一度集計を行ったビルダーで再度集計を行うことはできません。異なるオプションで集計したい場合は ビルダーの新しいインスタンスを生成し、そのビルダーで集計を行ってください。

        譜面統計情報の詳しい内容についてはBeMusicStatisticsを参照してください。

        戻り値:
        譜面統計情報の集計結果
        例外:
        IllegalStateException - 集計を行ったビルダーで再度集計を行おうとした
        IllegalStateException - 期間統計情報の長さがBeMusicTimeSpan.MIN_SPAN未満またはBeMusicTimeSpan.MAX_SPAN超過
        IllegalStateException - ノートレイアウトがnull
        関連項目:
        BeMusicStatistics