クラス BeMusicChartBuilder
- Object
-
- BeMusicChartBuilder
-
public class BeMusicChartBuilder extends Object
BMSコンテンツからBe Music仕様のBMS譜面オブジェクトを構築するためのビルダーです。当ビルダーでは、BMS譜面オブジェクトにどのような情報を含めるかを選択し、楽曲の先頭から末尾までをスキャンします。 譜面を画面に表示し、音声・アニメーションの再生までをカバーするようなBMS譜面オブジェクトを構築する場合には 当ビルダーがサポートする全ての情報を含めなければなりません。視聴覚の演出を必要としないBMS譜面オブジェクトで 良いのであれば音声・アニメーションの情報を除外した状態でBMS譜面オブジェクトを構築しても構いません。
但し、どのような用途のBMS譜面オブジェクトであったとしても以下の情報だけは必ず含まれることになります。 これらは総じて「時間」に関連する情報となっています。
- 小節長の明示的な指定
- スクロール速度変化に関する情報
- BPM変化に関する情報
- 譜面停止に関する情報
以下に、当ビルダーの代表的な使い方を示す簡単なサンプルコードを示します。
private BeMusicChart buildMyChart(BmsContent targetContent) { // 以下はBMS譜面の分析処理に必要な最低限の情報を含めたい場合の設定です。 BeMusicChartBuilder builder = new BeMusicChartBuilder(targetContent) .setSeekMeasureLine(true) // 小節線を含む .setSeekVisible(true) // 可視オブジェを含む .setSeekInvisible(false) // 不可視オブジェは無視する .setSeekMine(true) // 地雷オブジェを含む .setSeekBgm(false) // BGMは無視する .setSeekBga(false) // BGA(レイヤー、ミス画像含む)は無視する .setSeekText(false); // テキストは無視する // 上記ビルダーで設定した条件でBMS譜面オブジェクトを構築します。 BeMusicChart myChart = builder.createChart(); // 構築したBMS譜面オブジェクトを返します。 return myChart; }
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicChartBuilder(BmsContent content)
BMS譜面ビルダーオブジェクトを構築します。BeMusicChartBuilder(BmsContent content, boolean isSeekAll)
BMS譜面ビルダーオブジェクトを構築します。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 BeMusicChart
createChart()
このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面オブジェクトを構築します。static BeMusicChart
createChart(BmsContent content)
指定したBMSコンテンツからBMS譜面を生成します。List<BeMusicPoint>
createList()
このBMS譜面ビルダーオブジェクトに指定された条件で譜面を最初から最後まで検索し、楽曲位置情報リストを構築します。BeMusicPoint
first()
このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面構築を開始し、最初に楽曲位置情報を返します。BmsContent
getContent()
処理対象のBMSコンテンツを取得します。BeMusicPoint
next()
このBMS譜面ビルダーオブジェクトに指定された条件で次の楽曲位置を検索し、該当する楽曲位置の楽曲位置情報を返します。BeMusicChartBuilder
setChartCreator(Supplier<BeMusicChart> creator)
BMS譜面生成関数を設定します。BeMusicChartBuilder
setPointCreator(Supplier<BeMusicPoint> creator)
楽曲位置情報生成関数を設定します。BeMusicChartBuilder
setSeekBga(boolean seek)
BGAを楽曲位置情報に含めるかどうかを設定します。BeMusicChartBuilder
setSeekBgm(boolean seek)
BGMを楽曲位置情報に含めるかどうかを設定します。BeMusicChartBuilder
setSeekInvisible(boolean seek)
不可視オブジェを楽曲位置情報に含めるかどうかを設定します。BeMusicChartBuilder
setSeekMeasureLine(boolean seek)
小節線を楽曲位置情報に含めるかどうかを設定します。BeMusicChartBuilder
setSeekMine(boolean seek)
地雷オブジェを楽曲位置情報に含めるかどうかを設定します。BeMusicChartBuilder
setSeekText(boolean seek)
テキストを楽曲位置情報に含めるかどうかを設定します。BeMusicChartBuilder
setSeekVisible(boolean seek)
可視オブジェを楽曲位置情報に含めるかどうかを設定します。
-
-
-
コンストラクタの詳細
-
BeMusicChartBuilder
public BeMusicChartBuilder(BmsContent content)
BMS譜面ビルダーオブジェクトを構築します。BMS譜面ビルダーは必ず対象となるBMSコンテンツを指定する必要があります。また、当該BMSコンテンツは
BeMusicSpec
で生成されたBMS仕様に基づいたコンテンツでなければなりません。そうでない場合には 当ビルダーでの動作保証外になります。当コンストラクタで構築したBMS譜面ビルダーはデフォルトで全ての情報をシークする設定になっています。
- パラメータ:
content
- BMSコンテンツ- 例外:
NullPointerException
- contentがnull
-
BeMusicChartBuilder
public BeMusicChartBuilder(BmsContent content, boolean isSeekAll)
BMS譜面ビルダーオブジェクトを構築します。BMS譜面ビルダーは必ず対象となるBMSコンテンツを指定する必要があります。また、当該BMSコンテンツは
BeMusicSpec
で生成されたBMS仕様に基づいたコンテンツでなければなりません。そうでない場合には 当ビルダーでの動作保証外になります。当コンストラクタはオブジェクト構築時に全ての情報をシークするか、または最小限の情報のみシークするかを決定できます。 isSeekAll引数をtrueにすると全ての情報をシークし、falseにすると最小限の情報のみシークします。
- パラメータ:
content
- BMSコンテンツisSeekAll
- 全情報シーク有無- 例外:
NullPointerException
- contentがnull
-
-
メソッドの詳細
-
setSeekMeasureLine
public final BeMusicChartBuilder setSeekMeasureLine(boolean seek)
小節線を楽曲位置情報に含めるかどうかを設定します。小節線は、ある小節の刻み位置0であることを示します。通常、どの楽曲位置でも小節データ、ノートが全く存在しない 場合には楽曲位置情報は生成対象になりませんが、小節線を含めることで小節毎に必ず楽曲位置情報が含まれることを 保証することができます。アプリケーションの実装都合に合わせて小節線有無を決定してください。
- パラメータ:
seek
- 小節線有無- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中
-
setSeekVisible
public final BeMusicChartBuilder setSeekVisible(boolean seek)
可視オブジェを楽曲位置情報に含めるかどうかを設定します。- パラメータ:
seek
- 可視オブジェ有無- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中
-
setSeekInvisible
public final BeMusicChartBuilder setSeekInvisible(boolean seek)
不可視オブジェを楽曲位置情報に含めるかどうかを設定します。- パラメータ:
seek
- 不可視オブジェ有無- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中
-
setSeekMine
public final BeMusicChartBuilder setSeekMine(boolean seek)
地雷オブジェを楽曲位置情報に含めるかどうかを設定します。- パラメータ:
seek
- 地雷オブジェ有無- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中
-
setSeekBgm
public final BeMusicChartBuilder setSeekBgm(boolean seek)
BGMを楽曲位置情報に含めるかどうかを設定します。- パラメータ:
seek
- BGM有無- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中
-
setSeekBga
public final BeMusicChartBuilder setSeekBga(boolean seek)
BGAを楽曲位置情報に含めるかどうかを設定します。- パラメータ:
seek
- BGA有無- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中
-
setSeekText
public final BeMusicChartBuilder setSeekText(boolean seek)
テキストを楽曲位置情報に含めるかどうかを設定します。- パラメータ:
seek
- テキスト有無- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中
-
setPointCreator
public final BeMusicChartBuilder setPointCreator(Supplier<BeMusicPoint> creator)
楽曲位置情報生成関数を設定します。当メソッドで設定された関数は、BMS譜面を生成する過程で1個の楽曲位置情報オブジェクトを構築しようとする度に 1回実行されます。関数は、実行される度に新しい楽曲位置情報オブジェクトを生成して返してください。 生成済みの楽曲位置情報オブジェクトを返してはいけません。それを行った場合BMS譜面は正しく構築されず、 一切の動作保証外となります。また、nullを返すとBMS譜面構築時に例外がスローされます。
デフォルトでは
BeMusicPoint
を生成する関数が設定されています。- パラメータ:
creator
- 楽曲位置情報生成関数- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中NullPointerException
- creatorがnull
-
setChartCreator
public final BeMusicChartBuilder setChartCreator(Supplier<BeMusicChart> creator)
BMS譜面生成関数を設定します。当メソッドで設定された関数は、
createChart()
でBMS譜面を生成しようとする際にBeMusicChart.create(List, Supplier)
に渡されます。その時に指定されたBMS譜面生成関数を1度だけ実行し、 BMS譜面オブジェクトを構築します。指定した関数がnullを返す動作にならないよう注意してください。createChart()
を使用しない場合、当メソッドで指定した関数が参照されることはありません。デフォルトでは
BeMusicChart
を生成する関数が設定されています。- パラメータ:
creator
- BMS譜面生成関数- 戻り値:
- このBMS譜面ビルダーオブジェクトのインスタンス
- 例外:
IllegalStateException
- BMS譜面生成中NullPointerException
- creatorがnull
-
getContent
public final BmsContent getContent()
処理対象のBMSコンテンツを取得します。- 戻り値:
- 処理対象のBMSコンテンツ
-
first
public final BeMusicPoint first()
このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面構築を開始し、最初に楽曲位置情報を返します。BMS譜面構築を開始すると、楽曲位置情報の生成が完了するまでビルダーの条件を変更できなくなります。
当メソッドはビルダーの状態に関わらずいつでも実行できます。
指定の条件に該当する楽曲位置が全く存在しない場合、当メソッドはnullを返します。
当メソッドと
next()
メソッドは低レベルAPIです。これらのメソッドを用いてBMS譜面を構築することは 推奨されません。代わりにcreateList()
またはcreateChart()
を使用してください。- 戻り値:
- 楽曲位置情報
- 例外:
IllegalStateException
- 処理対象BMSコンテンツが参照モードではない
-
next
public final BeMusicPoint next()
このBMS譜面ビルダーオブジェクトに指定された条件で次の楽曲位置を検索し、該当する楽曲位置の楽曲位置情報を返します。当メソッドを呼び出す前には
first()
が実行されている必要があります。その後、当メソッドが最後の楽曲位置まで 検索し終え、nullを返すまで繰り返し当メソッドを実行してください。nullを返すと当ビルダーのBMS譜面生成中状態が解除され、 再びSetterを実行可能になります。当メソッドと
first()
メソッドは低レベルAPIです。これらのメソッドを用いてBMS譜面を構築することは 推奨されません。代わりにcreateList()
またはcreateChart()
を使用してください。- 戻り値:
- 楽曲位置情報
- 例外:
IllegalStateException
- BMS譜面生成中ではない(first()
が実行されていない)IllegalStateException
- 処理対象BMSコンテンツが参照モードではない
-
createList
public final List<BeMusicPoint> createList()
このBMS譜面ビルダーオブジェクトに指定された条件で譜面を最初から最後まで検索し、楽曲位置情報リストを構築します。当メソッドは
first()
とnext()
を使用して以下のサンプルと同様の処理を行います。List<BeMusicPoint> list = new ArrayList<>(); for (BeMusicPoint point = first(); point != null; point = next()) { list.add(point); }
- 戻り値:
- 楽曲位置情報リスト
-
createChart
public final BeMusicChart createChart()
このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面オブジェクトを構築します。当メソッドは
createList()
で生成した楽曲位置情報リストをBeMusicChart.create(List, Supplier)
に渡し、BeMusicChart
オブジェクトを構築する手順を簡略化するヘルパーメソッドです。- 戻り値:
- BMS譜面オブジェクト
-
createChart
public static BeMusicChart createChart(BmsContent content)
指定したBMSコンテンツからBMS譜面を生成します。当メソッドを使用すると以下の記述を簡略化できます。
new BeMusicChartBuilder(content).createChart();
- パラメータ:
content
- BMSコンテンツ- 戻り値:
- BMS譜面オブジェクト
- 例外:
NullPointerException
- contentがnull
-
-