Author: machiel.sleeuwaert
(2008/11/10 20:07) Over 3 years ago
171
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
172
>
173
<File
174
RelativePath=".\Game.cpp"
RelativePath=".\Camera.cpp"
175
176
</File>
177
178
RelativePath=".\Game.h"
RelativePath=".\Camera.h"
179
180
181
</Filter>
182
<Filter
183
Name="Header Files"
184
Filter="h;hpp;hxx;hm;inl;inc;xsd"
185
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
186
187
188
RelativePath=".\AbstractGame.cpp"
189
190
191
192
RelativePath=".\AbstractGame.h"
193
194
195
196
RelativePath=".\DirectInput.cpp"
RelativePath=".\Game2.cpp"
197
198
199
200
RelativePath=".\DirectInput.h"
RelativePath=".\Game2.h"
201
202
203
204
RelativePath=".\IncAndDef.h"
Name="windows"
205
206
207
RelativePath=".\WinMain.cpp"
208
RelativePath=".\util.h"
209
210
211
RelativePath=".\WinMain.h"
212
213
214
215
216
Name="DirectInput"
217
218
219
RelativePath=".\XineEngine.cpp"
220
221
222
223
224
225
226
227
228
Name="Engine"
229
230
231
RelativePath=".\XineEngine.h"
232
233
234
235
236
237
238
239
240
Name="AbstractGame"
241
242
243
244
245
246
247
248
249
250
251
252
Name="various headers"
253
254
255
256
257
258
259
260
261
262
1
#pragma once
2
3
#include "XineEngine.h"
4
#include "DirectInput.h"
5
class AbstractGame
6
{
7
public:
19
DirectInput::DirectInput():
20
KeyboardCoopFlags(DISCL_NONEXCLUSIVE|DISCL_FOREGROUND),
21
MouseCoopFlags(DISCL_NONEXCLUSIVE|DISCL_FOREGROUND),
22
m_pDIinterface(0),m_pKeyboard(0),m_pMouse(0),AbsMousePos(0,0,0)
m_pDIinterface(0),m_pKeyboard(0),m_pMouse(0),AbsMousePos(0,0,0),RelMousePos(0,0,0),m_Sensivity(0.002f)
23
24
ZeroMemory(m_KeyboardState, sizeof(m_KeyboardState));
InitAbsMouse();
25
ZeroMemory(&m_MouseState, sizeof(m_MouseState));
26
27
HR(DirectInput8Create(XE->m_hInstance, DIRECTINPUT_VERSION,
28
IID_IDirectInput8, (void**)&m_pDIinterface, 0));
29
HR(DirectInput8Create(XE->m_hInstance, DIRECTINPUT_VERSION,IID_IDirectInput8, (void**)&m_pDIinterface, 0));
30
HR(m_pDIinterface->CreateDevice(GUID_SysKeyboard, &m_pKeyboard, 0));
31
HR(m_pKeyboard->SetDataFormat(&c_dfDIKeyboard));
32
HR(m_pKeyboard->SetCooperativeLevel(XE->m_hwnd, KeyboardCoopFlags));
...
38
HR(m_pMouse->Acquire());
37
39
}
40
void DirectInput::InitAbsMouse(){
41
POINT P;
42
P.y=0;
43
P.x=0;
44
ClientToScreen(XE->m_hwnd,&P);
45
SetCursorPos(P.x,P.y);
46
AbsMousePos = MOUSE(0,0,0);
47
48
// POINT P;
49
// bool m = ScreenToClient(XE->m_hwnd,&P);
50
// AbsMousePos = MOUSE(P.x,P.y,0);
51
52
DirectInput::~DirectInput()
53
54
m_pDIinterface->Release();
55
66
56
if( FAILED(m_pKeyboard->GetDeviceState(sizeof(m_KeyboardState), (void**)&m_KeyboardState)) )
67
57
68
58
// Keyboard lost, zero out keyboard data structure.
59
60
69
61
// Try to acquire for next time we poll.
70
62
m_pKeyboard->Acquire();
71
63
72
return;
64
73
65
74
75
76
if( FAILED(m_pMouse->GetDeviceState(sizeof(DIMOUSESTATE2), (void**)&m_MouseState)) )
77
78
// Mouse lost, zero out mouse data structure.
79
80
m_pMouse->Acquire();
81
82
83
84
RelMousePos.x = m_MouseState.lX;
RelMousePos.y = m_MouseState.lY;
RelMousePos.z = m_MouseState.lZ;
85
AbsMousePos+=RelMousePos;
86
if(m_MouseState.lZ != 0)
87
88
RelMousePos.z = (float)m_MouseState.lZ;
89
90
if (RelMousePos.z>0)
91
AbsMousePos.z = 1;
92
else
93
AbsMousePos.z = -1;
94
95
96
97
98
RelMousePos.x = (float)m_MouseState.lX*m_Sensivity;
99
RelMousePos.y = (float)m_MouseState.lY*m_Sensivity;
100
101
AbsMousePos.x+=(int)m_MouseState.lX;
102
AbsMousePos.y+=(int)m_MouseState.lY;
103
104
// if(AbsMousePos.x<0)
105
// AbsMousePos.x=0;
106
// if(AbsMousePos.x>XE->m_ClientRect.right)
107
// AbsMousePos.x=XE->m_ClientRect.right;
108
109
110
AbsMousePos.z = 0;
111
112
113
114
115
116
126
127
128
D3DXVECTOR3 DirectInput::GetAbsMousePos()
129
MOUSE DirectInput::GetAbsMousePos()
130
return AbsMousePos;
131
132
void Tick();
bool KeyDown(unsigned char key);
bool MouseButtonDown(int button);
D3DXVECTOR3 GetAbsMousePos();
MOUSE GetAbsMousePos();
D3DXVECTOR3 GetRelMousePos();
void InitAbsMouse();
IDirectInputDevice8* m_pMouse;
DIMOUSESTATE2 m_MouseState;
D3DXVECTOR3 AbsMousePos;
MOUSE AbsMousePos;
D3DXVECTOR3 RelMousePos;
float m_Sensivity;
private:
// -------------------------
// Disabling default copy constructor and default assignment operator.
// If you get a linker error from one of these functions, your class is internally trying to use them. This is
#include "Game.h"
Game::Game():m_pFont(0)
Game::Game():m_pFont(0),color(0)
//make font description
33
void Game::DrawScene(RECT rect)
34
35
//drawtext
tstringstream temp;
36
m_pFont->DrawText(0,_T("Xine Engine"),-1,&rect,DT_CENTER | DT_VCENTER,D3DCOLOR_XRGB(255,0,0));
temp << DI->GetAbsMousePos().x << " " << DI->GetAbsMousePos().y;
if (DI->GetAbsMousePos().z > 0)
color+=20;
else if (DI->GetAbsMousePos().z < 0)
color-=20;
m_pFont->DrawText(0,temp.str().c_str(),-1,&rect,DT_CENTER | DT_VCENTER,D3DCOLOR_XRGB(255,color,0));
10
void DrawScene(RECT rect);
11
12
ID3DXFont* m_pFont;
13
14
int color;
};
15
#define HEIGHT 600
#define WIDTH 800
#define XE XineEngine::GetSingleton()
#define DI DirectInput::GetSingleton()
struct MOUSE {
MOUSE( int x, int y, int z ):x(x),y(y),z(z)
{}
int x;
int y;
int z;
#include "Game2.h"
XineEngine* XineEngine::SINGLETONPOINTER = 0;
m_numframes(0),m_TimeElapsed(0.0f),
m_FPS(0),m_hInstance(0)
m_ClientRect.left = 0;
m_ClientRect.top = 0;
16
m_ClientRect.right = m_Width;
17
m_ClientRect.bottom = m_Height;
18
XineEngine::~XineEngine()
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
float secondsincount = 1.0f/(float)freq;
QueryPerformanceCounter((LARGE_INTEGER*)&PrevCount);
// Default to a window with a client area rectangle of m_iWidth x m_iHeight
RECT R = {0, 0, m_Width, m_Height};
AdjustWindowRect(&m_ClientRect, WS_OVERLAPPEDWINDOW, false); //make the right size (for backbuffer)
AdjustWindowRect(&R, WS_OVERLAPPEDWINDOW, false); //make the right size (for backbuffer)
// Create the window
if(!(m_hwnd = CreateWindow(GAMENAME,GAMENAME,WS_OVERLAPPEDWINDOW,(GetSystemMetrics(SM_CXSCREEN) - m_Width)/2,(GetSystemMetrics(SM_CYSCREEN) - m_Height)/2,R.right,R.bottom, NULL, NULL,hInstance, NULL)))
if(!(m_hwnd = CreateWindow(GAMENAME,GAMENAME,WS_OVERLAPPEDWINDOW,(GetSystemMetrics(SM_CXSCREEN) - m_Width)/2,(GetSystemMetrics(SM_CYSCREEN) - m_Height)/2,m_Width,m_Height, NULL, NULL,hInstance, NULL)))
return 0;
InitializeDirect3D();
//m_3D9Device->SetCursorProperties(GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN),)
m_pGame = new Game2();
m_pGame = new Game();
void XineEngine::Resize(RECT R)
273
case SIZE_MAXIMIZED:
274
SetPaused(false);
275
GetClientRect(m_hwnd,&clientrect);
276
Resize(clientrect);
277
break;
278
case SIZE_MAXSHOW:
279
280
287
PostQuitMessage(0);
288
289
290
291
// case WM_MOUSEMOVE:
292
//
293
// P.x = LOWORD(lParam);
294
// P.y = HIWORD(lParam);
295
// P.y=0;
296
// P.x=0;
297
// ClientToScreen(m_hwnd,&P);
298
// SetCursorPos(P.x,P.y);
299
// break;
default:
300
return DefWindowProc(m_hwnd, msg, wParam, lParam);
301
302
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"RelativePath=".\Game.cpp"RelativePath=".\Camera.cpp"RelativePath=".\Game.h"RelativePath=".\Camera.h"</Filter><FilterName="Header Files"Filter="h;hpp;hxx;hm;inl;inc;xsd"UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">RelativePath=".\AbstractGame.cpp"RelativePath=".\AbstractGame.h"RelativePath=".\DirectInput.cpp"RelativePath=".\Game2.cpp"RelativePath=".\DirectInput.h"RelativePath=".\Game2.h"<File</Filter>RelativePath=".\IncAndDef.h"<FilterName="Header Files"Filter="h;hpp;hxx;hm;inl;inc;xsd"UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"><FilterName="windows"</File><File<FileRelativePath=".\WinMain.cpp"RelativePath=".\util.h"></File><FileRelativePath=".\WinMain.h"></File></Filter><FilterName="DirectInput"</File><File<FileRelativePath=".\DirectInput.cpp"RelativePath=".\XineEngine.cpp"></File><FileRelativePath=".\DirectInput.h"></File></Filter><FilterName="Engine"</File><File<FileRelativePath=".\XineEngine.cpp"RelativePath=".\XineEngine.h"></File><FileRelativePath=".\XineEngine.h"></File></Filter><FilterName="AbstractGame"</File><FileRelativePath=".\AbstractGame.cpp"></File><FileRelativePath=".\AbstractGame.h"></File></Filter>Name="windows"Name="various headers"RelativePath=".\WinMain.cpp"RelativePath=".\IncAndDef.h"RelativePath=".\WinMain.h"RelativePath=".\util.h"#include "DirectInput.h"{{m_pDIinterface(0),m_pKeyboard(0),m_pMouse(0),AbsMousePos(0,0,0),RelMousePos(0,0,0),m_Sensivity(0.002f){{ZeroMemory(m_KeyboardState, sizeof(m_KeyboardState));InitAbsMouse();ZeroMemory(&m_MouseState, sizeof(m_MouseState));HR(DirectInput8Create(XE->m_hInstance, DIRECTINPUT_VERSION,IID_IDirectInput8, (void**)&m_pDIinterface, 0));void DirectInput::InitAbsMouse(){{{{{// Keyboard lost, zero out keyboard data structure.ZeroMemory(m_KeyboardState, sizeof(m_KeyboardState));return;{{// Mouse lost, zero out mouse data structure.ZeroMemory(&m_MouseState, sizeof(m_MouseState));m_pMouse->Acquire();return;RelMousePos.x = m_MouseState.lX;RelMousePos.y = m_MouseState.lY;RelMousePos.z = m_MouseState.lZ;AbsMousePos+=RelMousePos;if(m_MouseState.lZ != 0){RelMousePos.z = (float)m_MouseState.lZ;if (RelMousePos.z>0)AbsMousePos.z = 1;elseAbsMousePos.z = -1;return;}RelMousePos.x = (float)m_MouseState.lX*m_Sensivity;RelMousePos.y = (float)m_MouseState.lY*m_Sensivity;AbsMousePos.x+=(int)m_MouseState.lX;AbsMousePos.y+=(int)m_MouseState.lY;// if(AbsMousePos.x<0)// AbsMousePos.x=0;// if(AbsMousePos.x>XE->m_ClientRect.right)// AbsMousePos.x=XE->m_ClientRect.right;AbsMousePos.z = 0;D3DXVECTOR3 DirectInput::GetAbsMousePos()MOUSE DirectInput::GetAbsMousePos(){{D3DXVECTOR3 GetAbsMousePos();MOUSE GetAbsMousePos();D3DXVECTOR3 AbsMousePos;MOUSE AbsMousePos;private:Game::Game():m_pFont(0),color(0){{{{//drawtexttstringstream temp;m_pFont->DrawText(0,_T("Xine Engine"),-1,&rect,DT_CENTER | DT_VCENTER,D3DCOLOR_XRGB(255,0,0));temp << DI->GetAbsMousePos().x << " " << DI->GetAbsMousePos().y;if (DI->GetAbsMousePos().z > 0)color+=20;else if (DI->GetAbsMousePos().z < 0)color-=20;m_pFont->DrawText(0,temp.str().c_str(),-1,&rect,DT_CENTER | DT_VCENTER,D3DCOLOR_XRGB(255,color,0));struct MOUSE {MOUSE( int x, int y, int z ):x(x),y(y),z(z){}int x;int y;int z;};#include "Game2.h"{{m_ClientRect.left = 0;m_ClientRect.top = 0;m_ClientRect.right = m_Width;m_ClientRect.bottom = m_Height;// Default to a window with a client area rectangle of m_iWidth x m_iHeightRECT R = {0, 0, m_Width, m_Height};AdjustWindowRect(&m_ClientRect, WS_OVERLAPPEDWINDOW, false); //make the right size (for backbuffer)AdjustWindowRect(&R, WS_OVERLAPPEDWINDOW, false); //make the right size (for backbuffer)if(!(m_hwnd = CreateWindow(GAMENAME,GAMENAME,WS_OVERLAPPEDWINDOW,(GetSystemMetrics(SM_CXSCREEN) - m_Width)/2,(GetSystemMetrics(SM_CYSCREEN) - m_Height)/2,R.right,R.bottom, NULL, NULL,hInstance, NULL)))if(!(m_hwnd = CreateWindow(GAMENAME,GAMENAME,WS_OVERLAPPEDWINDOW,(GetSystemMetrics(SM_CXSCREEN) - m_Width)/2,(GetSystemMetrics(SM_CYSCREEN) - m_Height)/2,m_Width,m_Height, NULL, NULL,hInstance, NULL)))m_pGame = new Game2();m_pGame = new Game();Resize(clientrect);