タスクシステムっぽく

新しいプロジェクトを立てた。
その名もsakana
ただ単に、sakanaのドット絵を描いたからだけどね……。
開発中のシューティングの前準備という位置付け。


LuaC++を連結する為に、様々な関数を追加した。
大抵は、DXライブラリの関数の基本的なもの。


当初、敵とか、弾とかを別々に格納しようかと思ったが、種別が増える度に検索する種別対象を増やすのは設計上で問題ある様な気がしたので、結局ひとつのタスクにしてみた。
一般的なタスクシステムだね。自分のは、vectorを使用しているので、ちょっと違うかもしれないけど……。
ぐるんと一巡させれば、処理が完了、楽になった。


当初予定していた「Lua側からMoverを追加する」というのを止めて、すべて、この一元管理されたタスクに積み込むという形にした。これも楽になった。


ただ、前後関係という問題が発生した。
タスクの前から順番に描画してしまうと「前にあるものほど、後ろに表示されてしまう」という現象が起きてしまう。
たとえば、自機と弾があった場合、弾を放ったにもかかわらず、自機よりも後ろに表示されてしまうと、弾の発射を確認できない。
地形やら、敵やらが、てんでバラバラに入り組んでしまうと、こんぐらかった画面構成になってしまう。
どうしようかと悩んだが、Lua側で、どの種類を優先的に描画するかを指摘可能にすれば、解決出来ることがわかった。よかった。


あと、欲しいのは、当たり判定とマップの把握。
ここら辺も、構想が出来たので、試したい。
タスクシステム特有の「タスク毎にいろいろな値を格納できる」というのも、実現できそう。
Lua特有のデータ受け渡しを逆手にとって利用してみよう。