Luaによる画像読込法及び利用方法について

ずっと悩んでいた開発中のシューティング"SevenMonsters"の画像読込み方法。
漸く解決出来そうだぜ、いえいえいえい。


事の発端は、D言語の仕様を眺めて「連想配列」なる存在を知ったこと。
文字列等をキーにして、配列を組める。
これは、Luaにはあったのを知っていたが、D言語にもあったのかー、ほほー、かなり便利じゃん。
で、C++の仕様を見直したら……どうやら、C++にも連想配列があったみたいだった。
その名も、map。
あ、あったんだ。知らなかった……初めまして、こんにちは……。
無知の知に顔を赤らめてしまった、ぽっ。


で、この時、ロマサガの豆電球並みに、キラーンと光った。
LuaC++の連結の仕方でどうしても上手くいかなかったところを思いついた。
以下妄想。


画像及び画像を管理するファイルを同名にする。
画像を管理するファイルに、アニメーション画像の分割数を定義しておく。
で、それを連想配列「アニメーショングラフィッククラス」に追加してゆく。


例えば、
test1.bmp test1.ini
test2.bmp test2.ini
test3.bmp test3.ini
というファイルがあったとする。
これを同じフォルダ内に入れておいて、C++側からそのフォルダ内にあるファイルを一斉捜索する。
(フォルダ内、一斉捜索なので、必要なだけファイルを入れておけば良い)
そうすると、見つかった情報を元に、連想配列に積んでゆく。
例の場合だと、
test1
test2
test3
という三つのクラスを積んだことになる。
画像の積み込みはこれで終わり。


で、Lua側のivent側から、画像を利用できるようにしておく。
例えば、
cGetGraph("test1", 0)
という感じにしておけば、test1の分割された0枚目のグラフィックのハンドルを取得可能になる。
すなわち、Lua側からの敵、プレイヤー画像の描画が可能になる。
めでたしめでたし。


重要なのは、二つ。
1.フォルダに、画像と設定ファイルを追加していくだけで済むということ
C++側でフォルダ内を一斉に捜索するから)
2."key=画像ファイル名"なので、Luaのソース編集時に、あたかも画像そのものを使用している感覚で扱えること


これで、Luaのソースを変えるだけで済むという理想的なプログラム構成になる……はず。
散々悩んだけど、漸く土壌が固まった。
いえいえいえい。