クラス BmsMeta
- Object
-
- BmsMetaKey
-
- BmsMeta
-
public final class BmsMeta extends BmsMetaKey
BMSコンテンツの持つメタ情報の属性を表します。BMSライブラリにおけるメタ情報とは、BMSコンテンツのうち当該コンテンツの内容・属性・状態等を表す様々な情報を指します。 BMSにおけるメタ情報の一般的な呼称は「HEADER」ですが、BMSライブラリではこれを「メタ情報」と呼称します。
メタ情報は「構成単位」「名称」の2つの情報を用いてデータを管理します。以下にそれぞれの情報について記載します。
構成単位(
BmsUnit
)
BMSコンテンツ内で複数のメタ情報を管理するにあたり、管理構造は以下に分類されます。
- 単体メタ情報
1つのメタ情報に対して1個のデータを割り当てる構造です。多くの情報はこの構成単位に分類されます。
- 複数メタ情報
1つのメタ情報に対して複数のデータを割り当てることができる構造です。当該メタ情報として登録したい情報が 複数あるような情報に対して適用することを想定しています。
- 索引付きメタ情報
1つのメタ情報に対して複数のデータを割り当て、そのデータに00~ZZの索引を割り当てて管理する構造です。 チャンネルからメタ情報を参照するようなケースを想定しています。BMSデータとして索引付きメタ情報を記述する際は メタ情報の名称の語尾に00~ZZの索引を2文字で記述し、その後ろに情報内容を記述するようにします。
例:#WAV8J aaa.wav名称
全てのメタ情報に付与される名前です。名前は"#"または"%"で始まり、1文字目が半角英字、 2文字目以降が半角英数字または"_", "/"のいずれかで指定しなければなりません。また、 メタ情報を定義する際の英字は必ず小文字とし、名称全体が64文字を超えてはなりません。BMSデータにメタ情報を 記述する際は大文字の英字を使用しても構いません。
名称は同じ構成単位内で同じものを指定してはなりません。構成単位が異なれば同じ名称を使用できますが、 BMS仕様の分かりやすさの観点では推奨されません。メタ情報を構成する情報には「情報のデータ型(
BmsType
)」「データが定義されなかった場合の初期値」 「BMSコンテンツを外部データへ出力する際の並び順を決定するソートキー」「同一性チェック対象かどうか」が 存在します。それぞれの情報の詳細については以下の記述を参照してください。データ型(
BmsType
)
メタ情報のデータを記述する際の型を決定します。
詳細はBmsType
を参照してください。初期値
BMSの仕様として、全てのメタ情報は指定必須とすることができません。そのため、メタ情報には必ず初期値を 定義しなければなりません。初期値の記述は文字列のみですが記述の書式はデータ型の指定内容に依存します。ソートキー
BMSコンテンツを外部データに出力する際、複数あるメタ情報をどういった順番で出力するかを決定するための数値です。 この数値がより小さいメタ情報が先に出力されるようになります。同じ数値を指定したメタ情報同士では、BmsSpec
に対して先に定義したほうが先に出力されます。同一性チェック
BMSライブラリにおいて「同一性」とは、「プレイヤーがプレーするBMSコンテンツの譜面が同一の内容を示している 状態のこと」を指します。同一性チェックは、譜面が同一の内容を示しているかどうかを確認するために使用される データであるかどうかを決定します。
同一性チェックをONにしたメタ情報が、必ずしも譜面に影響を与えるかどうかはBMSライブラリでは関知しません。 例えば楽曲名などはプレーする譜面には影響を与えませんが、BMSコンテンツのタイトルが変更されてしまう ことを許容しない仕様とし、同一性チェックONを推奨しています。
このように、どのような情報に同一性チェックを入れるかはBMS仕様の提唱者が厳密に検討し決定するべきです。 メタ情報が変更されることでプレーする譜面が変わってしまうものは原則として同一性チェックをONにするべきです。 そうしないと、譜面を比較した際、実際には譜面に変更があっても同一の譜面であると判定されてしまうことになります。任意型メタ情報
任意型メタ情報は、データ型を任意型(BmsType.OBJECT
)にすることで作成することが可能なメタ情報です。 任意型メタ情報はアプリケーションの動作上必要な情報を格納する用途に利用することができます。通常のメタ情報とは 下記の点が異なります。- 初期値はnullでなければいけません。
- 同一性チェックをONにすることはできません。
BmsSpec.getMetas()
において、リストの格納対象外になります。BmsLoader
,BmsSaver
の入出力対象外になります。
-
-
フィールドの概要
フィールド 修飾子とタイプ フィールド 説明 static Pattern
NAME_PATTERN
メタ情報の名称に使用可能な文字列の正規表現パターンです。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 Object
getDefaultValue()
BMSにメタ情報が定義されていない場合の初期値を取得します。int
getOrder()
ソートキーを取得します。BmsType
getType()
メタ情報のデータ型を取得します。static BmsMeta
indexed(String name, BmsType type, String defaultValue, int order, boolean uniqueness)
索引付きメタ情報を生成します。boolean
isArray16Type()
メタ情報のデータ型が16進数値配列であるかどうかを取得します。boolean
isArray36Type()
メタ情報のデータ型が36進数値配列であるかどうかを取得します。boolean
isArray62Type()
メタ情報のデータ型が62進数値配列であるかどうかを取得します。boolean
isArrayType()
メタ情報のデータ型が配列型であるかどうかを取得します。boolean
isBase16Type()
メタ情報のデータ型が16進数値であるかどうかを取得します。boolean
isBase36Type()
メタ情報のデータ型が36進数値であるかどうかを取得します。boolean
isBase62Type()
メタ情報のデータ型が62進数値であるかどうかを取得します。boolean
isBaseChanger()
このメタ情報が基数選択メタ情報かどうかを取得します。boolean
isFloatType()
メタ情報のデータ型が実数であるかどうかを取得します。boolean
isIntegerType()
メタ情報のデータ型が整数であるかどうかを取得します。boolean
isNormalType()
メタ情報のデータ型が通常型であるかどうかを取得します。boolean
isNumberType()
メタ情報のデータ型が数値型であるかどうかを取得します。boolean
isObjectType()
メタ情報のデータ型が任意型であるかどうかを取得します。boolean
isSelectableArrayType()
メタ情報のデータ型が基数選択数値配列型であるかどうかを取得します。boolean
isSelectableBaseType()
メタ情報のデータ型が基数選択数値型であるかどうかを取得します。boolean
isSelectableType()
メタ情報のデータ型が基数選択可能な型かどうかを取得しますboolean
isStringType()
メタ情報のデータ型が文字列であるかどうかを取得します。boolean
isUniqueness()
同一性チェック時に参照されるべきメタ情報かどうかを取得します。boolean
isValueType()
メタ情報のデータ型が値型であるかどうかを取得します。static BmsMeta
multiple(String name, BmsType type, String defaultValue, int order, boolean uniqueness)
複数メタ情報を生成します。static BmsMeta
object(String name, BmsUnit unit)
任意型メタ情報を生成します。static BmsMeta
single(String name, BmsType type, String defaultValue, int order, boolean uniqueness)
単体メタ情報を生成します。String
toString()
メタ情報の名称、構成単位、データ型が分かる形式の文字列を返します。-
クラスから継承されたメソッド BmsMetaKey
equals, getName, getUnit, hashCode, isIndexedUnit, isMultipleUnit, isSingleUnit
-
-
-
-
フィールドの詳細
-
NAME_PATTERN
public static final Pattern NAME_PATTERN
メタ情報の名称に使用可能な文字列の正規表現パターンです。
-
-
コンストラクタの詳細
-
BmsMeta
public BmsMeta(String name, BmsUnit unit, BmsType type, String defaultValue, int order, boolean uniqueness)
新しいメタ情報オブジェクトを生成します。- パラメータ:
name
- メタ情報の名称unit
- 構成単位type
- データ型defaultValue
- 初期値の文字列表現order
- ソートキーuniqueness
- 同一性チェック時に使用されるべきメタ情報かどうか- 例外:
NullPointerException
- nameがnullNullPointerException
- unitがnullNullPointerException
- typeがnullNullPointerException
- typeがOBJECT以外の時、defaultValueがnullIllegalArgumentException
- typeがOBJECTの時、defaultValueがnullではないIllegalArgumentException
- nameがNAME_PATTERN
にマッチしないIllegalArgumentException
- defaultValueがtypeの書式に適合しないIllegalArgumentException
- typeがOBJECTの時、uniquenessがtrue
-
-
メソッドの詳細
-
single
public static BmsMeta single(String name, BmsType type, String defaultValue, int order, boolean uniqueness)
単体メタ情報を生成します。- パラメータ:
name
- メタ情報の名称type
- データ型defaultValue
- 初期値の文字列表現order
- ソートキーuniqueness
- 同一性チェック時に使用されるべきメタ情報かどうか- 戻り値:
- 単体メタ情報オブジェクト
- 例外:
NullPointerException
- nameがnullNullPointerException
- typeがnullNullPointerException
- defaultValueがnullIllegalArgumentException
- nameがNAME_PATTERN
にマッチしないIllegalArgumentException
- defaultValueがtypeの書式に適合しない
-
multiple
public static BmsMeta multiple(String name, BmsType type, String defaultValue, int order, boolean uniqueness)
複数メタ情報を生成します。- パラメータ:
name
- メタ情報の名称type
- データ型defaultValue
- 初期値の文字列表現order
- ソートキーuniqueness
- 同一性チェック時に使用されるべきメタ情報かどうか- 戻り値:
- 複数メタ情報オブジェクト
- 例外:
NullPointerException
- nameがnullNullPointerException
- typeがnullNullPointerException
- defaultValueがnullIllegalArgumentException
- nameがNAME_PATTERN
にマッチしないIllegalArgumentException
- defaultValueがtypeの書式に適合しない
-
indexed
public static BmsMeta indexed(String name, BmsType type, String defaultValue, int order, boolean uniqueness)
索引付きメタ情報を生成します。- パラメータ:
name
- メタ情報の名称type
- データ型defaultValue
- 初期値の文字列表現order
- ソートキーuniqueness
- 同一性チェック時に使用されるべきメタ情報かどうか- 戻り値:
- 索引付きメタ情報オブジェクト
- 例外:
NullPointerException
- nameがnullNullPointerException
- typeがnullNullPointerException
- defaultValueがnullIllegalArgumentException
- nameがNAME_PATTERN
にマッチしないIllegalArgumentException
- defaultValueがtypeの書式に適合しない
-
object
public static BmsMeta object(String name, BmsUnit unit)
任意型メタ情報を生成します。- パラメータ:
name
- メタ情報の名称unit
- 構成単位- 戻り値:
- 任意型メタ情報オブジェクト
- 例外:
NullPointerException
- nameがnullNullPointerException
- unitがnullIllegalArgumentException
- nameがNAME_PATTERN
にマッチしない
-
toString
public String toString()
メタ情報の名称、構成単位、データ型が分かる形式の文字列を返します。- オーバーライド:
toString
クラス内BmsMetaKey
- 戻り値:
- メタ情報の名称、構成単位、データ型が分かる形式の文字列
-
getType
public BmsType getType()
メタ情報のデータ型を取得します。- 戻り値:
- メタ情報のデータ型
-
getDefaultValue
public Object getDefaultValue()
BMSにメタ情報が定義されていない場合の初期値を取得します。取得した値のデータ型は
getType()
で取得できるデータ型のネイティブデータ型と一致します。 また、初期値の定義は必須のため、この値がnullになることはありません。- 戻り値:
- メタ情報の初期値
-
getOrder
public int getOrder()
ソートキーを取得します。ソートキーは、BMSライブラリからBMS出力を行った際にメタ情報を出力する順番を決定するのに使用されます。 設定する値は任意で良く、同一BMS仕様の複数のメタ情報で同じソートキーが存在する場合は先に定義された メタ情報が先に出力されるようになります。
- 戻り値:
- ソートキー
-
isUniqueness
public boolean isUniqueness()
同一性チェック時に参照されるべきメタ情報かどうかを取得します。- 戻り値:
- 同一性チェック時に参照されるべき場合はtrue
-
isBaseChanger
public boolean isBaseChanger()
このメタ情報が基数選択メタ情報かどうかを取得します。- 戻り値:
- 基数選択メタ情報であればtrue
-
isIntegerType
public boolean isIntegerType()
メタ情報のデータ型が整数であるかどうかを取得します。- 戻り値:
- データ型が整数であればtrue
- 関連項目:
BmsType.INTEGER
-
isFloatType
public boolean isFloatType()
メタ情報のデータ型が実数であるかどうかを取得します。- 戻り値:
- データ型が実数であればtrue
- 関連項目:
BmsType.FLOAT
-
isStringType
public boolean isStringType()
メタ情報のデータ型が文字列であるかどうかを取得します。- 戻り値:
- データ型が文字列であればtrue
- 関連項目:
BmsType.STRING
-
isBase16Type
public boolean isBase16Type()
メタ情報のデータ型が16進数値であるかどうかを取得します。- 戻り値:
- データ型が16進数値であればtrue
- 関連項目:
BmsType.BASE16
-
isBase36Type
public boolean isBase36Type()
メタ情報のデータ型が36進数値であるかどうかを取得します。- 戻り値:
- データ型が36進数値であればtrue
- 関連項目:
BmsType.BASE36
-
isBase62Type
public boolean isBase62Type()
メタ情報のデータ型が62進数値であるかどうかを取得します。- 戻り値:
- データ型が62進数値であればtrue
- 関連項目:
BmsType.BASE62
-
isArray16Type
public boolean isArray16Type()
メタ情報のデータ型が16進数値配列であるかどうかを取得します。- 戻り値:
- データ型が16進数値配列であればtrue
- 関連項目:
BmsType.ARRAY16
-
isArray36Type
public boolean isArray36Type()
メタ情報のデータ型が36進数値配列であるかどうかを取得します。- 戻り値:
- データ型が36進数値配列であればtrue
- 関連項目:
BmsType.ARRAY36
-
isArray62Type
public boolean isArray62Type()
メタ情報のデータ型が62進数値配列であるかどうかを取得します。- 戻り値:
- データ型が62進数値配列であればtrue
- 関連項目:
BmsType.ARRAY62
-
isObjectType
public boolean isObjectType()
メタ情報のデータ型が任意型であるかどうかを取得します。- 戻り値:
- データ型が任意型である場合はtrue
- 関連項目:
BmsType.OBJECT
-
isNumberType
public boolean isNumberType()
メタ情報のデータ型が数値型であるかどうかを取得します。- 戻り値:
- データ型が数値型であればtrue
- 関連項目:
BmsType.isNumberType()
-
isValueType
public boolean isValueType()
メタ情報のデータ型が値型であるかどうかを取得します。- 戻り値:
- データ型が値型であればtrue
- 関連項目:
BmsType.isValueType()
-
isArrayType
public boolean isArrayType()
メタ情報のデータ型が配列型であるかどうかを取得します。- 戻り値:
- データ型が配列型であればtrue
- 関連項目:
BmsType.isArrayType()
-
isSelectableBaseType
public boolean isSelectableBaseType()
メタ情報のデータ型が基数選択数値型であるかどうかを取得します。- 戻り値:
- データ型が基数選択数値型であればtrue
- 関連項目:
BmsType.isSelectableBaseType()
-
isSelectableArrayType
public boolean isSelectableArrayType()
メタ情報のデータ型が基数選択数値配列型であるかどうかを取得します。- 戻り値:
- データ型が基数選択数値配列型であればtrue
- 関連項目:
BmsType.isSelectableArrayType()
-
isSelectableType
public boolean isSelectableType()
メタ情報のデータ型が基数選択可能な型かどうかを取得します- 戻り値:
- データ型が基数選択可能な型であればtrue
- 関連項目:
BmsType.isSelectable()
-
isNormalType
public boolean isNormalType()
メタ情報のデータ型が通常型であるかどうかを取得します。通常型とは
BmsType.OBJECT
以外の全てのデータ型が該当します。
つまり、isObjectType()
とは常に逆の結果を返します。- 戻り値:
- データ型が通常型である場合はtrue
-
-