00001
00007 #ifndef _GAMEDX_H_
00008 #define _GAMEDX_H_
00009
00010 #include "IsoBomb.h"
00011
00012 class Window;
00013 class GameDXListener;
00014
00018 class GameDX {
00019
00020 public:
00025 GameDX();
00026
00031 ~GameDX();
00032
00033
00034 public:
00040 HRESULT setupD3D();
00041
00047 HRESULT setupDI();
00048
00054 LPDIRECT3DDEVICE8 & getDeviceHandle();
00055
00061 LPDIRECT3D8 & getD3D();
00062
00068 D3DRECT & getClientSurfaceCoords();
00069
00075 LPD3DXFONT & getFont();
00076
00082 LPDIRECTINPUT8 & getDirectInput();
00083
00088 void releaseD3D();
00089
00099 HRESULT resetD3D();
00100
00105 void releaseDI();
00106
00111 void registerListener( GameDXListener& listener );
00112
00118 void removeListener( GameDXListener& listener );
00119
00120 private:
00124 void generateLostEvent();
00125
00129 void generateResetEvent();
00130
00135 HRESULT setupPresentParams( bool isWindowed );
00136
00137 private:
00138
00143 D3DDISPLAYMODE d3ddm;
00144
00149 D3DPRESENT_PARAMETERS d3dpp;
00150
00151
00156 LPDIRECT3D8 m_pd3d;
00157
00162 LPDIRECT3DDEVICE8 m_pd3dDevice;
00163
00168 LPDIRECT3DSURFACE8 m_pMainSurf;
00169
00174 LPDIRECT3DSURFACE8 m_pBackSurf;
00175
00180 LPD3DXFONT m_pd3dFont;
00181
00186 LPDIRECTINPUT8 m_pdi;
00187
00188 typedef std::vector< GameDXListener* > LVector;
00189 typedef LVector::iterator LVectorIter;
00190
00191 LVector listeners;
00192
00193 };
00194
00195 #endif