Ver.7.0 Beta11 リリース

PSSLua エンジンを搭載した最初のバージョンをリリースしました.
まだ「ユーザ変数」を実装していなかったり,オプション設定画面からスキンを選択できなかったりといった色々な不備はあるんだけど,Lua の採用により大きく変わったスキンの記述方法を早く公開したかったわけで.
というわけで,スキンファイルの内容が大幅に分かりやすくなりました.
実は元々は「次のスキンファイルの形式は XML だな」とか考えていたんですが,Lua で書いてからはそんなこと無理すぎなわけです.
Lua って主にゲームに組み込まれて使われているようなんですが,PSSLua スクリプトでもアニメーションを実現できます(昨日も書いたけど).マウスの押下イベントなんかを Lua に通知する仕組み(関数だな)を定義しておけば,簡易的なウィジェットすら作れそうだ.

現在一番作りたいウィジェットとしては,Windows 標準ではないプログレスバー.単に自前で線なり枠なりを描画するだけなんだけど,Lua を採用したことによって「デバッグなどの開発サイクルを劇的に短縮,効率化」でき,「適切な関数を作ることにより,複雑な描画手順を簡素化できる」だろう.まぁ,スクリプトを内包するんだから当たり前なんだけど,スキン内で関数を作れるってのは大きな前進です.既にアニメーションの実装をVer.6スキンでの C++ で直接書かれた形式から,Lua で書いた形式に落としているわけですが(ある意味で C++ から Lua への移植となった),ここでも Lua の animation テーブルにほとんどの操作関数を詰め込んでいるおかげで,

OnInit()
    animation:add( "anim1", アニメーションの振る舞いの定義 )
    ...
end

OnUpdate()
    if あるタイミング then
        animation:start( "anim1" )
    else
        animation:stop( "anim1" )
    end
    ...
end

とするだけで,細かい実装は知らなくてもアニメーションの動作を変更できるようになった.
んで,これで Skin6 のコードを軒並み PSS 本体から削除したわけですが,よくあれだけの複雑な仕組みを PSS 本体に実装したものだ,と我ながら感心してしまいます.

ただ,PSS に組み込んだ Lua にはどうやらバグがあるようで,とある条件で Lua がエラーを吐く不具合があるみたい.おそらくは Lua 内部のバッファ関係のバグなんだろうと思うけど,そもそも PSSUNICODE プロジェクトになっていて,そこに Shift-JIS 版の Lua を搭載しようとしてるのが間違いなのではないだろうか(^^;