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