ボード表示が可能に
EdaxBoardのボード表示は、実は、MasterReversiのソレとは大きく異なる。
どう異なるのかというと、EdaxBoardのボード表示は、ある意味、至極、普通の作りになっている、という事になる。
具体的には、盤面だとか石だとかの画像ファイルをリソースとして持っていて、それらをメモリ上で合成し、その結果をウインドウに描画している感じになる。
上記を見た読者の中には、MasterReversiは違うのか? と、思った人もいるかもしれないのだが、MasterReversiのボード表示は全く異なる感じになっている。
何故なら、盤面だとか石だとかの画像ファイルはリソースとして持っておらず、それらについては、自前の専用の描画ルーチンでメモリ上に描画しているからだ。
と、言う事で、EdaxBoardのボード表示はMasterReversiと比べると、かなり安易な作りになっているので、今日の時点で、macOS版についても、ボード表示は可能になった。
なので、次は、リバーシ関連の内部処理を動作させて行けば、その結果をボード表示で確認できるので、移植作業も進んでいく事になる筈だ。
ちなみに、上記では、ボード表示は簡単に実現できた! みたいに書いているのだが、実際には、実装には、それなりに苦労した。
その理由は、作者的には、macOS向けのソフトも色々と開発してきているので、macOS向けソフトの画面描画方法というのは、知らない事はないのだが、実際のところとしては、あまり覚えてもいないからだ。
なので、今日は、ボード表示を実現するにあたって、どんな感じの処理コードを書けば良いのやら、と、AG-ムービーカッターのコントローラー部分の描画方法を参考にした。
何故、コントローラー部分なのか、というと、映像表示部分はOpenGL描画になっていて、EdaxBoardの描画にはOpenGLは使わない予定だからだ。
もっとも、うんうん、リバーシごときの盤面表示にOpenGLなんて使う訳ないよなあ、と、思った人は、常識的な考え方をしていると思われるのだが、実際の所、Windows版MasterReversiのボード表示にはDirect2D描画を使っている。
ただし、初版の頃には、普通にGDIで描画していたのだが、にも関わらず、途中からDirect2D描画に切り替えたのは何故だったのか、というと、石の回転アニメーションが、少なくともMirror-DTC経由で接続していた場合、滑らかに行われなかったからだ。
つまり、GDI描画というのは、実は、それなりに重かったので、途中から、より軽いDirect2D描画に切り替えた訳だ。
更に言えば、Android版のMasterReversiも、実は、盤面描画には、OpenGLを使っている。
何故、そんな事をしているのか、というと、やはり、石のアニメーションでは、普通の描画ではなく、OpenGLを使わないと、滑らかに描画する事ができなかったからだ。
と、言う事で、EdaxBoardのボード表示は、二重の意味で、MasterReversiのボード表示よりも手を抜いているのだが、石のアニメーションはないので、別に、OpenGLを使わなくても、描画が重い! という事はない。
もっとも、逆に、作者製ソフトでは、OpenGLを使わない描画処理は少ないので、普通の描画処理では、どんなコードを使っていたかなあ、というのを思い出すのは難しかった訳だ。
なので、過去に開発したソフトのコードを参照しつつ、コードを書いていったので、作業には、それなりの時間と労力が必要になった今日この頃だ。

