afApplication.h
上传用户:kaiguan
上传日期:2007-10-28
资源大小:1074k
文件大小:4k
源码类别:

其他游戏

开发平台:

Visual C++

  1. // afApplication.h
  2. //Program Main Body
  3. //////////////////////////////////////////////////////////////////////
  4. #ifndef AF_APPLICATION
  5. #define AF_APPLICAITON
  6. #pragma once
  7. #include "afCamera.h"
  8. #include "afLog.h"
  9. #include "afSettings.h"
  10. #include "afInput.h"
  11. enum APP_STATE_TYPE
  12.     APPSTATE_LOADSPLASH, 
  13.     APPSTATE_DISPLAYSPLASH, 
  14.     APPSTATE_ACTIVE    
  15. };
  16. // Error codes
  17. #define AFERR_NODIRECT3D       0x00000001
  18. #define AFERR_NOD3DDEVICE      0x00000002
  19. #define AFERR_ARTLOADFAILED    0x00000003
  20. #define AFERR_NOINPUT          0x00000004
  21. class afTerrain;
  22. struct CULLINFO
  23. {
  24.     D3DXVECTOR3 vecFrustum[8];    // corners of the view frustum
  25.     D3DXPLANE planeFrustum[6];    // planes of the view frustum
  26. };
  27. struct SCREENVERTEX
  28. {
  29.     D3DXVECTOR4 p;
  30.     DWORD       color;
  31.     FLOAT       tu, tv;
  32. };
  33. #define D3DFVF_SCREENVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1)
  34. LRESULT CALLBACK StaticMsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
  35. class afApplication  
  36. {
  37. public:
  38.     afApplication();
  39.     HRESULT Create( HINSTANCE hInstance );
  40.     INT     Run();
  41.     LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
  42.     VOID    SetAppState( DWORD dwAppState ) { m_dwAppState = dwAppState; }
  43.     DWORD   GetScreenWidth() { return m_dwScreenWidth; }
  44.     DWORD   GetScreenHeight() { return m_dwScreenHeight; }
  45.     float   GetAppTime() { return m_fTime; }   
  46.     BOOL    IsFullScreen() { return m_bFullScreen; }
  47.     HRESULT RenderFrame();   
  48.     // Error handling
  49.     VOID             CleanupAndDisplayError( DWORD dwError, TCHAR* strArg1, TCHAR* strArg2 );
  50. protected:
  51.     HRESULT          OneTimeSceneInit( HWND hWnd );
  52.     HRESULT          UpdateScene();
  53.     VOID             FrameMove();
  54.     HRESULT          RenderScene();
  55.     VOID             FinalCleanup();   
  56.     // Display functions
  57.     HRESULT          InitDeviceObjects( HWND hWnd );
  58.     HRESULT          RestoreDeviceObjects();
  59.     HRESULT          InvalidateDeviceObjects();
  60.     HRESULT          DeleteDeviceObjects();
  61.     HRESULT          SwitchDisplayModes( BOOL bFullScreen, DWORD dwWidth, DWORD dwHeight );
  62.     // Menu functions
  63.     VOID             ConstructMenus();
  64.     VOID             DestroyMenus();
  65.     VOID             UpdateMenus();
  66.     // Rendering functions
  67.     VOID             RenderSplash();
  68.     VOID             DarkenScene( FLOAT fAmount );  
  69. protected:
  70.     // Misc game functions
  71.     VOID             UpdateCullInfo( CULLINFO* pCullInfo, D3DXMATRIXA16* pMatView, D3DXMATRIXA16* pMatProj );
  72.     
  73. public:
  74.     DWORD  m_dwWindowStyle;
  75.     RECT                 m_rcWindowBounds;
  76.     RECT                 m_rcWindowClient;
  77.     BOOL                 m_bDebugMode;
  78.     BOOL                 m_bWireMode;
  79.     BOOL                 m_bPaused;    
  80.     TCHAR*               m_strAppName;
  81.     HWND                 m_hWndMain;                // Main window
  82.     DWORD                m_dwScreenWidth;           // Dimensions for fullscreen modes
  83.     DWORD                m_dwScreenHeight;
  84.     D3DDISPLAYMODE       m_DesktopMode;
  85.     D3DFORMAT            m_d3dfmtFullscreen;        // Pixel format for fullscreen modes
  86.     D3DFORMAT            m_d3dfmtTexture;           // Pixel format for textures
  87.     BOOL                 m_bFullScreen;             // Whether app is fullscreen (or windowed)
  88.     BOOL                 m_bIsActive;               // Whether app is active
  89.     BOOL                 m_bDisplayReady;           // Whether display class is initialized
  90.     BOOL                 m_bMouseVisible;           // Whether mouse is visible
  91.     HBITMAP              m_hSplashBitmap;           // Bitmap for splash screen    
  92.     DWORD                m_dwAppState;              // Current state the app is in
  93.     
  94. afTerrain*  m_pTerrain;
  95.     // Player view mode
  96.     afCamera             m_Camera;                  // Camera used for 3D scene
  97. afInput*             m_pInput;
  98.     CULLINFO             m_cullinfo;                // Cull info updated from camera position
  99.    
  100.     // DirectDraw/Direct3D objects
  101. HINSTANCE          m_hInst;
  102.     D3DPRESENT_PARAMETERS   m_d3dpp;
  103. IDirect3DDevice9* m_pd3dDevice;
  104. LPDIRECT3DVERTEXBUFFER9 m_pViewportVB;
  105.     
  106.     FLOAT                   m_fTime;             // Current time in seconds
  107.     FLOAT                   m_fElapsedTime;      // Time elapsed since last frame
  108.     FLOAT                   m_fFPS;              // Instanteous frame rate  
  109. };
  110. #endif