パークによる拡張
概要
BitsmistJSの核であるUnitユニットはごく単純な機能しか持ちません。各ユニットはパークを適用することで、機能を拡張できます。
例えばサンプルのハローユニットでは、イベントハンドラを設定でセットしましたが、これはEventPerkによって処理がされています。またHTMLファイルのロードと適用は、SkinPerkによって行われます。
パークには次の機能があります
- ユニットの処理中の特定のタイミング(イベントハンドラ)で処理を行う。
- ユニットにスキル・インベントリ等を追加する。
デフォルトでは以下のパークがユニットに適用されています。
パークの適用
パークを適用するには、各ユニットの設定に記述する必要があります。2つの記述方法があります。
"perk"セクションに記述する
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 |