Miyako2.1.0をプレリリースいたします
というわけで、コツコツと作っていたMiyako2.1.0、完成前にプレリリースいたします。
一部のコメントが入ってませんが・・・ごめんね。
ソースはGithubに上げています。
http://github.com/cyross/
主な変更点は↓より。
Miyakoの初期起動を制御、他ライブラリとの親和性を向上
今回、新しく"Miyako/miyako_require_only.rb"を追加いたしました。
このファイルをrequireすると、miyako.rbをrequireしたときに自動的に画面が表示されるなど、SDL関連のライブラリを自動的に初期化していましたが、このファイルをrequireすると、これらの実行を抑制いたします。
つまり、他のライブラリでSDL(Ruby/SDL)を使われているときは、そちらのほうを優先できます。
Miyako.openメソッドを呼び出すと、これまで通りの初期化を行います。
また、各機能ごとにこれらの初期化処理を呼び出すメソッドを用意、個別に初期化することができます。
サウンド関連の見直し
これまでのサウンド関連の機能は、正直言って使えませんでした。たとえば、繰り返し演奏するときに、再生位置が繰り返し先頭に戻るときにplaying?メソッドの値がfalseになるといったものです。
2.1では、モジュールメソッドとして、Audio.updateを用意いたしました。使い方は、Input.updateと同じく、音声の再生状態を監視・更新します。
このメソッドを利用することで、確実な繰り返し終了・フェードアウト・同時再生数の管理などの重要な項目を実現いたしました。
また、2.1からは、BGMは1曲のみ同時演奏可能となっております。
エラーの細分化
以前までは、Miyakoでの例外はMiyakoErrorクラスのみ投げていましたが、2.1からは、以下のクラス構成になりました。
- MiyakoError : 既存の例外クラス・他のクラスの基底クラス
- MiyakoIOError : ファイルI/O関連の例外
- MiyakoFileFormatError : MiyakoIOErrorの派生。ファイル形式の例外
- MiyakoValueError : 値が不正なときの例外
- MiyakoProcError : ブロック関連の例外(ブロックが渡ってきていないなど)
- MiyakoTypeError : 引数のクラス制限に引っかかった時などに発生する例外
- MiyakoCopyError : インスタンスの複製を行うときに起きる例外
ディープコピーの実装
これまで、配列・ハッシュのインスタンスの複写は、それ自身のみで、要素は参照のみ複写という「浅い複写(shallow copy)」のみでしたが、2.1では、これに加えて要素も複写する「deep_dup」「deep_clone」というメソッドを追加いたしました。
Sceneモジュールで使う現在実行シーンを@nowからnow_sceneに変更
インスタンス変数で返すのではなく、メソッドで返すことができるようにしました。2.1では、互換性のために@nowも使えるようになっています。
SpriteBase,Animationモジュールのmixinを徹底
できる限り、各インスタンスで共通のインタフェースを持てるようにいたしました。
Yuki上で別のYukiエンジンを実行可能に
Yuki#over_execメソッド(Yukiスクリプトでも使用可能)で、Yukiで実行している画面の上に、別のYukiの画面を描画することができるようになります。
また、そのYukiエンジンの実行を待つwait_over_execメソッドも追加いたしました。
Arrayクラスの機能追加
Arrayクラスでrenderメソッドが使えるようになりました。配列の要素を一気に描画することができます。
SpriteListクラス
名前-スプライトの一対一対応で関連づけられるSpriteListクラスを用意いたしました。これも、renderメソッドで一気に描画ができます。
・・・他
Partsクラスにinsert,swapメソッドを追加いたしました。
というわけで、
一通り説明いたしました・・・しんどかった。