-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgame.cpp.back
More file actions
207 lines (184 loc) · 9.08 KB
/
Copy pathgame.cpp.back
File metadata and controls
207 lines (184 loc) · 9.08 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
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
#include "game.h"
Game::Game()
{
srand(time(NULL));
velocityX = velocityY = 0.0f;
moveX = moveY = 0;
aiming = 0;
depth = .15f;
zoom = 0;
maxZoom = .55f;
minZoom = .15f;
togPortal =0;
nbullets = 10;
maxbullets = 10;
partyMode = 0;
nkills=0;
position = Vec(0,2,0);
direction = Vec(0.0,0.0,0.0);
for(int i = 0; i < 10; i++)
mobs.push_back(new Mob(i, new Vec(r(50, -50), 0, r(50, -50))));
float wHeight = 50.0;
// Yeah, I'll find a different way of doing this.
walls.push_back(Wall(Vec(-5,0,-10),Vec(-5,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-5,0,5),Vec(10,0,5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(10,0,-5),Vec(10,0,5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-5,0,-10),Vec(55,0,-10),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(45,0,-40),Vec(45,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(65,0,-50),Vec(45,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(65,0,-20),Vec(65,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(45,0,-20),Vec(55,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(55,0,-10),Vec(55,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(10,0,-5),Vec(25,0,-5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(30,0,-5),Vec(60,0,-5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(60,0,-20),Vec(60,0,-5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(65,0,-20),Vec(60,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(45,0,-50),Vec(45,0,-45),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-25,0,-75),Vec(10,0,-75),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(10,0,-55),Vec(10,0,-75),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(10,0,-50),Vec(10,0,-35),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(10,0,-35),Vec(-10,0,-35),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-15,0,-35),Vec(-30,0,-35),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-25,0,-75),Vec(-25,0,-40),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(25,0,-5),Vec(25,0,15),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(30,0,-5),Vec(30,0,5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(45,0,-45),Vec(30,0,-45),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(10,0,-55),Vec(30,0,-55),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(25,0,-40),Vec(45,0,-40),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(10,0,-50),Vec(25,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(25,0,-40),Vec(25,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(30,0,-45),Vec(30,0,-55),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-10,0,-35),Vec(-10,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-5,0,0),Vec(-10,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-15,0,-35),Vec(-15,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-105,0,-55),Vec(-25,0,-55),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-105,0,-15),Vec(-70,0,-15),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-45,0,-45),Vec(-45,0,-15),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-45,0,-15),Vec(-60,0,-15),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-105,0,-55),Vec(-105,0,-15),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-30,0,-35),Vec(-30,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-45,0,-55),Vec(-45,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-45,0,-45),Vec(-40,0,-45),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-40,0,-50),Vec(-30,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-40,0,-45),Vec(-40,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-15,0,0),Vec(-45,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-45,0,-15),Vec(-45,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-70,0,-15),Vec(-70,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-55,0,0),Vec(-70,0,0),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-50,0,-10),Vec(-50,0,20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-60,0,-15),Vec(-60,0,-5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-75,0,40),Vec(-45,0,40),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-75,0,40),Vec(-75,0,70),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-75,0,70),Vec(-25,0,70),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-20,0,70),Vec(50,0,70),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-40,0,40),Vec(0,0,40),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(0,0,45),Vec(0,0,70),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-10,0,5),Vec(-10,0,40),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(0,0,45),Vec(5,0,45),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-5,0,35),Vec(5,0,35),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-5,0,5),Vec(-5,0,35),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-50,0,20),Vec(-40,0,20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-40,0,40),Vec(-40,0,20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-45,0,40),Vec(-45,0,30),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-55,0,30),Vec(-45,0,30),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-55,0,0),Vec(-55,0,30),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(5,0,15),Vec(50,0,15),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(5,0,60),Vec(5,0,15),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(50,0,60),Vec(5,0,60),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-25,0,75),Vec(55,0,75),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-25,0,70),Vec(-25,0,75),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(50,0,60),Vec(50,0,70),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(55,0,75),Vec(55,0,5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(30,0,5),Vec(55,0,5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-50,0,5),Vec(-10,0,5),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(25,0,25),Vec(15,0,35),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(45,0,25),Vec(15,0,55),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(15,0,25),Vec(15,0,35),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(25,0,25),Vec(15,0,25),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-60,0,-50),Vec(-60,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-60,0,-20),Vec(-90,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-95,0,-50),Vec(-95,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-95,0,-50),Vec(-65,0,-50),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-65,0,-50),Vec(-65,0,-25),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-70,0,-45),Vec(-70,0,-20),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-90,0,-20),Vec(-90,0,-45),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-85,0,-50),Vec(-85,0,-25),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-55,0,45),Vec(-30,0,45),0.1, wHeight,RCOLOR));
walls.push_back(Wall(Vec(-10,0,40),Vec(-10,0,55),0.1, wHeight,RCOLOR));
for (unsigned int i = 0; i < walls.size(); i++) {
walls[i].game = this;
}
//level1.load("Level1.obj");
floor.load("floor.obj");
}
void Game::Move()
{
if (zoom == 1 && depth < maxZoom) {
depth += (maxZoom - minZoom) / 15;
}else if (zoom == 0 && depth > minZoom) {
depth -= (maxZoom - minZoom) / 15;
}
if (moveY == 0 || moveX == 0) {
// moving orthogonally
velocityX = (float) moveX;
velocityY = (float) moveY;
} else {
// moving diagonally
velocityX = (float) moveX / 1.414;
velocityY = (float) moveY / 1.414;
}
// slow down when aiming
float speed = 0.2f - (float) aiming * 0.1f;
position.z -= (velocityX * cos(direction.x)
+ velocityY * -sin(direction.x)) * speed;
position.x -= (velocityY * cos(direction.x)
+ velocityX * sin(direction.x)) * speed;
for (unsigned int i = 0; i < mobs.size(); i++) {
mobs[i]->Collide(&position);
//for(unsigned int j = 0; j < mobs.size(); j++){
// mobs[j]->Collide(mobs[i]->getLoc());
//}
mobs[i]->move(this);
}
for (unsigned int i = 0; i < walls.size(); i++) {
walls[i].Collide(&position);
}
for (unsigned int i = 0; i < bullets.size(); i++) {
if (bullets[i].age-- < 1) {
bullets[i] = bullets.back();
bullets.pop_back();
i--;
}
}
if (togPortal == 1){
defaultPortl.reLocateOBJ(position.x,
position.y,
position.z,
position.x,
position.y,
position.z);
}
/*
if (level1.isTouching(position.x, position.y, position.z,1, tmpPos)){
position.x = tmpPos[0];
position.z = tmpPos[2];
} else{
tmpPos[0] = position.x;
tmpPos[2] = position.z;
}
*/
}
void Game::Shoot()
{
float rotx = direction.x;
float roty = direction.y - PI / 2.0;
float trailLen = 5.0;
Vec end(position.x+sin(rotx) * sin(roty) * trailLen,
position.y+cos(roty) * trailLen,
position.z+cos(rotx) * sin(roty) * trailLen);
Bullet b;
b.start = position - Vec(0,.25,0);
b.end = end;
b.age = 10;
bullets.push_back(b);
}