-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRaceCar.cpp
More file actions
91 lines (82 loc) · 2.1 KB
/
RaceCar.cpp
File metadata and controls
91 lines (82 loc) · 2.1 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
#include "RaceCar.h"
RaceCar::RaceCar(std::string aName , glm::vec3 aPosition ) : GameObject(aName, aPosition)
{
//ctor
lapTimes = new std::vector<float>();
lastCheckpoint = 0;
startFinish = 0;
}
RaceCar::~RaceCar()
{
//dtor
}
void RaceCar::raiseSpeed(float speedRaise){
assert(speedRaise > 0);
if(speed + speedRaise >= maxSpeed){
speed = maxSpeed;
}
else{
speed += speedRaise;
}
}
float RaceCar::getSpeed(){
return speed;
}
void RaceCar::brakeReverse(float brakePower){
assert(brakePower > 0);
if(speed - brakePower <= maxReverse){
speed = maxReverse;
}
else{
speed -= brakePower;
}
}
//sideeffect steeringangle gets reset to 0
float RaceCar::getSteeringAngle(){
//float temp = steeringAngle;
//steeringAngle = 0;
//return temp;
return steeringAngle;
}
void RaceCar::steerLeft(float angle){
assert(angle > 0);
//left is positive right is negative
if(steeringAngle + angle > maxSteeringAngle){
steeringAngle = maxSteeringAngle;
}
else {
steeringAngle += angle;
}
}
void RaceCar::steerRight(float angle){
assert(angle > 0);
//left is positive right is negative
if(steeringAngle - angle < -1* maxSteeringAngle){
steeringAngle = -1 * maxSteeringAngle;
}
else {
steeringAngle -= angle;
}
}
void RaceCar::onCollision(GameObject * aGameObject){
GameObject::onCollision(aGameObject);
//TODO check if colliding object is a checkpoint
//if(aGameObject == lastCheckpoint ){
// //do nothing
//}
//else{
//lastCheckpoint = aGameObject;
//float time = Time::now();
//if(startFinish == 0){
// startFinish = aGameObject;
// start_time = time;
//}
//else if(lastCheckpoint == startFinish){
//float lap_time = time - start_time;
//std::cout << "Laptime: " << lap_time << std::endl;
// laptimes->push_back(lap_time);
// start_time = time;
//}
//std::cout << "Passed checkpoint on " << time << std::endl;
//}
}