めざせお手軽で富豪的なSTGアーキテクチャー(7)

画像素材(テクスチャ)の型について。
前回IDrawer2DにGmImageResourceなるクラスを渡す、と書きましたが、それの設計をします。
まずはじめに、XNAでテクスチャをどのように所得するかというと、ソリューション内のContentという謎のフォルダに画像ファイルを登録して、あとはGameクラスから

Texture2D texture = this.Content.Load<Texture2D>(assetName);

としてやれば取得できるようになっています。assetNameにはファイル名(の拡張子をはずしたもの)を取るので、それに習ってコンストラクタなどでファイル名を指定すればその画像がロードできるようにしてあればOKでしょう。
あと、SpliteBatchにはアニメーションの機能がないので、アニメーション機能(カウンタに応じてテクスチャのどの部分を転送すれば良いかを計算する機能)も持たせてやります。
画像としてTexture2D以外も使えるようにしたいので(というよりもモデル側のインターフェースに使うのでXNAに依存したくない)、型を保障するためにジェネリックを使うんですが、そうするとIDrawer2Dにも型パラメータが必要になってしまうので、一段ベースクラスを用意して、それをジェネリックでサブクラス化することにします。
あとは、GmObjectなどがインスタンスを取得する方法を用意するわけですが、普通にnew ImageResource(assetName)などとやってしまうとXNAに依存してしまうので、GmImageResourceにLoadResource操作をつけてそこからロードするようにします。
そうすると今度はLoadResourceが生成を委譲するサブクラス(ImageResource)の生成メソッドが必要になり、それを外部から設定する方法も必要になります。ついでに、描画時にテクスチャを取得するための操作も必要ですね。

ああ、なんか文章で書いても意味がわからないな。なんか長くなってきたので次回にソースつきで説明します。