-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
99 lines (80 loc) · 1.93 KB
/
main.cpp
File metadata and controls
99 lines (80 loc) · 1.93 KB
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
#include <GL/glut.h>
#include "GameScene.h"
const int INIT_WINDOW_WIDTH = 1024;
const int INIT_WINDOW_HEIGHT = 768;
const int SCENE_WIDTH = 1200;
const int SCENE_HEIGHT = 900;
const char TITLE[] = "NoGo";
void ChangeXY(int x, int y, int& resx, int& resy);
void Display();
void Idle();
void Reshape(int new_w, int new_h);
void Timer(int id);
void OnKeyBoard(unsigned char key, int x, int y);
void OnMouseClick(int button, int state, int x, int y);
void OnSpecialKey(int key, int x, int y);
GameScene* pGameScene;
int win_w, win_h;
void Display()
{
pGameScene->Display();
}
void Idle()
{
pGameScene->Idle();
}
void Reshape(int new_w, int new_h)
{
win_w = new_w;
win_h = new_h;
glViewport(0, 0, win_w, win_h);
//glutReshapeWindow(win_w, win_h);
}
void Timer(int id)
{
}
void OnKeyBoard(unsigned char key, int x, int y)
{
}
void OnSpecialKey(int key, int x, int y)
{
}
void OnMouseMove(int x, int y)
{
int tx, ty;
ChangeXY(x, y, tx, ty);
pGameScene->OnMouseMove(ty, tx);
}
void OnMouseClick(int button, int state, int x, int y)
{
int tx, ty;
ChangeXY(x, y, tx, ty);
pGameScene->OnMouseClick(button, state, ty, tx);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
int cx = GetSystemMetrics(SM_CXFULLSCREEN), cy = GetSystemMetrics(SM_CYFULLSCREEN);
win_w = INIT_WINDOW_WIDTH;
win_h = INIT_WINDOW_HEIGHT;
glutInitWindowPosition((cx - win_w) / 2, (cy - win_h) / 2);
glutInitWindowSize(win_w, win_h);
glutCreateWindow(TITLE);
pGameScene = new GameScene(SCENE_WIDTH, SCENE_HEIGHT);
pGameScene->Init();
glutDisplayFunc(&Display);
glutIdleFunc(&Idle);
glutReshapeFunc(&Reshape);
glutKeyboardFunc(&OnKeyBoard);
glutSpecialFunc(&OnSpecialKey);
glutMouseFunc(&OnMouseClick);
glutPassiveMotionFunc(&OnMouseMove);
glutMainLoop();
return 0;
}
void ChangeXY(int x, int y, int& resx, int& resy)
{
resy = (int)(1.0 * x * SCENE_WIDTH / win_w);
resx = (int)(1.0 * y * SCENE_HEIGHT / win_h);
}