BitsmistJSでは、パークと呼ばれるものをユニットにアタッチすることによって、ユニットに機能を追加します。ユニットにはプロパティとメソッドを追加することができますが、様々なパークが追加する機能の名前の衝突を防ぐため、プロパティとメソッドの追加は最小限にしています。代わりにアセットと呼ばれる入れ物を用意しており、各パークはそこへ機能を追加していくことになります。アセット内のアイテムは、“basic.scan”といったように、ピリオド区切りで各パーク固有の接頭語をつけることで、名前の衝突を防ぎます。
ライブラリ側でプロパティやメソッドを追加することを制限することはありません。接頭語をつけることもルールであって、強制する仕組みがあるわけではありません。従うかどうかは、あくまでも製作者に委ねられています。
アセットには、さまざまな種類のアイテムを格納する器を用意しています。デフォルトでは“inventory”、“setting”、“skill”、“spell”というアセットがあります。
少ないながらも存在する、BitsmistJSのコアライブラリがユニットに付加するプロパティとメソッドを紹介します。
名称 | 説明 |
---|---|
set() | アセットに値を格納します。 |
get() | アセットから値を取得します。 |
has() | 指定されたアイテムが、アセット内に存在するか確認します。 |
use() | 指定されたスキル(同期関数)を実行します。 |
cast() | 指定されたスペル(非同期関数)を実行します。 |
upgrade() | ユニットをアップグレード(機能を追加)します。 |
uniqueId | ユニットのユニークなIDを格納します。 |
assets | ユニットのアセットを格納するオブジェクトを返します。 |
ready | ユニットが初期化を完了した時にResolveされるPromiseを返します。 |
_getSettings() | ユニットの設定を返します。 |
アセットとは、さまざまな種類のアイテムを格納する器です。デフォルトでは“inventory”、“setting”、“skill”、“spell”というのものがあります。
種類 | 説明 |
---|---|
inventory | ユニットの公開情報を格納するアセットです。 |
perk | ユニットにアタッチされているパークを格納するアセットです。 |
setting | ユニットの設定を格納するアセットです。 |
skill | ユニットのメソッドを格納するアセットです。 |
spell | ユニットの非同期なメソッドを格納するアセットです。 |
アセットにアイテムを追加する際には、“basic.scan”といったように、ピリオド区切りで頭に各パーク固有の接頭語をつけることで、名前の衝突を防いでいます。
情報を格納するためのアセットとして、公開可能な情報を格納するインベントリ(inventory)があります。中身にアクセスするためには、set()、get()メソッドを使用します。
this.get("inventory", "skin.skins.default"); this.set("inventory", "style.applied", ["default"]);
設定を格納するためのアセットとして、“setting”アセットがあります。設定もアセット同様、各パークの接頭語で区切られています。
this.get("setting", "skin.options.skinRef");
起動時に自身の_getSettings()メソッドや、外部設定ファイルから設定を読み込み格納します。
設定についての詳細は以下をご覧ください。
メソッドを格納するためのアセットとして、“skill”と“spell”があります。スキルとスペルの違いは、スキルには非同期ではないメソッド、スペルには非同期のメソッドを格納します。スペルはPromiseを返しますので、適切に処理してください。
スキル・スペルもアセット同様、各パークの接頭語で区切られています。
// Skill let ele = this.use("basic.scan", "btn-menu"); // Spell this.cast("unit.materialize").then((addedUnit) => { addedUnit.cast("dialog.open"); });