タスクシステム試作(2) のつづき。
んー、悩ましい...
こんなシナリオを考える:
- ザコ敵が数機、編隊を組んで飛来
- 定位置に到達したらバラ弾を散布
- 一定時間で散開
- 自弾に接触したザコ敵は破壊され編隊から離脱、
そいつが撃ったバラ弾も消失
これをタスクシステムで組み立てると
編隊は複数のザコ敵の集合で構成されます。
それぞれのザコ敵は散布したバラ弾を持ってます。
ここでザコ敵が被弾したとき、編隊から離脱するんだから、
ザコ敵.Update() {
if ( 被弾した ) {
this.バラ弾を消去();
編隊.離脱(this);
}
}
こんなカンジのロジックになるかしら。
問題は 編隊.離脱(this) なのよ。オノレを編隊から抜かにゃならん。
ってことは、編隊の参照をどっかに持ってにゃならんのです。
数多くのザコ敵それぞれが所属する編隊の参照を持つことが
時間と空間を圧迫せんだろうか。
機体番号と所属する編隊との辞書を用意し、被弾したらその辞書
を引くのだろうか...
時間と空間の制約が厳しい環境下での実装はホント久しぶりです。
リアルタイムな組み込みモノは経験ありますけど、タスクがダイナミックに
追加/削除される形態は初めてなの。