サイログ。

~雑多な記事置き場~

Miyako2.1.9をリリースしました

おまっとさんでした、Miyako2.1.9をリリースしました。

ダウンロードは↓から。
http://rubyforge.org/projects/ruby-miyako/

変更点は1つ。「シーン間のオブジェクト引き継ぎ」の追加です。

たとえば、2.1.8以前のシーン管理(Story+Scene/SimpleStory+Scene)では、シーンを移動するときに、特定のデータを引き継がせるときは、共通のクラス+クラスメソッドを用いることになります。しかし、これではコードが冗長になってしまう。

そこで、2.1.9では、返却値を複数指定することで、オブジェクトを引き継げるようにしました。たとえば…。

# シーン1
class Scene1
  include Story::Scene

  def update 
    :
    # (1):従来のシーン移動
    return Scene2
    :
    # (2):Scene2に"hoge"を渡す
    return Scene2, "hoge"
    :
    # (3):Scene2に"hoge"と"huga"を渡す
    return Scene2, ["hoge", "huga"]
    :
    # (4):Scene2に"hoge"のみ渡る
    return Scene2, "hoge", "huga"
    :
    # (5):(2)と同じ結果
    self.hand_over = "hoge"
    return Scene2
    :
    # (6)両方指定したときはreturn時の引数が優先
    self.hand_over = "hoge"
    return Scene2, "huga"
  end
end

class Scene2
  include Story::Scene

  # initメソッド内では引き継ぎはできていない
  # setup以降で取得可能
  def setup
    # Scene#.hand_overメソッドで引き継がれた値を参照
    # (1) ... "nil"
    # (2) ... "hoge"
    # (3) ... ["hoge", "huga"]
    # (4) ... "hoge"
    # (5) ... "hoge"
    # (6) ... "huga"
    p self.hand_over
  end
end

これで、シーン移動時のデータ引き渡しは非常にラクになります。
是非ご活用ください。

他に、日記で指摘されたAudio::SEクラスの記述ミスを修正いたしました。

Mac版でのフォント問題は…どうしようか…。