Show page source of AboutElement #88211

== エレメント
エレメントとはスクリプトからアクセス可能なオブジェクトの一つで、次のような特徴を持ちます。
 * タグと呼ばれる固有の文字列で識別されます。
 * 型でグループ化されます。
 * 基本型、他のエレメントおよびそのリストをプロパティに持つことが可能です。
 * エレメントごとに任意のプロパティを追加できます。
 * ファイルに対する型ごとの読み書きが可能です。

ゲームにおける通常の使い方としては、まず初期データを記述し、起動時に読み込みます。それからデータをロードする時に、セーブしたものでプロパティを上書きします。そしてスクリプトでそのプロパティを取得または設定して利用します。一部のプロパティはスクリプト エンジンなどが参照する場合もあります。

[[BR]]
=== 記述方法
例として、ロール・プレイング・ゲームの武器に関するデータを保持するエレメントを定義してみましょう。

まずテキスト ファイルを作成します。名前は任意ですが、Weapon.ini としましょう。このファイルのエンコーディングは、スクリプトと同様に、Environment.ini の設定と同じものにします。

次に、ショートソードという武器を表すエレメントを追加してみましょう。Weapon.ini を開き、以下のように記述します。
{{{
[ShortSword]
Name="ショートソード"
}}}

上記のうち、[] で囲まれた部分がタグになります。このショートソードはスクリプトからは !ShortSword というタグを使ってアクセスします。エレメントはコマンドを用いて複製しない限り、すべての場所で共有されます。

タグより下が、プロパティと値の組み合わせになります。Name がプロパティで、ショートソードという文字列がその値になります。文字列なので二重引用符で囲みます。基本型であればスクリプトと同じ文法で指定できます。リストも、リスト初期化子 {} を使う点で同じです。Nothing を指定することもできます。値にエレメントを指定する場合、そのタグを [] で囲んでください。

では続いてロングソードも追加してみましょう。Weapon.ini を次のようにします。
{{{
[ShortSword]
Name="ショートソード"

[LongSword]
Name="ロングソード"
}}}

あるタグから次のタグ、もしくはファイルの終端までが、1 つのエレメントになります。これでロングソードも追加できました。

この状態では道具のデータが名前しかありませんので、次に価格を表す Price というプロパティを追加してみましょう。
{{{
[ShortSword]
Name="ショートソード"
Price=100

[LongSword]
Name="ロングソード"
Price=200
}}}

エレメントおよびプロパティは、同様の手順で任意に追加できます。

[[BR]]
=== スクリプトでの操作
エレメントは 1 つのオブジェクトとして扱うことができます。例えば先ほど作成した !ShortSword の Price を取得するには次のようにします。
{{{
Dim the_price = [ShortSword].Price
}}}

値を設定してプロパティの値を変更することもできます。ただしエレメントはすべての場所で共有されるため、注意が必要です。

いずれの操作も、!ShortSword を含む Weapon.ini の読み込みが完了してから行なう必要があります。

[[BR]]
=== ファイルに対する読み書き
現在、エレメントの入出力を行なう標準コマンドはありません。個々のアプリケーションのスクリプト エンジンが実装し、提供することになっています。これはファイルの配置をアプリケーションに任せているためです。

[[BR]]
=== Environment.ini について
このファイルは最初に必ず読み込まれます。ルートに置かなければならず、エンコーディングは ASCII に限定されます。

このファイルは Environment というエレメントを持ち、Encoding という文字列の必須プロパティがあります。必須プロパティとは、必ず追加しなければならないプロパティです。下に一例を挙げます。
{{{
[Environment]
Encoding="UTF-8"
}}}

これはスクリプトやエレメントを記述しているファイルのエンコーディングを UTF-8 とするものです。UTF-8 が不都合であれば他のものを指定してください。

[[BR]]
=== 注意事項
 * コメントを入れるには、行頭にセミコロン ; を置いて、その行に記述してください。
 * 整数は 10 進数のみ使用可能で、16 進数は使用できません。