もちゅるの日常

特に決まっていないざっくばらんなブログ

昔いじってたプログラム見てみた

ソースのブロックコメント部分の日付見てみたら2007年の5月になってた。

気が向いた時と、合い間が一致する時だけしか、いじってなかったから

結構いじっている間隔に間があって、

その時々によってコードの書き方に違いがあって、見ていて面白かった。

特に目立ったのは、

  • コメントの書き方(ブロックコメント含む)
  • 名前の付け方
  • クラス内の定義順
  • メソッド内の処理手順

中でもメソッド内の処理手順は、リファクタリングの勉強もしたお陰もあってか、

なかなか見やすく、ソース眺めてから把握するまでが、結構早かった。

まあ、いじっちゃうわけで

ファイルの読み込み部分や、リソース管理の部分を前とは違うやり方で組んでみた。

前のソースでは、テクスチャだったらテクスチャ専門の管理を作っていたけど、

それを一つのリソースとして扱い、でっかくリソース管理とくくった。

あと、外部ファイルの読み込みを一回の処理で行わずにフレームを跨いで処理するようにしてみた。

外部ファイル管理のまとめ

シングルトンベースには変わりは無いけど、

以前は、色んな所から「読み込め」ってメソッド叩いたら、そのメソッドが帰ってきたときには

読込が終わってる感じだった。

けど、今日組んだのは、「読み込め」って命令じゃなくて「読み込んどいて」って感じの「実行から要請」へ変えてみた。

で、肝心の実行はその管理に更新メソッドを作ってあげて、毎フレーム(別に数フレームでも)そいつを呼んで上げて、

もし「読み込んどいて」っていう要請がストックされていたら、

じゃあ読み込みますね。終わったら要請を破棄して、読込済みの方へ置いときます。

って流れを作ってあげた。

じゃあどうやって読み込みますかね

管理側が読み込みますね。って言っても実際にどのように読み込むかは、正直わかんない。

だから読み込み方法は、各クラスへ任しました。

その変わりその親クラスを管理側が持っておいて、

読み込む時にだけ各クラスで実装されている読み込み処理が呼ばれちゃう用にした。(仮想関数ですね。)

[プログラム]読み込み終わった後

ファイルの読み込みは、これで解決したけど、実際に欲しいのは読み込まれたデータだけ。

ファイル読み込みとは別に読み込まれたデータ、いわゆるリソースだけが欲しくて、ファイル読み込み部分は捨てたい。

なので、ファイル読み込みの中にリソースの塊みたいなクラスを持たせてあげた。

そーしとけば、ファイル読み込みクラスが、ちり際にリソースの塊だけ取り出すことが出来るから。

リソースの塊どーすんの?

ファイル読み込みのちり際にリソースの塊を取れて、無事外部ファイル読み込みが終わった。

だけど、取れたリソースの塊をどう扱うかが問題。

リソースって言っても、パラメタやモデル、テクスチャ、音と、データフォーマットの数だけ存在するので

実質リソースの塊が全タイプを網羅するのは無理。出来てもマンモスクラスの出来上がり。

そこで前のファイル読み込み部分を各クラスへ任せるのと同じように

リソース制御を各クラスへ任せる事にした。

こーしておけば、あとは適当にクラスキャスト投げれば各リソースごとに各クラスの制御を使うことが出来る。

外部ファイル管理が持っているのって実は

ファイル読み込みクラスの親クラスだけ持っていて、
ファイル読み込みクラスは、リソース制御クラスの親クラスだけ持っている構造になった。

これで新たにリソースの種類が増えたとしても、

コア部分には手をつけずに子クラスばっかり増やせば対応できるようになった。

と思いきや

ファイル読み込みクラスを作る時にコアの一部をっていうか、switchのcaseを増やしてあげなきゃいけない。

クラスを作る工場とクラスを作ってくれと頼む発注元が、くっついたままなのが、問題。