/JsonUI_custom_form_pack

Add-on that can display UI created by Satoyans/JsonUI_custom_form_editor from scriptAPI.

Primary LanguageJavaScript

JsonUI_custom_form_editor

image

JsonUI_custom_form_editorで作成したUIを表示するアドオンです。

/scriptevent cf:formを実行すると表示されます。

BP/scripts/form_data.jsを書き換えることで更新できます(多分)。

自由に改変してもらって構いません

配布する際はJsonUI_custom_form_editorのリンクを乗せるようにしてください。

送信しているデータの構造

[データの長さの長さ][データの長さ][データ1][データ2][データ3]

  • データの長さの長さ:データの長さの文字数

  • データの長さ:データ1~3の内、一番長いものの長さ

  • データ1:text,image,buttonの内、表示したいエレメントだけ書く。データの長さまでの残りを;で埋める

  • データ2:テキストとして表示する文字列。データの長さまでの残りを;で埋める

  • データ3:[データの長さの長さ][データの長さ][sizeX][sizeY][offsetX][offsetY]

    • データの長さの長さ:データの長さの文字数
    • データの長さ:[sizeX][sizeY][offsetX][offsetY]の内、一番長いものの長さ
    • sizeX:本来は要素のX*sizeX。このパックでは要素の大きさが1pxのためそのままピクセル。データの長さまでの残りを0で埋める。マイナスの値の時は-00010のようにする
    • sizeY:同上。
    • offsetX:パネルの左からのピクセル。指定したい値-ボタンのインデックス-1にする必要がある(gridで要素のXの1pxずつずれていくため)。データの長さまでの残りを0で埋める。マイナスの値の時は-00010のようにする
    • offsetY:パネルの上からのピクセル。指定したい値-1にする必要がある。データの長さまでの残りを0で埋める。マイナスの値の時は-00010のようにする

218;;;textimagebutton;;;;;;;;;;;;要素14003000300099-101の場合(1個目のボタンとする)

  1. [2][18][;;;textimagebutton][;;;;;;;;;;;;要素][14003000300099-101]データごとに分ける

  2. [textimagebutton],[要素],[14003000300099-101]それぞれから;を消す

  3. データごとに意味を解釈する

    1. [textimagebutton]:text,image,button全ての要素を表示する
    2. [要素]:ラベルに表示
    3. [14003000300099-101]
      1. [1][4][0030][0030][0099][-101]データごとに分ける
      2. [30],[30],[99],[-101]JsonUIによって数値に変換される
      3. [30],[30],[100],[-100]offsetXは+index(0)+1した100に,offsetYは+1した-100にする

注意

  • #size_binding_x(y)はproperty_bagを記述していても動いた。
  • #anchored_offset_value_x(y)はproperty_bagを記述すると動かなかった。
  • 数字はスライス('%.1s' * 0等)できない。
  • JsonUIは()ごとに値から型に変換する 例.('0text')は数字とみなされ0に変換される
  • 日本語などはスライスする際変わった挙動をする
    • 文字のコードポイント?をU+numとすると、
    • num < 128ならば長さ1
    • 128 ≦ num < 2048ならば長さ2
    • 2048 ≦ num < 65536ならば長さ3
    • 65536 ≦ numならば長さ4
    • としてカウントされるっぽい(numはjsの"A".codePointAt(0)で取得できる)
  • 上の制約がある為U+127以下かつJsonUIが正しく処理できる文字で足りない文字を埋める必要がある(' 'だと先頭が数字の文字列の場合変換されてしまうため使えなかった)