各種モジュールの種類を増やして(砲塔・弾薬庫・エンジン)相互に連関するようにした。これはとても面倒な作業で、モジュール同士の接触判定とその処理を作りなおすことになった。
モジュールにはその内部の各所に3種類のセンサーが搭載されていて、それぞれ露出しているか、ほかのモジュールと接触しているか、船体と接触してるかを探知する。これによりモジュールは設置が有効か判定される。さらに例えば砲塔同士の接触はダメで、砲塔と弾薬庫の接触は宜しく、エンジンと弾薬庫の接触はダメで、エンジンと接触した弾薬庫に接した砲塔は弾薬庫からの恩恵を受けられないというような拳を机に叩きつけたくなるような処理が必要になってくる。単純にモジュール同士の接触に伴う処理の数は種類数の平方となる。そこでセンサーはモジュール内で集中管理するようにした。また接触の処理についてはDictionaryとラムダ式で全て規定して、実行時には1行で処理できるようにした。これはあほっぽいやり方だと感じている。しかしこれで以下の様な処理が可能となった。
|
砲塔だけの場合。砲塔は船体に接しているので設置は有効 |
|
弾薬庫を追加。全ての砲塔は弾薬庫と接しているので恩恵を受けてミドリ色になっている |
|
さらにエンジンを追加したが、弾薬庫の一つと接しているため双方とも設置が有効でなくなっている。それによって砲塔も有効でない弾薬庫からの恩恵を受けられなくなった。ただし設置自体は有効のままを維持している |
次は破綻しつつあるマニピュレータを再設計するつもりです。
0 件のコメント:
コメントを投稿