ちょこちょことUIのコードをいじっているが、まだしっくりとは来ていない。どうも全体像がつかめないし、何がどう機能しているのかもよくわからない。キーボード入力ってどういう風に書けばいいの?というレベルである。Win32 APIだとウィンドウメッセージを受けるだけなので簡単なのだが。なんかこう開発者向けドキュメントもビジュアル面というかタッチUIのところばかりがフォーカスされているように思う。クラスごとのリファレンスをよく読めばいいのだけれども億劫だ。こういう新しいことにチャレンジするというのはおじさんにはつらいことだなぁということが体感できるようになってきた。歳取ったなぁ。。
それはさておき、アプリケーションの状態管理はBoost.MSMでやろうと思う。これを使用するとプリコンパイル・ヘッダをもってしても異常にコンパイルが遅くなるという欠点があるのだが、メタなライブラリはコンパイル時間を費やして実行時のパフォーマンスを上げるように書かれているので仕方がない。しかしこれだけコンパイルが遅いとこのライブラリって実用的なのかな?とも思ってしまうが、プログラミング・スタイルにもよると思う。私のようにちょっと書いてはコンパイルしてテストし、ちょっと書いてはコンパイルしてはテストし....とかするタイプにはメタなライブラリはきつい。コンパイル中はTumblrちょこっと見たりする時間は十分にある。そして脱線して気が付いたらプログラミングする時間が無くなっていたりする。どうもよろしくない。やはり最初にじっくり設計をして、一気にコードを書くほうが効率がよいと思う。 状態管理は大まかな部分のみである。ゲーム中の敵の動きもすべてMSMでやるのは厳しいと思う。ゲーム中の敵の動きはコルーチンでやりたいと思っている。
UIだが、大まかな機能ごとにページを切り換えようと思っている。ゲームシナリオのエディタページも作る。これは最初にゲームかエディットかを選択するページを用意するか、もしくはゲーム中にApp Barから呼び出せるようにする。おそらく2ページ以上のアプリとなるだろう。そのためベースとしているSDKサンプル・コードを大幅に改造することになる。サンプルコードはApp.xamlと、MainPage.xaml・GameRendererが密接に結びついている。これを疎な結びつきとなるようにコードを書き直す。そしてページ・ナビゲートできるようコードを書き加える。
しかしUI周りのコードを書くのは実に面倒くさい。この面倒くさがり具合は歳をとるごとに増していっている。いつも通り途中で挫折しそうな予感がするが、まあゆっくりやっていくことにしよう。