Blogger の更新は停止しています.
タイトルそのままです.
Lua スクリプトは全く触ったことがなくて,Lua スキンについても完全に初見でした.
苦労の割に効果はそんなに無い(というかあまり求められていない)のですが,備忘録としてここに書いておきます.
成果物
こういうのができました.(音声なし)
BGA 上の 2 つがそれです.
以下,個人的な備忘録です.
経緯
そもそも使用している Lua スキンを拡張したいと思ったのは,KASAKO さん作成の選曲スキン(ModernChic-Select)への Level Review 表示でした.
ただこの機能を実装するには Mocha-Repository への HTTP 通信が必要そう(未確認)だったので早々に諦め,カーソルが合っている曲の保存先フルパスを表示しようと思い立ちました.
が,どのタイミングで Java 側から提供されているのかとか,どこで値をセットしているのかとかが全くわからずにこちらも頓挫しました.もっと頭が良ければできるんだろうけど.
そこで,選曲スキンはまだ早いと判断してプレイスキンを触ったのがコレです.
使用している mnpy さんのプレイスキン(simple-play)は 幸いにも(?)拡張コンポーネント用のディレクトリ等々があったので,勝手に相乗りしています.
実装
実装は至極単純で,別にあえて書くほどのものでもないのですが….
Lua スキン側では拡張コンポーネント用のディレクトリにテキストファイルを作成し,メイン処理から引っ張ってきたタイトル(と,今は難易度表も)を書き込んでいます.
そのテキストファイルを配信ソフト(自分は XSplit)にソースとして追加したテキストスクリプトの参照先にして,更新時に表示反映をさせています.
実際これだけなのですが,構造を理解するのにだいぶ時間かかってしまった.すでに作られたスキンの拡張でコレなので,1 から作るのは自分には無理そうです.
取り敢えず今の理解としては,Java 側から提供される操作可能な要素はだいたい main_state から型にあった関数で引っ張ってこれるということです.
つまりは公式の Wiki に書いてある内容までしかわからないです.
今後
今回はテキスト出力に,io.open を多用しています.
parts.lua
のいい感じの場所にいい感じに追記します.
--︙
-- 曲名書き込みテキストファイル
local titleTextPath = skin_config.get_path("customize/extension/配信用テキスト出力/title.txt")
exportTitle = io.open(titleTextPath, "w")
exportTitle:write(" " .. playtitle .. " ")
exportTitle:close()
---- 作曲者書き込みテキストファイル
--local artistTextPath = skin_config.get_path("customize/extension/配信用テキスト出力/artist.txt")
--exportTitle = io.open(artistTextPath, "w")
--exportTitle:write(" " .. playartist .. " ")
--exportTitle:close()
-- 難易度表書き込みテキストファイル
local tableTextPath = skin_config.get_path("customize/extension/配信用テキスト出力/table.txt")
exportTable = io.open(tableTextPath, "w")
exportTable:write(" " .. playtable .. " ")
exportTable:close()
--︙
そしてこういったファイル操作系のライブラリを使うことはあんまり推奨されないことも知っています.
これ以外に良い書き方があったら書き直したいですね,直接配信ソフトを触りに行くと,汎用性が失われるのですが….
挫折した選曲スキンの拡張もどうにかできないか試行錯誤中です.サービス終了までには実装したい.
コメント