■ 新・ゲーム開発講座 |
■ へっぽこプログラミング入門♪ |
■第44夜:システムメニュー:FPS |
EXITに引き続き、ここではFPSフラグ設定をメニュー項目に追加します。要領は一緒なのでどんどん行きましょう。 ■仕様 まずは仕様からです。とりあえず、こんなふうに致しましょう。
さて、前回までと違い現在の設定を青色フォントで強調表示というところが新しい仕様です。マウスカーソルが重なった部分は赤文字反転ですから、文字色はデフォルトの黒、反転の赤、選択状態を表す青の3つが必要です。そこに背景退避用のスペースが加わりますから、合計で4つぶんの窓エリアが並んだBMPを用意する必要があります。ここでは下図のようなBMPを使用することにします。 |
|
■Mode_stat メインループで用いるフラグ構造体 Mode_stat に、FPS の ON/OFF を切り替えるためのフラグを一個追加します。メンバ名は flag_fps とでもしておきましょう。 |
struct _Mode_stat {
extern _Mode_stat Mode_stat; |
■撃つ FPSメニューの起動部分です。内容は前回と大きく変わることはありません。あれれ、現在のFPS表示の ON/OFF はどうなってしまったの?…と思う方がいるかもしれませんが、それは 「回す」 処理のところで常時窓BMPからBackサーフェイスに転送しつづけるので、敢えて起動時に設定する必要がないのです。 |
//===================================================== _Menu_Win SysMenu_fps; //FPSメニューの窓情報用 //名前が長いと面倒なので短縮表記を定義(FPS窓用) int System_fps() //FPSメニュー窓を開く
|
■回す〜締める ぐるぐると回るタスク処理の部分も基本は前回と一緒です。異なるのはメニューアイテム(選択支)の画像をBackサーフェイスに転送するところで、FPS表示の ON/OFF を保持している Mode_stat.flag_fps の値によって、転送画像を黒か青か切り替えています。マウスカーソルが重なっている場合は無条件に赤色反転なので赤転送です。 「締める」部分はメニュー窓の後始末をした後、選択内容に応じて Mode_stat.flag_fps を書き換えて終了します。 |
int System_fps_task() //システムメニューのタスク部分 {
void _System_fps_task_end() //タスクの終了処理部分を分離したもの {
|
■Mainloop メニュー部分が出来たら、メインループでFPS表示を呼んでいるところを、フラグに応じてON/OFF するように書き換えておきましょう。if文を一個追加するだけです。 |
//================================================================== //メッセージ(マウスやキーの入力など)が無いときに実行するループ
|
さて、それでは実行してみましょう。コンパイルしてプログラムを実行すると、前回までは 右クリックでシステムメニューを開き、FPSを選択するとメインメニューが消えてサブ |
FPS=OFFの状態 FPS=ONの状態 |