現在、開発凍結されています。ここに記載されている内容は、現在実現の目処はたっていません。
06/09/17
概要
ゲーム内のマルチウィンドウシステムを実現する。
CBWDrawとCBWInputにより画面への描画とマウス・キーボード入力を行う。
特にCBWWindowItemを設定することにより入力は自動化される。
機能
- ウィンドウの範囲外を右クリックするかキャンセルボタンを押すとOnCancelメソッドが呼び出される(オーバーライドして機能を設定可能)
- ウィンドウ内のCBWWindowItemが選択されるとOnSelectメソッドが呼び出される(オーバーライドして機能を設定可能)。
- 選択状態で決定ボタンを押すか項目を直接クリックするかショートカットキーを押すことでOnSubmitメソッドが呼び出される(オーバーライドして機能を設定可能)。
使用方法
このクラスを継承したクラスを作成して新たなウィンドウを定義する。
派生クラスのコンストラクタではウィンドウサイズ、位置、CBWWindowItemによるウィンドウ構成を設定する。
ゲームのメインループ内では、CBWWindow::OnFrameAllとCBWWindow::OnDrawAllを呼び出すことでウィンドウを動作及び描画させる。
メンバ関数
void Move(int x, int y)
ウィンドウ位置を変更する簡易メソッド。
このメソッドを使うとOnMoveメソッドが呼び出される。
virtual void OnCancel()
画面外右クリック時及びキャンセルボタン押下時に呼び出される。
virtual void OnDraw(CBWDraw* lpDraw)
これをオーバーライドして画面描画を実装する。
描画自体は自動化されていないので個別に描画処理を記述しなければならない。
static void OnDrawAll(CBWDraw* lpDraw)
全てのウィンドウを描画する。
virtual void OnFrame()
OnFrameAllで呼び出される。
一応用意しているが本来これはオーバーライドすべきではない。
static void OnFrameAll()
ウィンドウシステムを動作させるためにはこれを呼び出す必要がある。
最前面のウィンドウの入力処理を行った後全てのウィンドウのOnFrameを呼び出す。
virtual void OnMove()
Moveメソッドで移動された直後に呼び出される。
virtual void OnSelect()
項目が選択されたときに呼び出される。
OnSubmitの前に呼ばれているとは限らないことに注意。
virtual void OnSubmit()
項目が選択状態のときに決定ボタンが押されるかマウスで直接クリックしたときに呼び出される。
「いいえ」を選択した場合もこちらが呼ばれることに注意。
void SetSize(int w, int h)
ウィンドウサイズを変更する簡易メソッド。
void CBWWindowItem::Init(CBWWindow* parent, int id, int x, int y, int w, int h, CBWWindowItem* up, CBWWindowItem* left, CBWWindowItem* right, CBWWindowItem* down)
ウィンドウ内の選択項目の設定を行う簡易メソッド。
タブボタンによる移動の順序はこのメソッドを呼び出した順となる。
また、同じ引数を持つコンストラクタは内部的にInitメソッドを呼び出している。