aviutlはluaスクリプトが動くということを(今更)知ったので、ちょっと試してみた。
--dialog:駅名,station_name="";駅名(英語),station_name_en="";駅ナンバー,station_no=0;幅,width=350; local height = 70; local left_offset = 140; local text_x = width - 250; -- 背景(紫) obj.setoption("drawtarget","tempbuffer", width * 2, height * 2); obj.load("figure", "四角形", 0x151380, 1); obj.drawpoly( -width, -height, 0, -width, height, 0, width, height, 0, width, -height, 0 ); -- 背景(オレンジ) obj.load("figure", "四角形", 0xf39800, 1); obj.drawpoly( -width + left_offset, -height, 0, -width + left_offset, height, 0, width, height, 0, width, -height, 0 ); obj.load("figure", "円", 0xf39800, height * 4); obj.draw(-width + left_offset, -height + 2); -- 背景(白) obj.load("figure", "四角形", 0xffffff, 1); obj.drawpoly( -width + left_offset, -height, 0, -width + left_offset, height - 10, 0, width, height - 10, 0, width, -height, 0 ); obj.load("figure", "円", 0xffffff, height * 3); obj.draw(-width + left_offset, -height + 27); -- 駅名 obj.setfont("", 60, 0, 0x000000); obj.load("text", station_name); obj.draw(text_x, -10); obj.setfont("", 30, 0, 0x000000); obj.load("text", station_name_en); obj.draw(text_x, 30); obj.setoption("drawtarget","framebuffer") obj.load("tempbuffer"); obj.draw(0, 0); -- 駅No obj.load("figure", "円", 0x151380, height * 2 - 40); obj.draw(-width + left_offset, -10); obj.load("figure", "円", 0xffffff, height * 2 - 41); obj.draw(-width + left_offset, -10); obj.setoption("drawtarget","tempbuffer", width * 2, height * 2); local cercle_size = height * 2 - 45; obj.load("figure", "円", 0x151380, cercle_size); obj.draw(-width + left_offset, - 10); obj.setoption("blend", "alpha_sub") obj.load("figure", "四角形", cercle_size - 20); obj.draw(-width + left_offset, 65) obj.setoption("drawtarget","framebuffer") obj.load("tempbuffer"); obj.draw(0, 0); obj.setfont("", 50, 0, 0xffffff); obj.load("text", station_no); obj.draw(-width + left_offset, -20);
矩形や円、テキストは
obj.load
で作成。
Wikiによると、大きな矩形はそのまま作るんじゃなくて
obj.drawpoly
で拡大したほうがいいらしいのでそのように実装。
そのまま描写すると円がはみ出すので、一旦
obj.setoption("drawtarget","tempbuffer", width * 2, height * 2);
でサイズ制限したバッファに描写してから
obj.setoption("drawtarget","framebuffer") obj.load("tempbuffer"); obj.draw(0, 0);
で描写することで、はみ出した部分を削除。なんかもちょっといい手段無いかな。
一旦裏画面をクリアしてから駅Noの図形を描写して改めて表画面に転送。
これでシーサイドラインの駅表示っぽくできた。
aviutlの拡張編集を使うとluaでスクリプトが書けるって(今更)知ったので試し書き。
2019年艦これボイス編成の前面展望で駅名表示を付けてみた。https://t.co/tJN7p4N4nV
— まっちゃん (@mattyan_1117) February 20, 2021
それはそうと、wordpresのAPH Prism Highlighterでluaを有効にするとプレビューが見れない……投稿してから有効にすれば見れるかな?