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

クラス 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の入出力対象外になります。
    関連項目:
    BmsUnit, BmsType
    • フィールドの概要

      フィールド 
      修飾子とタイプ フィールド 説明
      static Pattern NAME_PATTERN
      メタ情報の名称に使用可能な文字列の正規表現パターンです。
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      BmsMeta​(String name, BmsUnit unit, BmsType type, String defaultValue, int order, boolean uniqueness)
      新しいメタ情報オブジェクトを生成します。
    • メソッドの概要

      すべてのメソッド 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()
      メタ情報の名称、構成単位、データ型が分かる形式の文字列を返します。
    • フィールドの詳細

      • NAME_PATTERN

        public static final Pattern 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