======SkinPerk======
''継承:Perk'' ''セクション名:skin'' ''優先度:210''
=====概要=====
SkinPerkはユニットのHTMLに関する機能を付与します。またShadow DOMの有効化も、このパークが行います。
=====設定=====
====書式-グローバル設定====
全ユニットに共通な設定はグローバル設定の"system.skin"セクションに記述します。
{
"system": {
"skin": {
"options": {
"path": String,
"shadowDOM": "open"|"close",
}
}
}
}
====書式-ユニット固有設定====
各ユニット固有の設定は"skin"セクションに記述します。
{
"skin": {
"options": {
"fileName": String,
"hasSkin": Boolean,
"path": String,
"shadowDOM": "open"|"closed",
"skinRef": Boolean|String,
},
"skins": {
: {
"fileName": String,
"HTML": String,
"path": String,
"rootNode": String,
"type": "HTML"|"node"|"URL",
"URL": String,
},
...
}
}
}
====書式-タグ属性====
いくつかの設定は、タグ属性で指定することもできます。
===="fileName"====
''型:String'' ''デフォルト:<タグ名>''
HTMLのファイル名を指定します。拡張子は不要です。"skin.options"と"skin.skins."の2箇所に記述することができます。
優先順は高い順に、"skin.skins..fileName"、"skin.options.fileName"、[[ja:bitsmist-js-core:reference:perk:unit-perk#filename_bm-filename|"unit.options.fileName"]]で、いずれも指定がない場合はタグ名がファイル名として使われます。
ファイル名に拡張子"html"を付けたファイルをロードします。
----
===="hasSkin"====
''型:Boolean'' ''デフォルト:True''
ユニットがHTMLを持つかどうかを指定します。Falseの場合、HTMLのロードは行われません。ただし、ロードに関連するイベント、beforeTransform、doTransform、afterTransformイベントは発生します。
----
===="HTML"====
''型:String''
HTMLの文字列を指定します。これは**HTMLであって、HTMLのファイル名ではありません**。"type"設定が"HTML"の時に使用されます。
----
===="path"====
''型:String''
HTMLファイルのパスを指定します。"skin.options"と"skin.skins."の2箇所に記述することができます。グローバル設定のパスと、ユニット固有設定のパスを連結したものが、最終的なパスとして使われます。
グローバル設定は"system.skin.options.path"、"system.unit.options.path"の優先順で使用され、ユニット固有設定は"skin.skins..path"、"skin.options.path"、"unit.options.path"の優先順で使用されます。
----
===="rootNode"====
''型:String''
ユニット内の特定のノードを指し示すセレクタ文字列を指定します。書式はquerySelector()と同じです。そのノードのinnerHTMLがスキンとして利用されます。"type"設定が"node"の時に使用されます。
----
===="shadowDOM"====
''型:String'' ''デフォルト:False''
Shadow DOMを使用する場合、"open"または"closed"を指定します。それ以外の文字を指定すると、Shadow DOMを使用しません。デフォルトではShadow DOMを使用しません。
----
========
''型:String''
スキン名を指定します。デフォルトのスキンは"default"と指定してください。一つのを、ユニットに適用することができます。[[ja:bitsmist-js-core:reference:perk:basic-perk#transform|basic.transform]]スペルを使って別のHTMLに切り替える際に、この名前を指定します。
----
===="skinRef" / bm-skinref====
''型:Boolean|String'' ''デフォルト:True''
ユニットのデフォルトのスキンファイルへのURLを指定します。Trueの場合は、デフォルトのURLが使用されます。Falseの場合、スキンファイルのロードと適用が行われません。[[#hasskin|hasSkin]]オプションをFalseに設定するのと同じ意味になります。
bm-skinref属性を指定した場合、値が指定されていればファイルへのURL、値が指定されてなければTrueとみなされます。Falseを指定したい場合は、"false"という文字列を指定してください。
スキンファイルが存在しない場合、404エラーが発生し、ユニットの初期化が止まります。もしユニットにスキンファイルがないのであれば、明示的にfalseをセットしてください。
----
===="type"====
''型:String'' ''デフォルト:"URL"''
HTMLテンプレートをどこから取得するかを指定します。タイプは"HTML"、"URL"、"node", "inline"のいずれかです。"HTML"の場合は、"HTML"設定からHTML文字列を取得して使用します。"URL"の場合は、"URL"設定で指定されたURLからHTMLファイルをロードします。"node"の場合は、"rootNode"設定で指定されたセレクタを使いノードを取得し、それを利用します。"inline"の場合は、タグのinnerHTMLが使われます。
----
===="URL"====
''型:String''
HTMLファイルのURLを指定します。"type"設定が"URL"の時に使用されます。
=====イベントハンドラ=====
====beforeTransform====
設定の"skin.options.hasSkin"がTrueの場合(デフォルトはTrue)、[[#summon|summon]]スペルを使ってスキンをロードします。
[[#summon|summon]]スペルがHTMLをロードした際に作成したTemplateノードを、このイベントハンドラ内でクローンしたものが[[ja:bitsmist-js-core:reference:perk:basic-perk#unitroot|unitRoot]]プロパティにセットされます。次のdoTransformで実際に適用されるまでは、ユニットのスキンに対する操作はこのクローンに対して行われ、画面には描画されません。
===参照する設定===
* [[#hasskin|skin.options.hasSkin]]
----
====doTransform====
設定の"skin.options.hasSkin"がTrueの場合(デフォルトはTrue)、[[#apply|apply]]スキルを使って、beforeTransformで作成されたTemplateのクローンをユニットに追加し、表示します。
===参照する設定===
* [[#hasskin|skin.options.hasSkin]]
=====インベントリ=====
====skins====
''型:Object'' ''対象:インスタンス''
スキン情報を保持するオブジェクトです。それぞれのアイテムは以下のキーを持っています。
|< 100% 180px 130px - >|
^キー^型^説明^
|name|String|スキン名です。|
|HTML|String|スキンのHTMLです。|
|template|String|スキンのHTMLから作られたtemplateノードです。|
|status|String|スキンのロード状態を示します。""(空白)またはloaded"の値を取ります。|
----
====active====
''型:Object'' ''対象:インスタンス''
現在アクティブなスキン情報を格納するオブジェクトです。
以下のキーを持ちます。
|< 100% 180px 130px - >|
^キー^型^説明^
|skinName|String|現在有効なスキン名です。[[#apply|apply]]スキルを使用すると、セットされます。|
=====スキル=====
====apply====
''型:Undefined'' ''対象:Unit''
ユニットにスキンを適用します。指定されたスキンが既に適用されている場合、何もしません。
===パラメータ===
|< 100% 180px 130px - >|
^パラメータ^型^説明^
|skinName \\ ''必須''|String|適用するスキンの名前です。|
|clone|Node|適用するテンプレートです。指定がない場合、[[#skins|スキン情報]]にあるテンプレートが使用されます。|
===戻り値===
なし。
===例外===
* 指定されたスキンがまだロードされてない場合。
=====スペル=====
====summon====
''型:Object'' ''対象:Unit''
HTMLファイルをロードします。ロードするのみでユニットには適用されません。既にロード済みの場合は、ロードされません。optionsパラメータが渡されない場合、パラメータで指定されたスキン名の設定を参照します。
===パラメータ===
|< 100% 180px 130px - >|
^パラメータ^型^説明^
|skinName \\ ''必須''|String|ロードするスキン名です。|
|options|Object|[[#書式-ユニット固有設定|設定のの値]]と同じものです。|
===戻り値===
ロードしたスキンの[[#skins|スキン情報オブジェクト]]を返します。
===参照する設定===
* [[#path|skin.options.path]] / [[ja:bitsmist-js-core:reference:perk:unit-perk#path_bm-path|unit.options.path]]
* [[#skinref_bm-skinref|skin.options.skinRef]]
* [[#path|skin.options.path]]
* [[#fileName|skin.skins..fileName]]
* [[#type|skin.skins..type]]
* [[#html|skin.skins..HTML]]
* [[#path|skin.skins..path]]
* [[#rootnode|skin.skins..rootNode]]
* [[#url|skin.skins..URL]]
* [[#path|system.skin.options.path]] / [[ja:bitsmist-js-core:reference:perk:unit-perk#path_bm-path|system.unit.options.path]]