1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
// * 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/.
// d3dapp.h
#ifndef _D3DAPP_H
#define _D3DAPP_H
#define D3D_OVERLOADS
#include <d3d.h>
#include "d3dengine.h"
#include "d3dframe.h"
#include "d3denum.h"
#include "d3dutil.h"
#include "d3dres.h"
#include "misc.h"
#include "struct.h"
class CInstanceManager;
class CEvent;
class CRobotMain;
class CSound;
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
|