-
Notifications
You must be signed in to change notification settings - Fork 1
/
Chopper.cpp
50 lines (36 loc) · 1.21 KB
/
Chopper.cpp
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
#include "Chopper.h"
void Chopper::getStatus() {
if(getState() == "Course")
cout << " Heading on course " << static_cast<unsigned int>(450 - getCourse()) % 360 << " deg, " << "speed " << getSpeed() << " km/h" << endl;
else if(getState() == "Position")
cout << " Moving to (" << getHeadingTo() << "), speed " << getSpeed() << " km/h" << endl;
else
cout << " " + getState() << endl;
}
bool Chopper::attack(Vehicle::vehiclePtr &truck) {
bool copsAround = dynamic_pointer_cast<Truck>(truck)->checkCops(); // checks if cops around the truck
bool robbed = false;
double dist = Point::getDistance(*getLoc(),*truck->getLoc());
if( dist <= _attackRange && !copsAround) // checks if chopper in attack range
{
dynamic_pointer_cast<Truck>(truck)->robbed();
_attackRange < 20 ? _attackRange++ : _attackRange;
robbed = true;
}
setState("Stopped");
return robbed;
}
void Chopper::update(){
if(getState() == "Stopped")
return;
if(getState() == "Position") {
if(move(headingToPoint()))
setState("Stopped");
return;
}
drive(1);
}
void Chopper::setCourse(double course) {
Vehicle::setCourse(course);
setState("Course");
}