BitsmistJSの核であるUnitユニットはごく単純な機能しか持ちません。各ユニットはパークを適用することで、機能を拡張できます。
例えばサンプルのハローユニットでは、イベントハンドラを設定でセットしましたが、これはEventPerkによって処理がされています。またHTMLファイルのロードと適用は、SkinPerkによって行われます。
パークには次の機能があります
デフォルトでは以下のパークがユニットに適用されています。
パークを適用するには、各ユニットの設定に記述する必要があります。2つの記述方法があります。
Perkのapplyオプションに、追加したいパークの名前を指定します。複数のパークを指定することが可能です。
_getSettings() { return { "perk": { "options": { "apply": ["EventPerk"] } } }; }
各パークには対応したセクション名があり、設定にそのセクションが存在することで、自動的にパークが適用されます。
例えば、以下の設定には“event”セクションがあるため、EventPerkが自動的に適用されます。
_getSettings() { return { "event": { "events": { "this": { "handlers": { "doSetup": this.onDoSetup } }, } } }; }
どのセクションにどのパークが紐づいているかは、各パークのリファレンスのタイトルの下にある“セクション名”をご覧ください。
パークによってはユニットにイベントハンドラを登録し、そのハンドラ内で独自の処理を行います。パークが登録するイベントハンドラは優先順位を高めており、ユーザイベントよりも先に発生するように設計されています。
どのイベントでどのような処理をするのかはパークによって異なります。例えばSkinPerkは“beforeTransform”で必要なHTMLファイルをロードし、“doTransform”でそのファイルをユニットに適用します。
以下に、コアライブラリに含まれるパークが、どのイベントで何をするかの一覧を示します。詳細については、各リンク先を参照ください。
各パークはユニットのプロトタイプや各インスタンスに、アセット・インベントリ・スキル・スペルを追加する機能も持ちます。
以下にコアライブラリのパークが付加する機能の一覧を示します。詳細は各パークの説明をご覧ください。
| パーク | タイプ | 名称 |
|---|---|---|
| BasicPerk | メソッド | cast |
| use | ||
| アセット | inventory | |
| perk | ||
| skill | ||
| spell | ||
| インベントリ | basic.unitRoot | |
| スキル | basic.locate | |
| basic.locateAll | ||
| basic.scan | ||
| basic.scanAll | ||
| スペル | basic.clear | |
| basic.fetch | ||
| basic.fill | ||
| basic.refresh | ||
| basic.setup | ||
| basic.start | ||
| basic.stop | ||
| basic.transform | ||
| EventPerk | スキル | event.add |
| event.init | ||
| event.remove | ||
| event.reset | ||
| event.triggerSync | ||
| スペル | event.trigger | |
| Perk | スペル | perk.attach |
| perk.attachPerks | ||
| SettingPerk | アセット | setting |
| スキル | setting.get | |
| setting.merge | ||
| setting.set | ||
| スペル | setting.apply | |
| setting.summon | ||
| SkinPerk | インベントリ | skin.skins |
| skin.active | ||
| スキル | skin.apply | |
| スペル | skin.summon | |
| StatusPerk | インベントリ | status.status |
| スキル | status.change | |
| スペル | status.wait | |
| StylePerk | インベントリ | style.styles |
| スペル | style.apply | |
| style.summon | ||
| UnitPerk | インベントリ | unit.units |
| スペル | unit.materialize | |
| unit.materializeAll | ||
| unit.summon |