自由研究もお久しぶりです。カサコンです。
beatorajaスキンで一通り作りたいものは作れましたので記事を書くことにしました(いきあたりばったり)
前回はJSONで曲決定画面を作ったところまでやったんでしたよね。
今回はそのJSON形式のスキンをlua形式に変換する流れについて書いてみたいと思います。最初からlua形式でスキンを作ろうとしている方にも参考になると思います。
JSON形式のスキンは下の記事から入手出来ますので参考にどぞ。
luaスキンについてはこちらの記事が参考になります。
.luaskinファイルの作成
まずは.luaskinファイルを作成します。
細かいことは省略しますがスキンとして認識させるために必要なものです。
これに以下を記述します。
local t = require("decide")
if skin_config then
return t.main()
else
return t.header
end
require(“”)の部分には次に作る.luaファイルの名前が入ります。
.luaskinファイルについてはこれで完了ですのでとりあえずおまじないのようなものだと思っておきましょう(違う)
.luaファイルの作成
次に.luaファイルを作成します。これがスキン本体となります。
今回の場合だとdecide.luaファイルとなります。
また1から作り直しか・・・って思ってしまいますがちょっとまってください。
JSONとluaでの書き方を見てみると・・・
JSONの場合
{
"type":6,
"name":"GPaper-JSON",
"w":1920,
"h":1080,
"fadeout":500,
"scene":3000,
"input":500,
"filepath":[
{"name":"フェードアウト時の色", "path":"fadeout/*.png"},
],
"source": [
{"id":1, "path":"number.png"},
],
"font": [
{"id":0, "path":"title.fnt"}
],
"image":[
{"id":"bg", "src":2, "x":0, "y":0, "w":1920, "h":1080},
],
"value":[
{"id":"maxbpm", "src":1, "x":0, "y":0, "w":380, "h":43, "divx":10, "digit":4, "ref":90, "align":2},
],
"text":[
{"id":"genre", "font":1, "size":40, "ref":13, "wrapping":"false", "overflow":1, "outlineColor":"000000ff", "outlineWidth":1},
],
"judgegraph": [
{"id":"notes-graph", "type" : 0}
],
"bpmgraph": [
{"id":"bpmgraph"}
],
"destination":[
{"id":"bg", "dst":[{"x":0, "y":0, "w":1920, "h":1080}]},
]
}
luaの場合
local header = {
type = 6,
name = "GPaper-Lua",
w = 1920,
h = 1080,
fadeout = 500,
scene = 3000,
input = 500,
filepath = {
-- カスタムファイル
{name = "フェードアウト時の色", path = "fadeout/*.png"},
},
property = {
-- カスタムオプション
},
}
local function main()
-- ヘッダ情報コピー
local skin = {}
for k, v in pairs(header) do
skin[k] = v
end
skin.source = {
{id = 1, path = "number.png"},
}
skin.font = {
{id = 0, path = "title.fnt"}
}
skin.image = {
{id = "bg", src = 2, x = 0, y = 0, w = 1920, h = 1080},
}
skin.value = {
{id = "maxbpm", src = 1, x = 0, y = 0, w = 380, h = 43, divx = 10, digit = 4, ref = 90, align = 2},
}
skin.text = {
{id = "genre", font = 1, size = 40, ref = 13, wrapping = false, overflow = 1, outlineColor = "000000ff", outlineWidth = 1},
}
skin.judgegraph = {
{id = "notes-graph", type = 0}
}
skin.bpmgraph = {
{id = "bpmgraph"}
}
skin.destination = {
{id = "bg", dst = {
{x = 0, y = 0, w = 1920, h = 1080}
}}
}
return skin
end
return {
header = header,
main = main
}
細かな違いはありますがほぼJSONの時と書き方がほとんど変わらないのがわかります。
前回のJSONデータをlua化したものをおいておきますので見てみてください。
次はluaスキンにしたことでできる便利な機能などを紹介したいと思います。
それではでは~。
備忘録ついでにGitに追加してみることにしました。