サイログ。

~雑多な記事置き場~

やっぱりやり忘れていたことがたくさん有った

というわけで、幾つかの修正・機能追加を行いました。
さっき、githubに上げてきました。

というわけで、Miyakoのgithubです。

http://github.com/cyross/ruby-miyako/
git://github.com/cyross/ruby-miyako.git

以下、変更点を。

to_unitメソッドでのインスタンスの複製をやめました

 やっぱりいちいち複製しているとパフォーマンスが落ちますので(^^;
 複製したものが必要なときは、dupメソッドなどを使って複製をお願いします。

 但し、ブロック付きのBitmap.〜メソッドの引数として渡されるSpriteUnitは、複製したものを渡しています。

to_spriteメソッドの適応範囲が広がった

 Map、FixedMap、Plane、TextBoxクラスでもto_spriteメソッドが呼び出せる様になりました。
 但し、Spriteインスタンスを作成していますので、パフォーマンスダウンにお気を付けて下さい。
 また、SpriteUnit構造体でも、to_spriteメソッドを呼び出せば、Spriteインスタンスを生成します。

to_unitメソッドの適応範囲が広がった

 先述のto_spriteメソッド追加に伴って、Map、FixedMap、Plane、TextBoxクラスにto_unitメソッドも追加いたしました。
 但し、to_spriteメソッドでいったんSpriteインスタンス(つまり、1枚の画像)を生成していますので、
 パフォーマンスダウンなどの弊害にお気を付け下さい。

マウスオペレーションの強化

 マウスの利用範囲を広げ、Yukiを使用したコマンド選択でマウスを使ったコマンド選択が出来る様になりました。
(そのため、TextBox、Choicesクラス、Rect構造体にも修正が施されています)

Yukiのポーズ解除等イベント設定の自由度アップ

 また、ポーズ解除、コマンド決定、コマンドキャンセルなどのトリガーをProcインスタンスの配列で管理するようにしました。
 他に必要な処理があるなら、トリガーにメソッド(Proc、lambda)を追加することでトリガーとして機能する様になります。

 たとえば、「1秒間待てばポーズ解除」を追加するには以下の様に修正します

    @yuki = Yuki.new
       :
    @pwait = WaitCounter.new(1.0)
       :
    @yuki.pre_pause{ @pwait.start }
    @yuki.release_checks << lambda{ @pwait.finish? }

 他にも、一時的にポーズ解除の指定を行いたい場合は、ブロックを渡すことで機能します。

    @yuki = Yuki.new
       :
    @pwait = WaitCounter.new(1.0)
       :
    yuki.release_check_during([lambda{@pwait.finish?}], lambda{ @pwait.start }){
       pause
    }

バグの修正

 Bitmap.hsv!メソッドなどで、画像が黒くなるバグや、Map#render_to、FixedMap#render_toメソッドが誤動作していたバグ、マウスボタンのクリックをまともに判別しないバグなどを修正いたしました。