colobot/src/d3dapp.h

168 lines
4.3 KiB
C
Raw Normal View History

// * This file is part of the COLOBOT source code
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
// *
// * This program is free software: you can redistribute it and/or modify
// * it under the terms of the GNU General Public License as published by
// * the Free Software Foundation, either version 3 of the License, or
// * (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have received a copy of the GNU General Public License
// * along with this program. If not, see http://www.gnu.org/licenses/.
#ifndef _D3DAPP_H
#define _D3DAPP_H
#define D3D_OVERLOADS
#include <d3d.h>
#include "D3DFrame.h"
#include "D3DEnum.h"
#include "D3DUtil.h"
#include "D3DRes.h"
class CInstanceManager;
class CEvent;
class CD3DEngine;
class CRobotMain;
class CSound;
enum D3DMouse;
enum Error;
class CD3DApplication
{
public:
CD3DApplication();
~CD3DApplication();
protected:
LRESULT OnQuerySuspend( DWORD dwFlags );
LRESULT OnResumeSuspend( DWORD dwData );
public:
Error RegQuery();
Error AudioQuery();
Error CheckMistery(char *strCmdLine);
int GetVidMemTotal();
BOOL IsVideo8MB();
BOOL IsVideo32MB();
HRESULT Create( HINSTANCE, TCHAR* );
INT Run();
LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
VOID Pause( BOOL bPause );
FPOINT ConvPosToInterface(HWND hWnd, LPARAM lParam);
void SetMousePos(FPOINT pos);
void StepSimul(float rTime);
char* RetCDpath();
void SetShowStat(BOOL bShow);
BOOL RetShowStat();
void SetDebugMode(BOOL bMode);
BOOL RetDebugMode();
BOOL RetSetupMode();
BOOL EnumDevices(char *bufDevices, int lenDevices, char *bufModes, int lenModes, int &totalDevices, int &selectDevices, int &totalModes, int &selectModes);
BOOL RetFullScreen();
BOOL ChangeDevice(char *device, char *mode, BOOL bFull);
void FlushPressKey();
void ResetKey();
void SetKey(int keyRank, int option, int key);
int RetKey(int keyRank, int option);
void SetJoystick(BOOL bEnable);
BOOL RetJoystick();
void SetMouseType(D3DMouse type);
void SetNiceMouse(BOOL bNice);
BOOL RetNiceMouse();
BOOL RetNiceMouseCap();
BOOL WriteScreenShot(char *filename, int width, int height);
BOOL GetRenderDC(HDC &hDC);
BOOL ReleaseRenderDC(HDC &hDC);
PBITMAPINFO CreateBitmapInfoStruct(HBITMAP hBmp);
BOOL CreateBMPFile(LPTSTR pszFile, PBITMAPINFO pbi, HBITMAP hBMP, HDC hDC);
protected:
HRESULT ConfirmDevice( DDCAPS* pddDriverCaps, D3DDEVICEDESC7* pd3dDeviceDesc );
HRESULT Initialize3DEnvironment();
HRESULT Change3DEnvironment();
HRESULT CreateZBuffer(GUID* pDeviceGUID);
HRESULT Render3DEnvironment();
VOID Cleanup3DEnvironment();
VOID DeleteDeviceObjects();
VOID DisplayFrameworkError( HRESULT, DWORD );
void InitText();
void DrawSuppl();
VOID ShowStats();
VOID OutputText( DWORD x, DWORD y, TCHAR* str );
protected:
CInstanceManager* m_iMan;
CEvent* m_event;
HINSTANCE m_instance;
HWND m_hWnd;
D3DEnum_DeviceInfo* m_pDeviceInfo;
LPDIRECTDRAW7 m_pDD;
LPDIRECT3D7 m_pD3D;
LPDIRECT3DDEVICE7 m_pD3DDevice;
LPDIRECTDRAWSURFACE7 m_pddsRenderTarget;
DDSURFACEDESC2 m_ddsdRenderTarget;
LPDIRECTDRAWSURFACE7 m_pddsDepthBuffer;
HANDLE m_thread;
DWORD m_threadId;
char m_CDpath[100];
CD3DFramework7* m_pFramework;
BOOL m_bActive;
BOOL m_bActivateApp;
BOOL m_bReady;
BOOL m_bJoystick;
DWORD m_vidMemTotal;
TCHAR* m_strWindowTitle;
BOOL m_bAppUseZBuffer;
BOOL m_bAppUseStereo;
BOOL m_bShowStats;
BOOL m_bDebugMode;
BOOL m_bAudioState;
BOOL m_bAudioTrack;
BOOL m_bNiceMouse;
BOOL m_bSetupMode;
HRESULT (*m_fnConfirmDevice)(DDCAPS*, D3DDEVICEDESC7*);
public:
CD3DEngine* m_pD3DEngine;
CRobotMain* m_pRobotMain;
CSound* m_pSound;
int m_keyState;
D3DVECTOR m_axeKey;
D3DVECTOR m_axeJoy;
BOOL m_bJoyButton[32];
FPOINT m_mousePos;
DWORD m_mshMouseWheel;
float m_aTime;
DWORD m_key[50][2];
};
#endif // _D3DAPP_H