Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

SimpleFramework.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 // Lamp : Open source game middleware
00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //------------------------------------------------------------------------------
00019 
00020 /** @file
00021  * シンプルフレームワークヘッダ
00022  * @author Junpee
00023  */
00024 
00025 #ifndef SIMPLE_FRAMEWORK_H_
00026 #define SIMPLE_FRAMEWORK_H_
00027 
00028 #include <Framework/Utility/WindowCreator.h>
00029 
00030 // 以下のファイルは頻繁に使用するのであらかじめインクルードしておく
00031 #include <Input/Keyboard/Keyboard.h>
00032 #include <Input/Mouse/Mouse.h>
00033 #include <Core/Utility/Random.h>
00034 
00035 namespace Lamp{
00036 
00037 class FPSController;
00038 
00039 //------------------------------------------------------------------------------
00040 /**
00041  * シンプルフレームワーク
00042  *
00043  * 最低限必要な処理を詰め込んだ小さなフレームワーク。基本的にフレームワークはLampに
00044  * とっつきやすくするため、用意されています(例えるならコード量の少ないd3dapp)。
00045  * ちゃんとしたアプリケーションを組む場合は、このフレームワークを参考にしてプログラム
00046  * を1から書きはじめ、だんだん大きくしていけばよいでしょう。
00047  * その場合は空っぽのオーバライドメソッドをフレームワークメソッドと置き換えるように
00048  * するとプログラムがシンプルになります。
00049  */
00050 class SimpleFramework{
00051 public:
00052     //--------------------------------------------------------------------------
00053     // 生成、破棄
00054     //--------------------------------------------------------------------------
00055     /**
00056      * コンストラクタ
00057      * @param name アプリケーション名
00058      */
00059     SimpleFramework(const String& name);
00060 
00061     /**
00062      * デストラクタ
00063      */
00064     virtual ~SimpleFramework();
00065 
00066     /**
00067      * 実行
00068      * @param instance インスタンスハンドル
00069      * @return 成功すれば0を返す
00070      */
00071     virtual int execute(HINSTANCE instance);
00072 
00073 protected:
00074     //--------------------------------------------------------------------------
00075     // オーバーライドメソッド
00076     //--------------------------------------------------------------------------
00077     /**
00078      * 初期化
00079      * @return 初期化に成功すればtrueを返す
00080      */
00081     virtual bool initialize(){ return true; }
00082 
00083     /**
00084      * 後始末
00085      */
00086     virtual void finalize(){}
00087 
00088     /**
00089      * 実行
00090      */
00091     virtual void run(){}
00092 
00093     /**
00094      * レンダリング準備
00095      */
00096     virtual void renderSetup(){}
00097 
00098     /**
00099      * レンダリング
00100      */
00101     virtual void render(){}
00102 
00103     //--------------------------------------------------------------------------
00104     // フレームワークメソッド
00105     //--------------------------------------------------------------------------
00106     /**
00107      * フレームワークの初期化
00108      * @param instanceHandle インスタンスハンドル
00109      * @return 初期化に成功すればtrueを返す
00110      */
00111     virtual bool frameworkInitialize(HINSTANCE instanceHandle);
00112 
00113     /**
00114      * フレームワークの実行
00115      * @return 実行結果。WinMainの返り値
00116      */
00117     virtual int frameworkExecute();
00118 
00119     /**
00120      * フレームワークの後始末
00121      */
00122     virtual void frameworkFinalize();
00123 
00124     //--------------------------------------------------------------------------
00125     // ループ内の処理
00126     //--------------------------------------------------------------------------
00127     /**
00128      * メインループ
00129      */
00130     virtual void mainLoop();
00131 
00132     /**
00133      * フレームワーク実行
00134      */
00135     virtual void frameworkRun();
00136 
00137     /**
00138      * フレームワークレンダリング準備
00139      */
00140     virtual void frameworkRenderSetup();
00141 
00142     /**
00143      * フレームワークプレゼンテーション
00144      * @return デバイスがロストしていればtrue
00145      */
00146     virtual bool frameworkPresentation();
00147 
00148     /**
00149      * フレームワークレンダリング
00150      */
00151     virtual void frameworkRender();
00152 
00153     //--------------------------------------------------------------------------
00154     // ウィンドウプロシージャ関連
00155     //--------------------------------------------------------------------------
00156     /**
00157      * ウィンドウプロシージャ
00158      * @param windowHandle ウィンドウハンドル
00159      * @param message メッセージ
00160      * @param wParam wメッセージパラメータ
00161      * @param lParam lメッセージパラメータ
00162      * @return メッセージを処理し、それ以上の処理が必要無いならば0以外を返す。
00163      */
00164     virtual LRESULT windowProcedure(
00165         HWND windowHandle, u_int message, WPARAM wParam, LPARAM lParam){
00166         return 0;
00167     }
00168 
00169     /**
00170      * フレームワークウィンドウプロシージャ
00171      * @param windowHandle ウィンドウハンドル
00172      * @param message メッセージ
00173      * @param wParam wメッセージパラメータ
00174      * @param lParam lメッセージパラメータ
00175      * @return メッセージを処理し、それ以上の処理が必要無いならば0以外を返す。
00176      */
00177     virtual LRESULT frameworkWindowProcedure(
00178         HWND windowHandle, u_int message, WPARAM wParam, LPARAM lParam);
00179 
00180 public:
00181     //--------------------------------------------------------------------------
00182     /**
00183      * 登録用ウィンドウプロシージャ
00184      * @param windowHandle ウィンドウハンドル
00185      * @param message メッセージ
00186      * @param wParam wメッセージパラメータ
00187      * @param lParam lメッセージパラメータ
00188      */
00189     static LRESULT CALLBACK registrationWindowProcedure(
00190         HWND windowHandle, u_int message, WPARAM wParam, LPARAM lParam);
00191 
00192 protected:
00193     //--------------------------------------------------------------------------
00194     /// 名前
00195     String name_;
00196     /// ウィンドウハンドル
00197     HWND windowHandle_;
00198     /// ウィンドウ作成パラメータ
00199     WindowCreator::CreateParameter createWindowParameter_;
00200     /// ウィンドウ最小サイズ
00201     DimensionI minimumWindowSize_;
00202     /// 背景色
00203     Color4c backGroundColor_;
00204 
00205     /// FPSコントローラ
00206     FPSController* fpsController_;
00207     /// キーボード
00208     Keyboard* keyboard_;
00209     /// マウス
00210     Mouse* mouse_;
00211     /// フルスクリーンで開始するか
00212     bool startFullscreen_;
00213 
00214     /// インスタンス
00215     static SimpleFramework* instance_;
00216 
00217 private:
00218     // コピーコンストラクタの隠蔽
00219     SimpleFramework(const SimpleFramework& copy);
00220 
00221     // 代入コピーの隠蔽
00222     void operator =(const SimpleFramework& copy);
00223 
00224 };
00225 
00226 //------------------------------------------------------------------------------
00227 } // End of namespace Lamp
00228 #endif // End of SIMPLE_FRAMEWORK_H_
00229 //------------------------------------------------------------------------------
00230 

Generated on Wed Mar 16 10:29:35 2005 for Lamp by doxygen 1.3.2