DXRuby1.5.17devリリース

とりあえずRuby2.1.0用をWikiに置いた。他のバージョン用のものはまた後で。環境まだ整備できてないし。
今回は目立つ機能追加は無いが、こまごまとメソッドの追加と、制限の緩和がメイン。詳細はreadmeの更新履歴を見てもらうということで。

Window.loopが複数置ける

これは前にも書いたが、Window.loopは今まで1回しか置けなかったのを、何度も置けるように変更した。1回制限は何かと面倒だったから。
それにあわせてWindow.loopに引数close_cancel=nilを追加して、trueを渡すとユーザの閉じる操作を無視するようにした。Input.requested_close?で閉じる操作がされたかどうかをチェックすることができる。この機能により従来のループ分解機能は不要なものになったと思う。いろいろ問題が多かったから削除してやりたいぐらいだ。
Window.loopから抜けたときに閉じられて抜けたのかbreakして抜けたのかがわからないから、Window.closed?/created?を追加した。どっちでもいいが返ってくる値は逆になる。気に入ったほうでチェックすればよい。ついでにWindow.closeも追加しておいた。Window.createしてWindow.closeしてまたcreateして、と繰り返しても大丈夫。なはず。
一応Window.loopはネストもできる。使い道は怪しいが。

Inputモジュールのキー定数

そもそもInputモジュールの判定メソッドがキー/パッド/マウスで分かれているのは定数がぶつかっていたからで、別の値を定義しておけば分ける必要もなかったのである。ということでぶつからない値に再定義した。定数の値を直接指定するようなお行儀の悪いコードを書いてる人はいないと思うが、いたら動かなくなるので注意。
それに伴いInput.push?/down?/release?を追加し、配列で複数のボタンを指定することができるようにした。これで例えばESCとXとパッドのボタン1とマウスの右ボタンをキャンセル機能に割り当てる、といったことが簡単にできるし、キーコンフィグ画面で変更するなども簡単にできる。
注意点はデフォルトのキー割り当てがキーボードとパッドに設定されているところで、場合によってはこれを先に解除しておく必要がある。
なお、2個目のパッドについてはP_LEFT + 1のようにパッド番号を足すことで指定できる。って、これreadmeに書き忘れてたなあ。
個人的にはInput.key_push?(K_ESCAPE)という書き方が見た目に直感的すぎるので前のメソッドも捨てがたい。

その他

Soundに色々微妙だが無いよりマシなメソッドを追加しておいた。
内部処理がSJISの部分で使えない文字が発生していたのでUNICODE化した。
ウィンドウの左上に表示されるアイコンをDXRuby専用のだがしかし地味な絵に変更した。
残念な名前のメソッドにaliasを定義した。
Sprite.checkのコールバックshot/hitについて、使わなくても引数を受け取らないとエラーになっていたのだが、引数の数をチェックするようにして受け取らなくても大丈夫なように変更した。
あとはバグの修正。

おしまい

んーまあ、少しは扱いやすくなったんじゃないかなーと。
微修正したり不具合があったら修正したりして、この辺の機能はDXRuby1.4.2としてリリースするだろう。Ruby2.2が出てから。1.8用をリリースする予定は無い。来年には1.9.3のサポートが切れるので1.9系をどうするかが悩むところ。
そんな感じ。