ここまで、やりたいアイデアの大半を実現できた。
さらに一歩進めるために、細胞のスプライト1つずつに対して、情報を管理しなくてはならない。
配列変数で管理するのは、少々面倒。画面外にでたり、破壊された細胞のスプライト番号は、再利用されることが前提になるため、消えた後の処理が煩雑になる。
そこで、スプライトパラメーターを使うことを思いついた。ESI_OPTIONという項目が、ユーザが使えるのだが、セットできるのは整数で、かつ1つだけだった。
複数のフラグなどの情報を持たせたかったので、困ったことになった。
整数だけではあるけど、32ビット分は使える。なので、フラグごとに最大値を決めて、何ビットを使うかを洗い出した。
洗い出した項目はこんな感じ。
- 細胞の膨張段階 0~4 3ビット
- 細胞が1段階膨らむまでの耐久弾数 1~7 3ビット
- 細胞の色パターン番号 2~6 3ビット
- 追尾フラグ 0/1 1ビット
- 追尾回数 0~7 3ビット
計:13ビット
そして、それらのビットをすべて繋げて、1つの整数値としてESI_OPTIONにセットすればよいなと。
ビットごとに分けるというキーワードから、ピンと来てる読者の方もいると思うけど、もうおなじみになった、ビット演算を利用することにした。
右詰めで配置したビットの○ビット目から△ビットまでを取り出して、一番末端のビットが右端になるまでシフトすれば、数値として扱えるし、複数の意味を一つの数値に持たせられる。
問題は、これらの値を設定する、取り出す方法だった。
次回に続く。