むずかしいことはわかりません

いろいろ書いてるみたいな

Esenthel Engineを試してみてるんですけども。 - Application States

http://www.esenthel.com/wiki/index.php?title=Application_States

のページをわかる範囲で訳しました。

基本、Wikiに載っていることはほんとに簡単な説明だけであり、

たいていは動画解説を見ろって誘導されちゃうか、Tutorialの

プロジェクトに含まれるソースを見ろってことみたいです。

それ以外は、ヘッダファイルを確認するとかそういう内容なので

まとまった資料を探すためにもWikiを見る一環として書いてます。

 


 

アプリケーションステート

 

ステート(state クラス)は、様々なアプリケーションの状態管理で

使われる。

 

たとえば、例を挙げると

・イントロ

・メニュー

・ゲーム

など。

 

それぞれのステートは、

・初期化

・シャットダウン

・アップデート(更新

・描画

の各関数を持つ

 

初期化とシャットダウンは、オプション関数なのでNULLでもいい

 

アクティブなアプリケーションの状態は1つしかない

違うステートクラスに変更されると最初に呼ばれていたものは

シャットダウン関数(あれば)が呼び出される。

その後、新しいステートクラスで初期化が呼び出される。

 

初期化関数はステートのロードが成功したら、必ずtrueを返す。

そうでない場合はfalseを返す。もしfalseが返ってきたら

アプリケーションは、終了する。

 

ステートがアクティブになると、アップデートと描画の関数は

各フレームごとにエンジンから呼び出される。

 

 

以下のような関数があるとする

 

・StateIntro(InitIntro, ShutIntro, UpdateIntro, DrawIntro関数を含む)

・StateMenu(InitMenu, ShutMenu, UpdateMenu, DrawMenu関数を含む)

・StateGame(InitGame, ShutGame, UpdateGame, DrawGame関数を含む)

 

以下のような順番でステートは呼ばれる。

 

StateIntro - プレイヤーは導入部を見る

StateMenu  - プレイヤーはメニューに入り、新規ゲーム開始を選ぶ

StateGame  - プレイヤーはゲームを開始、その後メニューに抜ける

StateMenu  - メニューでexitを選んで、ゲームを終了する

 

さっき書いたシナリオでは、Esenthel Engineでは次の順番で関数を呼び出す

 

・InitPre(ここは初期化前の関数。エンジンのオプションなどをセットアップする。一度だけ呼ばれる)

・Init(全体の初期化関数。データの読み込みなどを行う。一度だけ呼ばれる)

 ・InitIntor(StateIntroに切り替わり、introの初期化関数が呼ばれる)

  ・UpdateIntro(各フレームでステート内の更新と描画が呼ばれるようになる)

  ・DrawIntro

  ・ (繰り返し)

  ・UpdateIntro

  ・DrawIntro

 ・ShutIntro(StateMenuに切り替わるので、introの終了処理をする)

 ・InitMenu

  ・UpdateMenu

  ・DrawMenu

  ・ (繰り返し)

  ・UpdateMenu

  ・DrawMenu

 ・ShutIntro(StateMenuに切り替わるので、introの終了処理をする)

 ・InitMenu

  ・UpdateMenu

  ・DrawMenu

  ・ (繰り返し)

  ・UpdateMenu

  ・DrawMenu

 ・ShutMenu

 ・InitGame

  ・UpdateGame

  ・DrawGame

  ・ (繰り返し)

  ・UpdateGame

  ・DrawGame

 ・ShutGame

 ・InitMenu

  ・UpdateMenu

  ・DrawMenu

  ・ (繰り返し)

  ・UpdateMenu

  ・DrawMenu

 ・ShutMenu

・Shut(これは、全体的なシャットダウン関数。一度だけ呼ばれる)